Ansicht
Dokumentation

DB_COMMIT - Commit Work über EXEC SQL - Roll-out findet nicht statt

DB_COMMIT - Commit Work über EXEC SQL - Roll-out findet nicht statt

CL_GUI_FRONTEND_SERVICES - Frontend Services   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Es wird ein Datenbank-Commit auf der aktuell gültigen Datenbankverbindung per Native SQL durchgeführt. Im Normalfall ist dies die Standardverbindung (auch Default-Verbindung genannt) zur zentralen Datenbank des AS ABAP Systems. Es ist jedoch zu beachten, dass die aktuell für Native SQL Anweisungen gültige Datenbankverbindung durch folgende EXEC SQL Anweisungen global gesetzt werden kann:

EXEC SQL.
CONNECT TO con
ENDEXEC.

EXEC SQL.
SET CONNECTION con
ENDEXEC.

Wenn also vor dem Aufruf der Funktion DB_COMMIT die aktuell gültige Native SQL Datenbankverbindung mittels dieser Kommandos auf eine sekundäre Datenbankverbindung gesetzt wurde, dann wird der Commit auf dieser Datenbankverbindung ausgeführt und nicht auf der Standardverbindung des AS ABAP. Dies kann u.U. zu unerwünschten Effekten in der Transaktionslogik führen, die inkonsistente Daten nach sich ziehen.

Durch Setzen des optionalen Parameters IV_DEFAULT = abap_true (Defaultwert ist abap_false) kann ein Datenbank-Commit auf der Standardverbindung erzwungen werden, unabhängig davon, wie die aktuelle Native SQL Verbindung gerade gesetzt ist.

Der Datenbank-Commit bewirkt, dass

1),,die laufende Datenbanktransaktion beendet und alle durchgeführten Datenbankänderungen festgeschrieben werden

2),,alle offenen Datenbank-Cursor, die nicht mit dem Zusatz WITH HOLD geöffnet wurden, implizit geschlossen werden

3),,alle in der laufenden Transaktion angeforderten Datenbanksperren freigegeben werden.

Im Gegensatz Zur Anweisung COMMIT WORK in Open SQL schließt der Aufruf von DB_COMMIT die aktuelle SAP LUW nicht ab, d.h. die an das Ende eine SAP LUW gekoppelten Ereignisse (siehe Dokumentation zu COMMIT WORK) werden nicht ausgelöst.

Nach erfolgreicher Durchführung des Datenbank-Commit wird jedoch das Ereignis DB_TRANSACTION_FINISHED der Klasse CL_DBI_TRANSACTION_STATE ausgelöst, wobei der Parameter KIND auf den Wert CL_DBI_TRANSACTION_STATE=>GC_COMMIT gesetzt wird.





Parameter

IV_DEFAULT

Ausnahmen

Funktionsgruppe

SYDB

PERFORM Short Reference   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 2366 Date: 20240523 Time: 142021     sap01-206 ( 53 ms )