Transaktionale Konsistenzprüfung
Bei der Verarbeitung von bgRFC-Units (Sprachelement CALL FUNCTION <func> IN BACKGROUND UNIT) findet eine transaktionale Konsistenzprüfung statt, die verhindert, dass innerhalb der Unit-Ausführung in der Anwendung ABAP-Sprachelemente verwendet werden, die zum Commit führen.
Zu diesen Sprachelementen gehören unter anderem synchrone und asynchrone RFCs (CALL FUNCTION <func> DESTINATION), WAIT, COMMIT WORK, ROLLBACK WORK, HTTP-Kommunikation (mit Hilfe der Klasse CL_HTTP_CLIENT) sowie der Aufruf des Funktionsbausteins DB_COMMIT. Ein expliziter ROLLBACK WORK ist ebenbfalls nicht erlaubt. Allerdings kann mit der Anweisung MESSAGE ein Rollback durchgeführt werden.
Während der Aufruf der ABAP-Sprachelemente zum ABAP-Laufzeitfehler SYSTEM_ILLEGAL_STATEMENT führt, erzeugt die Ausführung eines impliziten Commits durch den Funktionsbaustein-Aufruf DB_COMMIT den ABAP-Laufzeitfehler DBIF_DSQL2_DEFAULT_CR_ERROR.
Der Grund für diese Prüfung liegt darin, dass nach einem Commit (z.B. initiiert durch einen RFC) alle zuvor durchgeführten Datenbankaktionen in der Unit (wie etwa INSERT, MODIFY, UPDATE und DELETE) auf der Datenbank persistiert werden. Wenn nun nach dieser Aktion die Anwendung die entsprechende Unit mit einem Fehler (wie etwa MESSAGE E, A oder X) terminiert, kann nicht die gesamte Unit (Logical Unit of Work) zurückgerollt werden.
Eine erneute Ausführung der Unit hätte somit Datenbankinkonsistenzen zur Folge.
Sie können dieses Laufzeitverhalten ändern, indem Sie entweder die transaktionale Konsistenzprüfung bei der Erzeugung von bgRFC-Units deaktivieren (mit Hilfe der Methode IF_BGRFC_UNIT~DISABLE_COMMIT_CHECKS) oder indem Sie die Anwendung so modifizieren, dass keine Aktionen durchgeführt werden, die einen Commit oder Rollback zur Folge haben.
Hierbei ist der Einsatz des Sprachelementes MESSAGE zur Protokollierung von Fehlern erlaubt.
Die Deaktivierung der Konsistenzprüfung darf nur nach genauer Analyse der SAP-LUW innerhalb der generierten bgRFC-Unit vorgenommen werden. Ansonsten kann es nach dem Abbruch einer Unit fälschlicherweise zu einer mehrfachen Verbuchung von Daten kommen.

Die transaktionale Integrität einer bgRFC Unit kann nicht mehr garantiert werden, wenn die Methode DISABLE_COMMIT_CHECKS aufgerufen wurde.