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