Sperrobjekt

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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.

Sperrobjekt1.jpg


Sperrobjekt2.jpg


Sperrobjekt3.jpg


Sperrobjekt4.jpg


Sperrobjekt5.jpg

Einstieg in Sperrobjektpflege

SE11 Sperrobjekt1.jpg

Sperrobjekt anlegen

SE11 Sperrobjekt2.jpg

Reiter Eigenschaften

SE11 Sperrobjekt Reiter Eigenschaften3.jpg

Reiter Tabellen

Es wird die Primärtabelle hinzugefügt. Hier die Tabelle EKKO

SE11 Sperrobjekt Reiter Tabellen3.jpg

Sperrmodus wird gesetzt

SE11 Sperrobjekt Sperrmodus8.jpg

Abhängige Tabellen zur Primärtabelle hinzufügen

SperrobjektButtonHinzufuegen4.jpg

Es werden die abhängigen Tabellen EKPO und EKET hinzugefügt

SE11SperrobjektAbhaengige Tabellen5.jpg

SE11SperrobjektAbhaengigeTabellen6.jpg

Reiter Sperrparameter

Die Felder dürfen nur einmal zu den Sperrparametern hinzugefügt werden

SE11 Sperrobjekt Reiter Sperrparameter7.jpg

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