Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Beispiel zu Sperrobjekten  Dokument im Navigationsbaum lokalisieren

Beim Buchen von Flügen (siehe Flugmodell) muss ein Überbuchen vermieden werden. Deshalb muss 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 werden 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 muss die Tabelle SFLIGHT als Primärtabelle und die Tabelle SBOOK als Sekundärtabelle enthalten. In der folgenden Abbildung sehen Sie die Beziehungen zwischen Primär- und Sekundärtabelle aus unserem Beispiel.

Diese Grafik wird im zugehörigen Text erklärt

Das Sperrargument der Tabelle SFLIGHT besteht damit aus den Feldern MANDT, CARRID, CONNID und 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:

      ENQUEUE_ E_BOOKING (Setzen von Sperren)

      DEQUEUE_ E_BOOKING (Freigeben von Sperren)

Diese Funktionsbausteine können nun in ABAP-Programme eingebunden werden.

Das folgende Beispiel zeigt einen Aufruf des Funktionsbausteins ENQUEUE_ E_BOOKING.

Diese Grafik wird im zugehörigen Text erklärt

Durch diesen Aufruf wird der Flug LH 400 am 29.11.1998 in der Tabelle SFLIGHT exklusiv (Sperrmodus E) gesperrt. Mitgesperrt werden alle für diesen Flug in der Tabelle SBOOK eingetragenen Buchungen (da für BOOKID und CUSTOMID der Initialwert 0 mitgegeben wird). 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.

Diese Grafik wird im zugehörigen Text erklärt

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

 

 

 

 

 

Ende des Inhaltsbereichs