Speichermanagement

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Hallo Community,

folgendes Thema. Ich muss Feldinhalte über mehrere Sessions und Serverinstanzen hinweg Benutzerspezifisch übergeben.

Hintergrund ist der Druck von Fertigungspapieren wo Inhalte gedruckt werden sollen die allerdings erst beim Speichern vom FAUF ermittelt werden und somit noch nicht durch den auf der DB gespeichert sind. Sprich, der Verbucher ist noch nicht fertig, der erste Druck läuft aber schon los. Es handelt sich hier um Z-Felder die leider nicht über die Druckschnittstelle ins Druckprogramm kommen.

Idee war zuerst mit Memory IDs zu arbeiten. Der Druck läuft allerdings in einer 2. Session und da bekomm ich die ID leider nicht eingelesen.
Shared Memory habe ich auch schon probiert. Scheint aber leider auch Serverspezifisch zu sein oder ich habe da irgendwas komplett falsch umgesetzt.

Memory Schreiben beim Speichern:
EXPORT zzwatermark = <fs_caufv>-zzwatermark TO SHARED MEMORY indx(zs) ID 'WATERMARK'.

Memory lesen im Druckprogramm:
import zzwatermark = es_caufvd_tab-zzwatermark from SHARED MEMORY indx(zs) ID 'WATERMARK'.

Wie gesagt müsste imho funktionieren. Es gibt aber immer wieder Ausfälle wenn die neue Session auf unserem 2. oder 3. Server erstellt wird.

Habt Ihr Ideen dazu oder habe ich das Speicherkonzept falsch verstanden?

Grüße
Jens

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
dann probiere EXPORT TO DATABASE

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Prego


Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Vielen Dank für die schnelle Antwort.
ewx hat geschrieben:
04.03.2024 09:42
dann probiere EXPORT TO DATABASE
Ich muss jetzt aber nochmal nachfragen. Im Druckprogramm einlesen mit Import from Database kann ich dann aber nur wenn der Commit für den Export schon durch ist? Das ist ja leider nicht immer der Fall.

Grüße
Jens

Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
Dafür müsstest du mal erklären, wann was weggeschrieben wird und welchen Commit du meinst.

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Auszug aus der Hilfe
Wirkung
Bei der Angabe von DATABASE wird der Daten-Cluster unter der Kennung id in der Datenbanktabelle dbtab abgelegt und beim nächsten Datenbank-Commit festgeschrieben.
Ich gehe davon aus das der Export erst final durchgeführt wird wenn ich oder das System einen Commit absetzt. Ich selbst kann in dem Fall keinen Absetzen da das Ganze im CO_BT_ORDER_POST statt findet.

Grüße
Jens

Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
Bevor der Fertigungsauftrag nicht gespeichert wurde, wird auch nichts gedruckt.

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
ewx hat geschrieben:
04.03.2024 11:09
Bevor der Fertigungsauftrag nicht gespeichert wurde, wird auch nichts gedruckt.
Nein das ist leider nicht so. Intern wird der Verbucher getriggert und parallel der Druck angestoßen. Die Daten die gespeichert werden sollen sind definitiv beim ersten von mehreren Fertigungspapieren noch nicht auf der DB gespeichert. beim 2. Druck dann schon. Mein Debugger vom Druckprogramm startet auch vor Verbuchungsdebugging.

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
ewx hat geschrieben:
04.03.2024 11:09
Bevor der Fertigungsauftrag nicht gespeichert wurde, wird auch nichts gedruckt.
Nein das ist leider nicht so. Intern wird der Verbucher getriggert und parallel der Druck angestoßen. Die Daten die gespeichert werden sollen sind definitiv beim ersten von mehreren Fertigungspapieren noch nicht auf der DB gespeichert. beim 2. Druck dann schon. Mein Debugger vom Druckprogramm startet auch vor Verbuchungsdebugging.

Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
Dann ist etwas nicht korrekt eingestellt oder am Standard vorbei programmiert. Es gibt keine SAP-Applikation, in der gedruckt wird, bevor nicht die geänderten Daten auf der DB sind!

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Mmh, ich wüsste nicht was man da noch einstellen könnte. Drucksteuerung steht auf Verbucher. Ist ja allerdings nur ein Vorschlagswert und kann durch die Anwender in der Transaktion geändert werden. Druckprogramm und Formular ist hinterlegt und wird vom Standard aus aufgerufen. Da haben wir nichts gedreht.

Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
oh. das scheint dann im PP evtl. anders zu funktionieren. dann müsste es aber mit EXPORT TO MEMORY funktionieren.

Re: Speichermanagement

Beitrag von rob_abc (ForumUser / 59 / 12 / 18 ) »
https://help.sap.com/doc/abapdocu_750_i ... _up_to.htm

Kannst ja ne while schleife machen und max. 5 Sekunden warten. Wenn bis dahin immer noch keine Daten auf der DB sind, gehst halt ohne weiter. Das Warten fällt den Anwendern im Zusammenhang mit Drucken meist eh nicht auf.

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
😕 unschön. Wären ABAP Channels für den Austausch der Daten geeignet? Lt. Doku funktionieren diese zumindest Applikationsserverübergreifend was bei den Memory Geschichten leider nicht der Fall ist.

Re: Speichermanagement

Beitrag von ewx (Top Expert / 4792 / 295 / 630 ) »
ABAP Channels ist nicht die geeignete Technik dafür.
Ich glaube noch nicht, dass der Druck auf einem anderen Appl-Server passiert.
Probiere das erst mal mit dem EXPORT TO MEMORY aus.
Wo wird denn bisher der EXPORT TO SHARED MEMORY gemacht? Ein BAdI? Customer-Function?

Re: Speichermanagement

Beitrag von Prego (Specialist / 101 / 19 / 1 ) »
Export to Memory ID ,
Export to Shared Memory und
Export to Shared Buffer haben wir in den vergangen 2 Monaten schon durch.

Der Export passiert in einem Enhancement im BAPI CO_BT_ORDER_POST.
Der Import soll im Druckprogramm passieren. Wenn der Debugger der Druckprogramms auf einem anderen Applikationsserver als der BAPI startet wird das schon so sein. Startet der Debugger auf dem gleichen Server funktioniert alles wunderbar. Ist halt nur leider sehr fragil das Ganze. Aktuell scheint das WAIT UP TO noch das praktikabelste zu sein um das irgendwie abzufangen. Probieren wir mal aus, auch wenn sich alles in mir dagegen sträubt.


Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.