Kap. 5.7: SAP R/3 - Transaktionsverwaltung und Dialogprogrammierung Transaktionsverwaltung in SAP R/3 Sperrverwaltung Verbuchung Dialogprogrammierung Dynpros Modul-Pools (Ablauflogik) Vorbereitung der praktischen Übung mit SAP R/3 (Teil III) Kap. 5.7-1 Datenbankschnittstellen in SAP R/3 Tabellenpuffer Dialog-Workprozess Dialog-Workprozess Dialog-Workprozess DynPro-Interpreter DynPro-Interpreter DynPro-Interpreter ABAP-Interpreter ABAP-Interpreter ABAP-Interpreter Native SQL Open SQL Native SQL Open SQL Native SQL Open SQL Datenbank- Datenbank- Schnittstelle Datenbank- Schnittstelle Schnittstelle Shared Memory Data Dictionary RDBMS Kap. 5.7-2 1
DynPro-Konzept 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 Input- Modul Output- Modul PBO DynPro Bildschirmausgabe Benutzereingabe PAI PBO Kap. 5.7-3 SAP-Transaktionen und LUWs SAP-Transaktion Folge von betriebswirtschaftlichen Dialogschritten Anwendungsorientierte Sichtweise SAP-LUW (Logical Unit of Work) Umfasst alle Dialogschritte einer Transaktion und die zugehörige Verbuchung in der Datenbank Systemorientierte Sichtweise SAP-Transaktion (Dialog-Workprozess) PBO PAI PBO PAI Verbuchung (Verbuchungs-WP) Update Task SAP-LUW Kap. 5.7-4 2
SAP-LUWs vs. Datenbank-Transaktionen Jedes DynPro kann von einem unterschiedlichen Workprozess bearbeitet werden Wenn SAP-LUW identisch mit DB-Transaktion wäre, dann müssten in der DB-Sperren über Prozessgrenzen hinweg weitergegeben werden Daher: Dynpro-Wechsel löst automatisch DB-Commit aus Ein einzelnes Dynpro entspricht daher einer Datenbank-Transaktion SAP-Transaktionen über DB-Transaktionen definiert Scheduling auf zwei Ebenen SAP implementiert eigene Sperrverwaltung Kap. 5.7-5 SAP-LUWs vs. Datenbank-Transaktionen SAP Logical Unit of Work Kap. 5.7-6 3
Sperrverwaltung in SAP R/3 Um ungewollte und inkorrekte Wechselwirkungen paralleler Zugriffe auf gemeinsame Daten zu vermeiden, müssen sowohl Lese- als auch Schreiboperationen mit Sperren gekapselt werden. Dies erfolgt jedoch nicht -wie im Falle eines DBMSautomatisch und transparent für den Benutzer. Es müssen vielmehr im ABAP-Programm explizit Sperren gesetzt werden Kap. 5.7-7 Sperrobjekte Sperrobjekte beinhalten eine oder mehrere Tabellen, aus denen betriebswitschaftlich zusammengehörende Datensätze gleichzeitig gesperrt werden sollen Aus dem Sperrobjekt, das im ABAP Dictionary angelegt wird, werden automatisch zwei Sperrbausteine generiert Enqueue-Baustein: Sperranforderung Dequeue-Baustein: Sperrfreigabe Kap. 5.7-8 4
Aufruf eines Sperrobjektes * Aufruf eines Sperrbausteins CALL FUNCTION 'ENQUEUE_EZOHO00KTO' EXPORTING * Angabe der Sperrparameter MODE_ZOHO00KTO = 'E' MODE_ZOHO00BUCH = 'E' MANDT = SY-MANDT KUNNR = ZOHO00KTO-KUNNR KONTONR = ZOHO00KTO-KONTONR EXCEPTIONS FOREIGN_LOCK = 1 SYSTEM_FAILURE = 2 OTHERS = 3. Kap. 5.7-9 SAP R/3 Prozessübersicht Präsentation SAPGUI- Prozess SAPGUI- Prozess X-Server PC Anwendungsserver Batch- Workprozess Verbuchungs- Workprozess Dispatcher Dialog- Workprozess Spool- Workprozess Enqueue- Workprozess Datenbankserver RDBMS Kap. 5.7-10 5
Sperranforderung Kap. 5.7-11 Sperranforderung 1 Aufruf des Enqueue-Funktionsbausteins (Sperranforderung) durch den Workprozess. Zusätzlich werden die Parameter der zu sperrenden Daten mitgegeben 2 Der Workprozess übermittelt den Sperrantrag an die zentrale Sperrtabelle 3 Der Enqueue-Workprozess überprüft, ob die gewünschten Sätze bereits gesperrt sind. Falls die Sperranforderung erfolgreich ist, wird die Sperre in der Sperrtabelle eingetragen; der aufrufende Workprozess kann daraufhin seine Arbeit fortsetzen Kap. 5.7-12 6
Sperrfreigabe Kann explizit erfolgen durch Aufruf des Dequeue- Funktionsbausteins CALL FUNCTION DEQUEUE_bausteinname Erfolgt automatisch bei Commit Work Rollback Work Ende der Dialogtransaktion Kap. 5.7-13 Datenbank-Interaktion in SAP-LUWs Ungebündelte Aktualisierung Datenbank-Änderungen direkt in PAI-Modul Nur möglich, wenn LUW aus einem einzigen Dynpro besteht, sonst keine ACID-Garantien Gebündelte Aktualisierung DB-Änderungen werden in Protokollsatzdatei (lokale Version der LUW) geschrieben DB-Verbuchung erfolgt erst am Ende der SAP- Transaktion durch spezielle Verbuchungs-Workprozesse CALL FUNCTION verbucher IN UPDATE TASK Kap. 5.7-14 7
Dialog- und Verbuchungs-WPs Verbuchungs- Workprozess Dialog- Workprozess Transaktion 1 Transaktion 3 Transaktion 2 Zeitachse LUW 1 LUW 2 (Transaktion wird durch LUW 3 unterbrochen) LUW 3 (Verbuchung wird vom Dialog-WP ausgeführt) Kap. 5.7-15 Protokollsatzdatei: Lokale Version der LUW Dialogprogramm Protokollsatzdatei Verbuchungsprogramm Datenbank Kap. 5.7-16 8
Verbuchungsprozess SAP-Transaktion PBO PAI DB- Commit Call function A in update task exporting... PBO PAI DB- Commit Protokollsatzdatei Funktion A Funktion B Funktion C PBO Commit Work PAI DB- Commit Verbuchung Verbuchungs- Prozess Funkt. A Funkt. B Funkt. C Commit SAP Logical Unit of Work Kap. 5.7-17 Änderungsoperationen in Open-SQL Tables definiert Tabellenarbeitsbereich (für EIN Tupel) Elemente des Tupels können beliebig gesetzt bzw. verändert werden Beispiel: TABLES zautor. ZAUTOR-Nachname = Frisch. ZAUTOR-Vorname = Friedrich. INSERT ZAUTOR. Fügt neues Tupel in DB ein ZAUTOR-Vorname = Max UPDATE ZAUTOR. ändert das Tupel Kap. 5.7-18 9
Komponenten von Dialogtransaktionen Modulpool (ABAP-Programm) Implementierung der PBO- und PAI-Module Dynpro (mehrere pro Dialog-TA) Definition der Bildschirmmaske Zuordnung von Modulen aus dem Modulpool an PBOund PAI-Zeitpunkt Festlegen der Felder der Maske und Zuordnung zu Variablen im Modulpool (gleiche Benennung!) Status (einmal pro Dynpro) Definition der aktiven Buttons der Dialogmaske Sperrbaustein Transaktion Kap. 5.7-19 Tools des R/3 Repository Data Modeler: Datenmodellierung Data Dictionary: Metadatenverwaltung Data Browser: Zugriff auf Datenbanktabellen (nur Anwendungsdaten) Repository Browser: Zugriff auf sämtliche Programmobjekte Entwicklungswerkzeuge: ABAP-Editor Screen Painter Status-Editor (Definition von Buttons & Menüeinträgen) Kap. 5.7-20 10
Onlineprogramm Für Reports Programmtypen nur Programme von diesem Typ können direkt abgearbeitet werden Modulpool Für Dialoganwendungen (Verarbeitungsschritte von DynPros) Nur über Transaktionsnummer aufrufbar Funktionsgruppe Sammlung von Funktionen Include-Programm Subroutinepool Kap. 5.7-21 Process Before Output Setzen des Dynpro-Status Welche Buttons sind aktiv Welche Funktion ist jeweils hinterlegt Initialisierung der Werte, die angezeigt werden sollen z.b. durch DB-Zugriff oder aus Vorgänger-Dynpro Kap. 5.7-22 11
Process After Input Verarbeitung der eingegebenen Daten Direkter Zugriff auf Datenbank Aufruf einer Verbuchungstask = Aufruf eines Funktionsbausteins (nicht im Modulpool definiert, sondern in Funktionsgruppe) CALL FUNCTION Verbuchung IN UPDATE TASK EXPORTING PARA1 = PARA2 =. Festlegen des Folge-Dynpros SET SCREEN 0200. Wechsel zum Folge-Dynpro Leave Screen. Kap. 5.7-23 Transaktion Einstiegspunkt in Dialogtransaktion Angabe von Programmname (Modulpool) und Nummer des ersten Dynpros Aufruf durch Transaktionsnummer /nzvb00 Weiterer Kontrollfluss innerhalb der Transaktion in den PAI-Modulen definiert Kap. 5.7-24 12
Praktische Übung Implementierung von Dialogtransaktionen Aufgabe 1: Einfacher Dialog, bestehend aus einem Dynpro Datenbankzugriff in PAI-Modul Skelett des Modulpools vorgegeben (ZOHO00SD) Aufgabe 2: Anlegen eines Sperrbausteins Aufgabe 3: Dialog bestehend aus vier Dynpros Verwendung des Sperrbausteins Skelett ZOHO00DI vorgegeben Aufgabe 4: Verbuchung in Verbuchungsprozess (Funktionsbaustein) Kap. 5.7-25 Aufgabe 3: Ablauflogik Dynpro 0100 Eingabe der Kontonummer Selektion der Kontodaten Aufruf Sperrbaustein Dynpro 0200 Eingabe der Konto-Buchung Sperrkonflikt Insert direkt in DB Dynpro 0300 OK Fehler Dynpro 0400 Bestätigung Fehlermeldung Kap. 5.7-26 13
Aufgabe 4 Verbuchungsfunktionsbaustein Dynpro 0100 Eingabe der Kontonummer Selektion der Kontodaten Aufruf Sperrbaustein Dynpro 0200 Eingabe der Konto-Buchung Aufruf der Verbuchung Sperrkonflikt OK Dynpro 0300 Dynpro 0400 Commit Work Ausführen der Verbuchung Fehler Rollback Work Verwerfen des Protokollsatzes Kap. 5.7-27 14