Bei einer Flugbuchung (siehe
Flugmodell) müssen Überbuchungen eines Fluges verhindert werden. Deshalb muß der betreffende Flug für die Dauer der Bearbeitung zusammen mit allen für diesen Flug bestehenden Buchungen gesperrt werden. Dies kann über ein Sperrobjekt E_BOOKING erreicht werden.Die Flüge sind in der Tabelle SFLIGHT verzeichnet, die Buchungen zu den Flügen in der Tabelle SBOOK. Beide Tabellen sind über einen Fremdschlüssel verbunden. Das Sperrobjekt E_BOOKING muß also die Tabelle SFLIGHT als Primärtabelle und als weitere Tabelle die Tabelle SBOOK enthalten.

Das Sperrargument der Tabelle SFLIGHT besteht damit aus den Feldern MANDT, CARRID, CONNID, FLDATE. Das Sperrargument der Tabelle SBOOK besteht aus den Feldern MANDT, CARRID, CONNID, FLDATE, BOOKID und CUSTOMID.
Als Sperrmodus wird Schreibsperre gewählt, d.h. die gesperrten Daten können ausschließlich von einem Benutzer angezeigt und bearbeitet werden.
Bei der Aktivierung des Sperrobjekts werden aus seiner Definition die folgenden Funktionsbausteine generiert:
Diese Funktionsbausteine können nun in ABAP Programmen eingebunden werden.
Das folgende Beispiel zeigt einen Aufruf des Funktionsbausteins ENQUEUE_ E_BOOKING.

Durch diesen Aufruf wird der Flug LH 400 am 29.11.1998 in der Tabelle SFLIGHT zusammen mit allen für diesen Flug in der Tabelle SBOOK eingetragenen Buchungen (da für BOOKID und CUSTOMID der Initialwert 0 mitgegeben wird) exklusiv (Sperrmodus E) gesperrt. Die Sperre wird an den Verbucher weitergegeben (_SCOPE = '2'). Bei einem Sperrkonflikt wird nach einiger Zeit erneut versucht, die Sperre abzusetzen (_WAIT = 'X').
Die gesetzten Sperren können mit dem folgenden Aufruf des Funktionsbausteins DEQUEUE_E_BOOKING wieder freigegeben werden.

Die bestehenden exklusiven Sperreinträge für den Flug LH 400 in der Tabelle SFLIGHT und die Buchungen zu diesem Flug in der Tabelle SBOOK werden gelöscht. Der Auftrag zum Löschen der Sperreinträge wird an den Verbucher weitergegeben (_SCOPE = '3').
Siehe auch:
Funktionsbausteine für Sperranforderungen