Ansicht
Dokumentation

ABENOS_PERSISTENCE_COMMIT - OS PERSISTENCE COMMIT

ABENOS_PERSISTENCE_COMMIT - OS PERSISTENCE COMMIT

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Persistente Objekte speichern

Um Änderungen an den Instanzen von persistenten Klassen auch auf den eigentlichen persistenten Objekten auf der Datenbank durchzuführen, muss die ABAP-Anweisung COMMIT WORKausgeführt werden. Wenn nicht explizit mit einer objektorientierten Transaktion des Transaktionsdienst gearbeitet wird, muss die Anweisung COMMIT WORK explizit angegeben werden, andernfalls ist sie im Transaktionsdienst gekapselt. Die explizite Angabe der Anweisung COMMIT WORK bedeutet im Rahmen des Transaktionsdiensts, dass die Top-Level-Transaktion im Kompatibilitätsmodus läuft.

Bei Verwendung in Verbindung mit den Object Services hat die klassische Anweisung COMMIT WORK eine erweiterte Funktionalität. Bevor sie die SAP-LUW abschließt und eine Verbuchung anstößt, werden intern Methoden des Persistenzdiensts aufgerufen, welche die Änderungen an den vom Persistenzdienst verwalteten Objekten sammeln und sie über CALL FUNCTION ... IN UPDATE TASK an einen speziellen Verbuchungsfunktionsbaustein übergeben. Der Persistenzdienst arbeitet also letztendlich mit den Mitteln der klassischen Verbuchung. Der Verbuchungsfunktionsbaustein wird in der Regel nach eventuell bereits registrierten Verbuchungsfunktionsbausteinen registriert. Dann wird die Verbuchung angestoßen und die Verbuchungsbausteine werden vom Verbucher in der Reihenfolge ihrer Registrierung ausgeführt.

Nach der Anweisung COMMIT WORK sind die Attribute eines persistenten Objekts im ABAP-Programm initial (die Methode IF_OS_STATE~INVALIDATE wurde aufgerufen).

Falls die Änderungen an verwalteten Objekten direkt, also nicht durch den Verbucher ausgeführt werden sollen, muss der Verbuchungsmodus des implizit genutzten Transaktionsdienst verändert werden, indem vor der Anweisung COMMIT WORK folgende Anweisungen ausgeführt werden:

DATA TM type ref to IF_OS_TRANSACTION_MANAGER.
DATA T type ref to IF_OS_TRANSACTION.
...
TM = CL_OS_SYSTEM=>GET_TRANSACTION_MANAGER( ).
T  = TM->GET_CURRENT_TRANSACTION( ).
T->SET_MODE_UPDATE( OSCON_DMODE_DIRECT ).
COMMIT WORK.

Persistente Objekte können auch während der Verbuchung, also innerhalb von Verbuchungsbausteinen verwendet werden. Änderungen an persistenten Objekten in Verbuchungsbausteinen werden vom Verbucher als letzter Schritt nach Bearbeitung aller registrierter Verbuchungsbausteine auf der Datenbank ausgeführt.






ABAP Short Reference   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 2714 Date: 20240523 Time: 115752     sap01-206 ( 63 ms )