Datenbank-LUW 

Aus der Sicht der Datenbankprogrammierung ist eine Datenbank-LUW eine nicht teilbare Folge von Datenbankoperationen, die mit einem Datenbank-Commit abgeschlossen wird. Die Datenbank-LUW wird vom Datenbanksystem entweder vollständig oder überhaupt nicht ausgeführt. Nach dem erfolgreichen Abschluß einer Datenbank-LUW befindet sich die Datenbank wieder in einem konsistenten Zustand. Wird innerhalb einer Datenbank-LUW ein Fehler entdeckt, so lassen sich alle seit Beginn der Datenbank-LUW gemachten Datenbankänderungen wieder zurücknehmen. Die Datenbank befindet sich anschließend im gleichen Zustand wie vor dem Beginn der Datenbank-LUW.

Datenbankänderungen innerhalb einer Datenbank-LUW werden erst nach einem Datenbank-Commit endgültig auf der Datenbank festgeschrieben. Vorher können sie durch einen Datenbank-Rollback wieder zurückgenommen werden. Im R/3-System werden Datenbank-Commits und Datenbank-Rollbacks entweder implizit oder durch explizite Anforderungen ausgelöst.

Implizite Datenbank-Commits im R/3-System

Ein Workprozess kann immer nur eine Datenbank-LUW ausführen. Daraus folgt, daß ein Workprozess immer dann eine Datenbank-LUW beenden muß, wenn er seine Aktivität für einen Benutzer am Bildschirm oder einen externen Aufruf beendet hat. Im einzelnen gibt es die folgenden drei Fälle, in denen Workprozesse einen solchen impliziten Datenbank-Commit auslösen:

Die Kontrolle wechselt vom Workprozess zum SAP GUI.

Die Kontrolle geht an den anderen Workprozess über.

Die Kontrolle geht an den aufrufenden Workprozess zurück.

Die Kontrolle geht vom Workprozess an den SAP GUI über.

Explizite Datenbank-Commits im R/3-System

Um in Anwendungsprogrammen explizite Datenbank-Commits auszulösen, gibt es zwei Möglichkeiten:

Dieser Funktionsbaustein dient ausschließlich dem Zweck einen Datenbank-Commit abzusetzen.

Diese Anweisung führt außer einem Datenbank-Commit weitere Aktivitäten aus (vergleichen Sie die Schlüsslewortdokumentation zu COMMIT WORK).

Implizite Datenbank-Rollbacks im R/3-System

Folgende Bedingungen führen zu einem impliziten Datenbank-Rollback:

Diese Situation tritt auf, wenn ein Anwendungsprogramm aufgrund einer unvorhergesehen Situation (z.B. Division durch Null) die Verarbeitung abbrechen muß.

Eine Abbruch-Nachricht wird mit der ABAP-Anweisung MESSAGE unter Verwendung der Nachrichtentypen A oder X, in manchen Situationen (Verbuchung) auch bei I, W und E erzeugt. Solch eine Nachricht führt zur Beendigung des aktuellen Anwendungsprogramms.

Explizite Datenbank-Rollbacks im R/3-System

Ein expliziter Datenbank-Rollback wird durch die Ausführung der ABAP-Anweisung ROLLBACK WORK erreicht. Diese Anweisung führt außer einem Datenbank-Rollback weitere Aktivitäten aus (vergleichen Sie die Schlüsselwortdokumentation zu COMMIT WORK).

Aus den hier aufgezählten Punkten ergibt sich die folgende Zusammenstellung von Zeitpunkten, bei denen Datenbank-LUWs beginnen bzw. enden.

Eine Datenbank-LUW beginnt

Eine Datenbank-LUW endet

Datenbank-LUWs und Datenbanksperren

Zu einer Datenbank-LUW gehören nicht nur die in ihr ausgeführten Änderungen, sondern auch Datenbanksperren, mit denen das Datenbank-System gewährleistet, daß konkurrierende Änderungen an Daten nicht zu Inkonsistezen führen. Die Lebensdauer von Datenbanksperren ist auf die Lebensdauer einer Datenbank-LUW beschränkt, d.h. am Ende einer Datenbank-LUW werden sie automatisch wieder freigegeben. Für die Programmierung von SAP-LUWs benötigen wir im R/3-System also einen Sperrmechanismus, der Sperren mit größerer Lebensdauer erlaubt (siehe Das R/3-Sperrkonzept).