11.3 Transaktionen und LUWs in SAP R/3

Werbung
11.3
G
Transaktionen heissen in SAP/R3 Logical Unit of Work (LUW).
Eine LUW besteht in der Regel aus zwei Teilen:
•
•
G
SAP-Transaktion: Folge von vorbereiteten Dialogschritten Di
(sukzessive Durchführung von Benutzereingaben)
SAP-Verbuchung: eigentliche Durchführung der Änderungen/
Einfügungen der Dialogschritte in der Datenbank
Dialogschritte und Verbuchung werden jeweils als eigenständige
DB-Transaktionen ausgeführt.
•
•
G
Transaktionen und LUWs in SAP R/3
Ausführung der Dialogschritte entspricht einem Enqueue
der Aufträge
Verbuchung ist deren Durchführung innerhalb von (einer)
DB-Transaktion(en)
SAP-Objekte werden für die Dauer der SAP-LUW gesperrt,
DB-Objekte nur während der DB-Transaktion (also kurz)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 1
SAP/R3: Transaktionen, Verbuchung und LUWs
Sperrdauer für SAP- Objekte
SAP-Logical Unit of Work (LUW)
t4
t5
V2
Commit
t3
V1
Commit
t2
D4
Commit
t1
D3
Commit
DB-Objekte
D2
Commit
D1
SAP-Verbuchung
t6
Commit
SAP-Transaktion
SAP-Objekte
Sperrdauer für Datenbank-Objekte
Di :
Vi:
ti:
Dialogschritte (DynPros)
Verbuchungsschritte
DB-Transaktionen
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 2
Architektur von SAP R/3: Prozess-orientierte Sichtweise
X-Server
SAPGUIProzess
BatchWorkprozess
SAPGUIProzess
Dispatcher
PC
Präsentation
SpoolWorkprozess
Anwendungslogik
VerbuchungsWorkprozess
DialogWorkprozess
EnqueueWorkprozess
Datenhaltung
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 3
SAP R/3: Dienste und Prozesse
Anwendungsserver (≥1 pro R3-System)
G
G
G
G
G
G
Dispatcher (1 pro Anwendungsserver)
• Zentraler Prozess auf Anwendungsebene
• Zuweisung von Workprozessen
Dialog-Workprozess (≥
≥1 pro Anwendungsserver)
• ABAP-Interpreter & DynPro-Prozessor
Batch-Workprozess (≥
≥1 pro R3-System)
• Hintergrundverarbeitung
Enqueue-Workprozess (genau 1 pro R3-System)
• Sperrverwaltung für SAP-Objekte
• Verwendet eigene Sperrtabelle, unabhängig von unterliegender DB
Verbuchungs-Workprozess (≥
≥1 pro R3-System)
• Durchführung von Datenbank-Änderungen
Spool-Workprozess (1 pro Rechner)
• Druckaufbereitung
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 4
SAP-LUWs vs. Datenbank-Transaktionen
G
G
Jedes DynPro kann von einem unterschiedlichen Workprozess
bearbeitet werden
Dialogtransaktion und Verbuchung werden durch
unterschiedliche Prozesse bearbeitet
•
Wenn SAP-LUW identisch mit DB-Transaktion wäre,
dann müssten in der DB-Sperren über Prozessgrenzen hinweg
weitergegeben werden
➜ DynPro-Wechsel löst automatisch DB-Commit aus.
Ein einzelnes DynPro entspricht also einer DB-Transaktion
G
Für den Fehlerfall sind keine Kompenationsoperationen
(Inverse) der Änderungsoperationen verfügbar
➜ Alle Änderungen müssen im Verbuchungs-Workprozess
zusammengefasst werden, um ACID zu garantieren
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 5
Dialog- und Verbuchungs-WPs
VerbuchungsWorkprozess
Dialog-Workprozess
Transaktion 3
Transaktion 2
Transaktion 1
D21
D31
D22
D11
Zeitachse
LUW 1
LUW 2 (Transaktion wird durch LUW 3 unterbrochen)
LUW 3 (Verbuchung wird vom Dialog-WP ausgeführt)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 6
SAP R/3-Dialogschritte: DynPro-Konzept
G
G
G
Dialogprogramm = Folge von Dialogschritten
Jeder Dialogschritt entspricht einem DynPro
(dynamisches Programm)
DynPro-Ablauflogik
•
•
PBO (Process Before Output)
– Bereitet Bildschirmbild zur Ausgabe vor
PAI (Process After Input)
– Verarbeitung der Benutzereingaben
Output
Modul
(PBO)
DynPro
Bildschirmausgabe
Benutzereingabe
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Input
Modul
(PAI)
Output
Modul
(PBO)
…
Kapitel 11: Transaktionsverwaltung – 7
Datenbank-Interaktion: Gebündelt
G
Gebündelte Aktualisierung
•
•
•
•
DB-Änderungen werden in eine Protokollsatzdatei geschrieben
DB-Verbuchung erfolgt erst am Ende der SAP-Transaktion
Asynchrone Verbuchung (Standard-Verfahren):
Abarbeitung von Funktionsbausteinen durch spezielle
Verbuchungs-Workprozesse
– V1: Primäre Verbuchungskomponenten, für die ACID
gefordert wird
– V2: Sekundäre Verbuchungskomponenten. Werden nach den
V1-Komponenten durchgeführt. Fehler der V2-Komponenten
führen NICHT zum Fehlschlagen der LUW.
– V1 bzw. V2 ist Eigenschaft des aufgerufenen Funktionsbausteins
Synchrone Verbuchung: Änderungen in der Datenbank erfolgen im
Dialog-Workprozess (Aufruf der Funktionsbausteine durch Dialog-WP)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 8
Datenbank-Interaktion: Ungebündelt
G
Ungebündelte Aktualisierung
•
•
Datenbank-Änderungen erfolgen direkt im PAI-Modul
Allerdings: da nach jedem DynPro-Wechsel automatisch ein Commit
erfolgt …
– … ist die ungebündelte Verbuchung nur dann möglich,
wenn die LUW aus einem einzigen DynPro besteht
– Ansonsten sind keine ACID-Garantien möglich
(Kompensation zur Fehlerbehebung wird nicht berücksichtigt)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 9
Beispiel: Asynchrone gebündelte Verbuchung
SAP-LUW
Protokollsatzdatei
Funktion A (V1)
Funktion B (V2)
Funktion C (V1)
PAI
PBO
Dialog-WP1
PAI
PBO
PAI
SELECT …
FROM …
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Commit
SELECT …
FROM …
Commit
Commit
Verb.-WP Vy
Funktion A
Funktion C
Funktion B
V1
SAP-Transaktion
SELECT …
FROM …
Verb.-WP Vx
Verbuchung
INSERT…
UPDATE…
V2
INSERT…
UPDATE…
Commit
PBO
Dialog-WP3
Commit
Dialog-WP1
Commit
Work
CALL FUNCTION A
IN UPDATE TASK
EXPORTING ...
Kapitel 11: Transaktionsverwaltung – 10
Protokollsatzdatei: Lokale Version der LUW
Dialogprogramm
Dialogprogramm
PAI
PBO
Protokollsatzdatei
Protokollsatzdatei
Verbuchungsprogramm
Verbuchungsprogramm
Datenbank
Datenbank
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 11
SAP-Sperrmechanismus
G
G
Um ungewollte und inkorrekte Wechselwirkungen paralleler
Zugriffe auf gemeinsame Daten zu vermeiden, müssen sowohl
Lese- als auch Schreiboperationen auf SAP-Objekten mit Sperren
gekapselt werden
Dies erfolgt jedoch nicht –wie im Falle eines DBMS– automatisch
und transparent für den Benutzer
•
G
Sperren müssen explizit im Anwendungsprogramm (ABAP)
gesetzt werden
Zentrale Sperrverwaltung (Enqueue-Workprozess)
Sperranforderung
Datenzugriff
Sperrfreigabe
(ABAP-Befehl)
(Open SQLBefehl)
(ABAP-Befehl)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 12
SAP-Sperrobjekte
G
G
G
Sperrobjekte beinhalten eine (oder mehrere) Tabelle(n), aus
denen betriebswirtschaftlich zusammengehörende Datensätze
gleichzeitig gesperrt werden sollen
Sperrobjekte werden im ABAP Dictionary angelegt
Aus dem Sperrobjekt werden automatisch zwei Sperrbausteine
generiert
•
•
Enqueue-Baustein: Sperranforderung
Dequeue-Baustein: Sperrfreigabe
EZOHO00KTO
automatisch
generiert
Sperrobjekt; umfasst die Tabellen
ZOHO00KTO und ZOHO00BUCH
ENQUEUE_EZOHO00KTO
ABAP-Funktionsbaustein
für Sperranforderung
DEQUEUE_EZOHO00KTO
ABAP-Funktionsbaustein
für Sperrfreigabe
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 13
Sperranforderung …
Anwendungsserver A
Anwendungsserver B
Shared Memory
BEGIN
…
Call Function
EZOHOxxKTO
…
…
END
BEGIN
…
Call Function
EZOHOxxKTO
…
END
…
FUNCTION
ENQUEUE_
EZOHO00KTO.
…
ENDFUNCTION.
1
FUNCTION
ENQUEUE_
EZOHO00KTO.
…
ENDFUNCTION.
Programm-Puffer
ABAP-Interpreter
Shared Memory
Dialog-/ Batch- oder
Verbuchungs-WP
Objektverwaltung höherer Ordnung (OHO) – SS 2001
3
Sperrtabelle
2
Enqueue-Workprozess
Kapitel 11: Transaktionsverwaltung – 14
… Sperranforderung
1.
Aufruf des Enqueue-Funktionsbausteins
(CALL FUNCTION 'ENQUEUE_EZOHOKTO') durch den DialogWorkprozess
•
2.
3.
Mit Parametern der zu sperrenden Daten
– Modus der Sperre
– Auswahl der zu sperrenden Tupel (über deren Primärschlüssel)
Der Dialog-Workprozess übermittelt den Sperrantrag an den
Enqueue-Workprozess
Der Enqueue-Workprozess überprüft anhand einer zentralen
Sperrtabelle, ob die gewünschten Sätze bereits gesperrt sind
•
•
Falls nicht: Sperre wird in die Sperrtabelle eintragen; der aufrufende
Dialog-Workprozess setzt seine Arbeit fort
Falls bereits gesperrt: Entweder Warten auf Freigabe oder Abbruch
(dieses Verhalten ist ebenfalls als Parameter im Enqueue-Aufruf
spezifiziert)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 15
Sperrfreigabe
G
Kann explizit erfolgen durch Aufruf des
Dequeue-Funktionsbausteins
CALL FUNCTION 'DEQUEUE_EZOHOKTO'
G
Erfolgt automatisch bei
•
•
•
G
Commit Work
Rollback Work
Ende der Dialogtransaktion
Das Nicht-Berücksichtigen des expliziten Freigebens von
SAP-Sperren führt also zu keinen Problemen
(im Gegensatz zur Sperranforderung)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 16
Zusammenfassung SAP-Transaktionsmodell
G
G
SAP R/3 verfolgt einen Zweischichtenansatz
•
•
Verwendet eigene Sperrverwaltung auf Anwendungsebene
Sperren auf Datenbankobjekten nur kurz gehalten
Aber: Programmierer müssen explizit Sperren setzen!
(Dies ist, verglichen mit dem Stand der Technik, ein grosser Rückschritt,
mindestens optional sollten automatisch Sperren gesetzt werden)
•
•
Es gibt keine Garantie des Systems, dass gemeinsame Zugriffe
auf dieselbe Ressource (Datenbankobjekte) korrekt behandelt
werden
Der SAP-Transkationsmanager kann durch Native SQL
umgangen werden (man müsste föderierte
Transaktionsverwaltung einsetzen, wenn man Native SQL
zulässt)
•
Es können (private) für andere Nutzer nicht sichtbare
Versionen verwendet werden (über die Protokollsatzdatei)
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 11: Transaktionsverwaltung – 17
Herunterladen