Sperrobjekt
Siehe Kategorie: Dictionary.
Siehe Dictionary (Transaktion SE11).
SAP beschreibt es treffend: Der gleichzeitige Zugriff mehrerer Benutzer auf denselben Datenbestand wird im SAP-System durch einen Sperrmechanismus synchronisiert. Das Setzen bzw. Freigeben von Sperren erfolgt in der Programmierung von Dialogtransaktionen durch den Aufruf von Funktionsbausteinen, die automatisch aus der Definition von Sperrobjekten im ABAP Dictionary generiert werden.
Sperrobjekt und Sperrargument
- In einem Sperrobjekt werden diejenigen Tabellen mit ihren Schlüsselfeldern angegeben, in denen Datensätze mit einem Sperrauftrag gesperrt werden sollen. Bei der Tabellenauswahl wird von einer Tabelle (Primärtabelle) ausgegangen. Zu dieser können weitere Tabellen (Sekundärtabellen) über Fremdschlüsselbeziehungen (siehe auch Bedingungen an die Fremdschlüssel) hinzugenommen werden.
- Das Sperrargument einer Tabelle im Sperrobjekt besteht aus den Schlüsselfeldern der Tabelle.
- Die Sperrargumentfelder eines Sperrobjekts werden in den aus der Sperrobjektdefinition generierten Funktionsbausteinen zum Setzen und Freigeben von Sperren als Eingabeparameter verwendet. Beim Aufruf dieser Funktionsbausteine werden die zu sperrenden (bzw. freizugebenden) Tabellenzeilen durch die Angabe bestimmter, unter Umständen auch generischer Werte, dieser Felder spezifiziert. Die Sperrargumentfelder bestimmen also, welche Teilmenge der Tabellenzeilen gesperrt werden soll.
- Im einfachsten Fall besteht ein Sperrobjekt aus genau einer Tabelle, und das Sperrargument der Tabelle ist der Primärschlüssel dieser Tabelle. Es können auch mehrere Tabellen in ein Sperrobjekt einfließen. Mit einer Sperranforderung kann dann nicht nur ein Satz aus einer Tabelle, sondern ein ganzes logisches Objekt gesperrt werden. Ein solches logisches Objekt kann z.B. ein Beleg sein, der aus einem Eintrag in einer Kopftabelle und N Einträgen in einer Positionstabelle besteht."
Sperrobjekt identifizieren
Hat man die Kopftabelle zu einem Beleg, wie z. B. EKKO (Bestellung Kopf), dann lässt sich in aller Regel auch ein Sperrobjekt und dazu der passende Funktionsbaustein zum Sperren finden.
Einstieg in Sperrobjektpflege
Sperrobjekt anlegen
Reiter Eigenschaften
Reiter Tabellen
Es wird die Primärtabelle hinzugefügt. Hier die Tabelle EKKO
Sperrmodus wird gesetzt
Abhängige Tabellen zur Primärtabelle hinzufügen
Es werden die abhängigen Tabellen EKPO und EKET hinzugefügt
Reiter Sperrparameter
Die Felder dürfen nur einmal zu den Sperrparametern hinzugefügt werden
Sperren bei Klassen
- Wird die Definition einer Klasse im Class Builder bearbeitet, wird die gesamte Klasse gesperrt
- Wird die Implementierung einer Methode geändert, wird lediglich die Methode gesperrt
Schreibsperre
- Eine Schreibsperre kann für ein Sperrobjekt nur durch einen User gesetzt werden. Versucht ein anderer User eine Schreibsperre anzufordern, wird diese Anforderung abgewiesen.
- Eine Schreibsperre löscht auch die optimistische Sperren
- Ist eine Schreibsperre gesetzt, können andere Transaktionen weder eine Schreibsperre, noch eine Lesesperre setzen.
- Siehe SAP-Hilfe: Schreibsperre
Optimistische Sperre
- Siehe SAP-Hilfe: Optimistische Sperre
- SAP: "Eine Transaktion kann für eine Tabellenzeile (Datensatz) eine optimistische Sperre setzen. Das Datenbanksystem teilt der Transaktion die aktuelle Versionsnummer der Tabellenzeile mit. Immer wenn die Tabellenzeile geändert wird, erhöht das Datenbanksystem die Versionsnummer. Durch einen Vergleich zwischen der ursprünglichen und der aktuellen Versionsnummer können Datenbankanwendungen ermitteln, ob die beim Setzen der Sperre gelesenen Daten noch aktuell sind oder neu eingelesen werden müssen. Eine optimistische Sperre müssen Sie explizit mit einer LOCK-Anweisung anfordern. Wenn für ein Datenbankobjekt bereits eine Schreibsperre besteht, dann können Sie keine optimistische Sperre setzen (Sperrkollision). Bei einer bestehenden optimistischen Sperre für ein Datenbankobjekt können andere Benutzer weiterhin Schreib-, Lese- oder weitere optimistische Sperren setzen."
Web-Inhalte
Literatur
- ABAP Workbench - 100 Tipps & Tricks, von Christian Assig, S. 27ff.
- ABAP Objects: Das neue umfassende Handbuch zu Konzepten, Sprachelementen und Werkzeugen in ABAP OO, 2016, von Felix Roth (Amazon) oder Rheinwerk, Kap. 3.12