Transaktionssystemeigenschaften im SAP System R/3

Werbung
Blockseminar Transaktionssysteme
Friedrich-Schiller-Universität Jena 1999:
Transaktionssystemeigenschaften
im SAP System R/3
Thomas Arend
SAP AG
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
1
1
Themenübersicht
l Client/Server Architektur des R/3 System
l Datenbankänderungen
n Bündelung
n Verbuchungstechniken
n Sperrkonzept
l Transaktionsverarbeitung
n Synchrone Aufrufe
n Asynchrone Aufrufe
n Datenübergabetechniken
n LUWs
n RFC-Techniken
n Transaktionsmonitore
l Aktuelle Entwicklungen
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
2
2
SAP R/3: 3-Ebenen Client/Server-Architektur
Presentation
SAPGUI
SAPGUI
SAPGUI
SAPGUI
Dispatcher
Application
Workprozeß
Database
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
Workprozeß
Workprozeß
DB-Workprozesse
3
❏ Das SAP R/3-System basiert auf der 3-Ebenen-Architektur eines Client-Server-Systems. Es besteht
aus den drei Ebenen Datenbank, Applikationsserver und Präsentationsserver.
❏ Durch die Wahl dieser Architektur mit dem Verteilen von Benutzeranfragen (Userdispatching) ist
es möglich, ein hocheffizientes, kostengünstiges Mehrbenutzersystem zu realisieren.
❏ Die 3-Ebenen-Architektur erlaubt es, eine große Anzahl von Benutzern mit billigen und langsamen
Endgeräten auf eine kleine Anzahl von Workprozessen auf teuren und schnellen
Applikationsservern abzubilden.. Jedem Workprozeß eines Applikationsservers ist ein Workprozeß
auf einem (teuren) Datenbankserver zugeordnet.
❏ Beim Userdispatching werden die einzelnen Clients auf der Präsentationsserverebene für bestimmte
Zeitintervalle einem Workprozeß zugeordnet, der seinerseits für diese Zeitdauer einen Workprozeß
der Datenbank nutzt. Nach der Verarbeitung der Benutzereingaben eines Dialogschritts, wird der
Benutzer mit seinem Benutzer- und Programmkontext aus dem Workprozeß "herausgerollt" und der
Workprozeß kann von einem anderen Benutzer verwendet werden.
❏ Die 3-Ebenen-Architektur hat sich als deutlich skalierbarer (hinzufügen von weiteren Benutzern)
herausgestellt, als eine "Fat"-Client-Architektur, bei der die Präsentationsebene und die
Applikationsserverebene auf einem Sever ablaufen. Bei der 3-Ebenen-Architektur werden weniger
Datenbank-Schattenprozesse benötigt als bei einer "Fat"-Client-Architektur. Daher sind die Kosten
der 3-Ebenen-Architektur geringer.
 SAP AG
3
R/3 multi-tier C/S Architecture
WAN
Presentation
Internet
Customer
Service
Rep
Accept
Customer
Order
Customer
Order
Create
Production
Orders
Production
Order
Plant
Personnel
Explode
Bill-ofMaterial
Reserve
Material
Release
Production
Orders
Build
Products
Part
Material
Schedule
Production
Task
Confirm
Delivery
Application
Database
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
4
4
9
R/3 Client Server Konfiguration
SAP R/3 System
Presentation
Application
Database
Central System /
Laptop
Distributed
Presentation
Two-tier
Client/Server
Fat client
Three-tier
Client/Server
Multi-Layer
Cooperative
Client/Server
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
5
5
147
Types of Processes and Application servers
Message
Update
Dialog
V
M
D
SAP-Dispatcher
SAP-Dispatcher
Batch
11
10
12
Enqueue
1
2
9
3
8
4
7 6 5
B
Spool
E
Gateway
S
R/2
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
G
R/3
6
6
Plattformunabhängigkeit des R/3
Hardware
UNIX Systems
Bull
Digital
HP
IBM
SNI
SUN
Data General Sequent
AT&T
SNI
Bull/Zenith HP (Intel)
IBM (Intel) Digital (Intel)
Compaq
...
IBM
AS/400
Windows NT
OS/400
ADABAS D
MS SQL Server
ORACLE
DB2/400
Operating
AIX
Reliant
Systems Digital UNIX UNIX (SINIX)
HP-UX
Databases
Dialog
SAP-GUI
SOLARIS
ADABAS D
DB2 for AIX
INFORMIX-OnLine
ORACLE
Windows 3.1, Windows 95, Windows NT, OSF/Motif,
Presentation Manager, Macintosh
Languages
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
Windows ‘95
OS/2
ABAP/4, C, C+ +
7
7
16
8
R/3 Repository
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
8
8
Begriffsdefinition
Transaktion
Dialogprogramm mit einem oder mehreren Bildschirmbildern, das
Objekte in der Datenbank in konsistenter Weise ändert.
Mit Hilfe der Development
Workbench in ABAP/4 können Transaktionen entwickelt werden, die
in einer verteilten Client/Server Umgebung arbeiten.
Logical Unit of Work (LUW)
Eine in sich abgeschlossene Gruppe von Arbeitsschritten innerhalb
einer Transaktion. Alle diese Schritte müssen korrekt abgeschlossen
sein, bevor die LUW als Teil der Transaktion beendet wird (COMMIT).
Wenn vor dem Abschluß einer Transaktion ein Fehler auftritt, werden
alle Änderungen in der LUW verworfen (ROLLBACK), nicht aber die in
vorhergehenden LUWs dieser Transaktion
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
9
❏ Da in R/3 viele verschiedene Benutzer und Anwendungen über viele verschiedene Transaktionen
auf dieselbe Datenbank zugreifen können, müssen Schutzfunktionen eingerichtet werden, die
verhindern, daß ein Benutzer durch einen falschen Tabelleneintrag die gesamte Datenbank
beschädigt. Deshalb gibt es einen separaten Sperrmechanismus und ein spezielles Konzept zur
Definition einer LUW.
❏ LUWs gewährleisten Konsistenz der Datenbank
❏ Ein Sperrmechanismus sorgt dafür, daß zu einem gegebenen Zeitpunkt immer nur ein Benutzer ein
Datenobjekt ändern kann.
 SAP AG
9
SAP-LUW
Elementarer
betriebswirtschaftlicher Vorgang
Prozeßschritt 1
Prozeßschritt 2
...
Prozeßschritt n
SAP-LUW
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
10
❏ Eine SAP-LUW (Logical Unit of Work) realisiert eine logisch zusammenhängende Einheit von
Prozeßschritten eines betriebswirtschaftlichen Vorgangs in einem R/3-System.
❏ Die Schritte der Prozeßkette des betriebswirtschaftlichen Vorgangs müssen logisch
zusammenhängend sein.
❏ In einer SAP-LUW werden entweder alle Schritte der zugehörigen Prozeßkette (umgesetzt in
Datenbankänderungen) durchgeführt oder gar keiner (Alles-Oder-Nichts-Prinzip).
❏ Der abzubildende betriebswirtschaftliche Vorgang muß elementar sein. Das Eingehen einer
Kundenbestellung bis zur Erstellung der Faktura wird i.A. nicht durch eine SAP-LUW abzubilden
sein. Vielmehr wird man den betriebswirtschaftlichen Prozeß in logisch separat auszuführende Teile
zerlegen, und diese Teile dann durch einzelne SAP-LUWs im R/3-System realisieren. Die
Beurteilung, was ein "elementarer" Vorgang ist, hängt vom Gesamtvorgang und dessen
Modellierung ab.
 SAP AG
10
Datenbank-LUW
Datenbankoperationen
Zwischenzustände
insert, update, delete
Konsistenter
Zustand 1
Konsistenter
Zustand 2
DB-COMMIT
ROLLBACK
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
11
❏ Eine Datenbank-LUW (DB Logical Unit of Work) ist eine nicht teilbare Folge von
Datenbankoperationen, die die Datenbank von einem konsistenten Zustand in einen anderen
überführen.
❏ Die Datenbank-LUW wird vom Datenbanksystem entweder vollständig oder überhaupt nicht
ausgeführt (atomarer Prozeß).
❏ Eine Datenbank-LUW wird sowohl beim Starten einer Transaktion (Öffnen einer Verbindung zur
Datenbank), als auch durch einen Datenbank-Commit der vorhergehenden DB-LUW eröffnet.
❏ Die Datenbank-LUW wird abgeschlossen mit einem Datenbank-Commit. Erst dadurch werden die
Daten unwiderruflich auf der Datenbank fixiert. Vorher können Sie beim Auftreten eines Fehlers
durch einen Datenbank-Rollback wieder zurückgenommen werden.
❏ Mit einer Datenbank-LUW können betriebswirtschaftlich zusammengehörende Aktionen, die einen
abgeschlossenen Vorgang darstellen, abgebildet werden. Zum Beispiel muß bei einer Überweisung
im Finanzwesen ein Betrag von einem Konto abgebucht und danach auf ein anderes Konto
gutgeschrieben werden. Zwischen den beiden Buchungsschritten ist der Datenzustand evtl.
inkonsistent.
 SAP AG
11
Impliziter DB-COMMIT
Bildschirm 1
DB-COMMIT
DB-LUW 1
Bildschirm 2
DB-COMMIT
DB-LUW 2
Bildschirm 3
DB-COMMIT
DB-LUW 3
DB-LUW 4
Zeit
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
12
❏ Die 3-Ebenen-Architektur hat Auswirkungen auf das Process-Handling: Beim Freigeben eines
Workprozesses, der dann einen anderen Benutzer (Client) bedienen kann, wird für den dem
Workprozeß zugeordnete Datenbankprozeß ein impliziter Datenbank-COMMIT ausgelöst.
❏ Die Freigabe des Workprozesses auf dem Applikationsserver sowie auf der Datenbank erfolgt nach
jedem Benutzerdialog. Damit ist gewährleistet, daß die unter Umständen langwierigen
Benutzerdialoge ("Frühstückspause"), in denen "nur Bildschirmbilder" angezeigt werden, aus den
Datenbank-LUWs herausgenommen werden. Damit ist die Lebensdauer einer DB-LUW i.A. sehr viel
kürzer als die Dauer für die Anzeige eines Bildes. Kurze DB-LUWs bedeuten eine geringere
Belastung der Datenbankresourcen.
❏ Implizite Commits auf der Datenbank werden bei jedem Benutzerdialog ausgelöst. Dazu zählen:
das Senden eines SAP-Bildschirmbildes
das Senden einer Dialognachricht
der Aufruf eines RFC (Remote Function Call)
evtl. mittelbar durch Bildwechsel nach einem Aufruf per CALL TRANSACTION <t_code>
oder SUBMIT <program>.
 SAP AG
12
DB-Änderungen einer SAP-LUW bündeln
SAP-LUW
Benutzerdialoge
ABAPProgramm
DB-Änderungen
DB- LUW
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
13
❏ Die Abbildung einer betriebswirtschaftlichen Prozeßkette mit Hilfe einer SAP-LUW umfaßt sowohl
Benutzerdialoge als auch die Änderungen aus einem Datenbankdialog. Ziel einer Transaktion ist es,
die Informationen, die während des Benutzerdialogs der SAP-LUW ausgetauscht werden, in
unteilbarer Form auf der Datenbank abzubilden. Dazu muß eine SAP-LUW auf eine DatenbankLUW abgebildet werden.
❏ Da sich eine SAP-LUW i.A. über mehrere DB-LUWs erstreckt, ergibt sich für die Programmierung
einer Transaktion das Ziel, die Anteile des Datenbankdialogs in einer DB-LUW zu bündeln.
 SAP AG
13
Bündelung: verzögerte Inline-Änderungen
SAP-LUW
Globale Daten des Programms
Daten
Daten
Verarb.
block 1
Verarb.
block 2
Daten
...
Letzter
Dialogschritt
Änderungsanforderungen
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
DB-Commit
14
❏ Sollen Benutzerdialog und Datenbankänderungen im Wechsel stattfinden, müssen Sie den Anteil,
der die Datenbankänderungen beinhaltet, auf einen Dialogschritt (i.A. der letze Dialogschritt)
beschränken. Nur damit ist die Durchführung der Datenbankänderungen als ganzes (Alles-oderNichts-Prinzip) gewährleistet. Hierzu müssen Sie die auf der Datenbank zu ändernden Daten bis zur
Datenbankänderung in den globalen Programmdaten speichern.
❏ Das Ende der SAP-LUW kann ausgelöst werden durch:
das Programmende
oder programmgesteuert durch die ABAP-Anweisungen: LEAVE PROGRAM oder COMMIT
WORK..
❏ Beachten Sie, daß falls Ihr Programm mit dem logischen Sperrkonzept der SAP arbeitet, Sie die
Sperreinträge programmgesteuert löschen müssen. Hierzu können Sie den Funktionsbaustein
DEQUEUE_ALL verwenden.
 SAP AG
14
Bündelung mit Hilfe von Unterprogrammen
SAP-LUW 1
Globale Daten des Programms
Daten
Daten
PERFORM x
ON COMMIT.
PERFORM y
ON COMMIT.
Daten
...
Ausführungsliste
Formroutine x
Formroutine y
...
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
COMMIT
WORK.
FORM x ...
FORM y ...
...
DB-Commit
Änderungen
15
❏ Die Bündelung von Datenbankänderungen in einer Datenbank-LUW wird vom System durch die
Anweisung PERFORM <program> ON COMMIT unterstützt.
❏ Die Anweisung PERFORM <subroutine> ON COMMIT registriert das aufgerufene Unterprogramm
zur Ausführung. Die Ausführung wird zurückgehalten, bis das System auf die nächste COMMIT
WORK Anweisung trifft. Damit lassen sich die direkten Datenbankänderungen in den
Unterprogrammen von der Programmlogik trennen und an das Ende der SAP-LUW verlagern.
❏ Die Anweisung COMMIT WORK führt alle zur Ausführung registrierten Unterprogramme
nacheinander aus, löst dann einen Datenbank-Commit aus ( beendet die DB-LUW) und beendet die
aktuelle SAP-LUW. Ist das Programm mit dem COMMIT WORK noch nicht zu Ende, eröffnet die
Anweisung automatisch eine neue SAP-LUW.
❏ Die Unterprogramme, die mit dem Zusatz ON COMMIT aufgerufen werden, besitzen im Gegensatz
zu gewöhnlichen Unterprogrammen keine Schnittstelle. Sie arbeiten mit globalen Daten, d.h. mit
den Werten der Variablen zum Zeitpunkt der tatsächlichen Ausführung des Unterprogramms.
 SAP AG
15
Bündelung durch Verbuchung: Prinzip
Protokolltabelle
1
Vormerkung 1
...
Vormerkung n
Einträge
löschen
2
Daten
Daten lesen
Workprozeß 1
Workprozeß 2
4
Dialogprogramm
• asynchron
• synchron
• lokal
Verbuchungsprogramm
3
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
DatenbankÄnderungen
16
Zeit
❏ Transaktionen, die mit einer Verbuchungstechnik arbeiten, bestehen aus zwei Programmen: einem
Dialogprogramm und einem Verbuchungsprogramm. Das Dialogprogramm führt den
Benutzerdialog (Hintergrundverarbeitung ist ebenfalls möglich), das Verbuchungsprogramm führt die
Datenbankänderungen durch.
❏ Der Verarbeitungsablauf bei der Verbuchung erfolgt in 4 Schritten:
– 1. Das Dialogprogramm schreibt die für die Datenbankänderungen benötigten Informationen
in eine Protokolltabelle.
– 2. Das Verbuchungsprogramm wird gestartet und liest die Informationen aus der
Protokolltabelle.
– 3. Das Verbuchungsprogramm führt die Datenbankänderungen durch.
– 4. Für den Fall, daß die Datenbankänderungen erfolgreich verlaufen sind, löscht der
Workprozeß, in dem das Verbuchungsprogramm läuft, im letzten Verarbeitungsschritt die
zugehörigen Einträge aus der Protokolltabelle. Für den Fall, daß bei den
Datenbankänderungen ein Fehler aufgetreten ist, werden die Einträge in der Protokolldatei
als fehlerhaft gekennzeichnet und der Anwender über den Abbruch der Verbuchung per Mail
unterrichtet. (Das Versenden der Mail ist über den Parameter rdisp/vb_mail einstellbar.)
❏ Durch den Einsatz spezieller Techniken kann das Verbuchungsprogramm zeitlich entkoppelt vom
Dialogprogramm (asynchrone Verbuchung) oder unmittelbar nach dem Dialogprogramm
(synchrone und lokale Verbuchung) ausgeführt werden.
 SAP AG
16
Rollback im Dialogprogramm
PROGRAM ...
MODULE user_command INPUT.
...
CASE save_ok.
WHEN ’BACK’.
.
.
.
MESSAGE Axxx.
*
ROLLBACK WORK.
.
WHEN ’SAVE’.
.
.
.
COMMIT WORK.
ENDCASE.
...
ENDMODULE.
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
Löschen aller bis
dahin geschriebenen
Vormerkungen
17
❏ Im Laufe eines viele Schritte umfassenden Dialogs können Sie eine Fülle von
Änderungsvormerkungen sammeln, die Sie dann durch ein explizites COMMIT WORK ausführen
lassen.
❏ Es kann jedoch auch nötig sein, alle Änderungsvormerkungen der aktuellen SAP-LUW durch
ROLLBACK WORK zu löschen.
❏ Die ABAP-Anweisung ROLLBACK WORK führt folgende Aktionen durch:
Löschen aller mit PERFORM
<subroutine> ON COMMIT registrierten Formroutinen
Löschen aller Änderungsvormerkungen in der Protokolldatei
Auslösen eines Rollbacks auf der Datenbank mit anschließendem Datenbank-Commit
Beginn einer neuen SAP-LUW
❏ Bezogen auf bereits im Dialog vollzogene Datenbankänderungen bedeutet die ROLLBACK WORK
Anweisung: Alle Änderungen der aktuellen DB-LUW werden rückgängig gemacht.
❏ Die Anweisung ROLLBACK WORK beendet das Dialogprogramm nicht Daher sollten Sie sie nicht
direkt verwenden, sondern einen impliziten Rollback durch Ausgeben einer AbbruchDialognachricht auslösen. Damit ist gewährleistet, daß auch alle im Programm gesammelten Daten
beim Abbruch zurückgesetzt werden.
 SAP AG
17
Rollback im Verbuchungsprogramm
FUNCTION-POOL ...
...
FUNCTION ...
...
UPDATE ...
IF sy-subrc NE
MESSAGE Annn
ENDIF.
...
INSERT ...
IF sy-subrc NE
MESSAGE Annn
ENDIF.
...
ENDFUNCTION.
0.
...
ROLLBACK WORK
Impliziter Rollback
auf der Datenbank
0.
...
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
18
❏ Aufgabe eines Verbuchungsfunktionsbausteins ist es, die Änderungsanforderungen an die
Datenbank zu geben und deren Rückmeldungen (Returncodes) auszuwerten.
❏ Konnte die Datenbank die Änderung nicht erfolgreich durchführen, muß im
Verbuchungsfunktionsbaustein darauf reagiert werden.
❏ Wollen Sie in der Verbuchung einen Datenbank-Rollback auslösen, geben Sie eine AbbruchDialognachricht aus. Diese bewirkt einen Datenbank-Rollback.
❏ Der Datenbank-Rollback beendet die Verbuchung. Der zur SAP-LUW gehörende Protokollsatz wird
als fehlerhaft gekennzeichnet und die Abbruch-Dialognachricht selbst wird in den Protokollsatz
eingetragen.
❏ Der Benutzer wird über ein Expreß-Mail benachrichtigt, daß die Verbuchung abgebrochen wurde.
Der Protokollsatz kann anschließend analysiert werden (siehe Monitorfunktion Verbuchung:
Transaktion SM13).
❏ Die expliziten ABAP-Anweisungen COMMIT WORK und ROLLBACK WORK dürfen Sie im
Verbuchungsfunktionsbaustein nicht verwenden.
 SAP AG
18
Anweisungen für Datenbankdialoge
Native-SQL
Open-SQL
SELECT
INSERT
UPDATE
DELETE
MODIFY
...
...
...
...
...
EXEC SQL.
CREATE TABLE ...
ENDEXEC.
. . .
Vorteile/Nachteile
Vorteile/Nachteile
- unabhängig von Datenbank
- Möglichkeit mit Puffern zu
arbeiten
- Einbettung in ABAP
- datenbankspezifisch
- nicht bei gepufferten
Tabellen
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
19
❏ Für Datenbankdialoge stehen Ihnen im SAP-System sowohl die Befehle aus dem OPEN-SQL des
ABAP als auch der jeweilige datenbankspezifische Befehlssatz des Native-SQL zur Verfügung.
❏ Die Verwendung der Befehle aus dem OPEN-SQL hat die Vorteile der Integration in das Konzept
der Programmiersprache ABAP (Schleifenverarbeitung mit der SELECT-Leseschleife, Teilnahme an
den Pufferungsstrategien der SAP-Applikationsserver) sowie der Plattformunabhängigkeit. Ein
Nachteil des OPEN-SQL besteht darin, daß u.U. nicht der volle Funktionsumfang der Datenbank
genutzt wird.
❏ Die Verwendung von Native-SQL-Befehlen bietet den Vorteil, den vollständigen Befehlssatz der
jeweiligen Datenbank einsetzen zu können. Dieser ist i.a. größer als der datenbankunabhängige
Befehlssatz des OPEN-SQL.
❏ Native-SQL-Befehle durchlaufen bei Ihrer Ausführung nicht die Datenbankschnittstelle des R/3Systems. Daher finden Lese- oder Veränderungszugriffe auf die Datenbank immer ohne Beachtung
der Tabellenpuffer des R/3-Systems statt. Somit dürfen Native-SQL-Befehle nicht bei gepufferten
Tabellen eingesetzt werden, da sonst die Gefahr besteht, sich Inkonsistenzen zwischen
Datenbanktabelle und Pufferinhalt auf der Datenbank einzuhandeln.
 SAP AG
19
Asynchrone Verbuchung
Zeit
VBLOG
DialogWP
Verbuchungs-WP
Text
Protokolltabelle
Vormerkung 1
1
...
COMMIT WORK.
3
Vormerkung n
2
1 SAP-LUW 1, Dialogprogramm
DB
2 SAP-LUW 1, Verbuchungsprogramm
3 SAP-LUW 2, Dialogprogramm
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
20
❏ Bei der asynchronen Verbuchung sind Dialogprogramm und Verbuchungsprogramm zeitlich
entkoppelt.
Das Dialogprogramm schreibt die Änderungsvormerkungen in die Protokolltabelle VBLOG
auf der Datenbank.
Sie schließen den Dialogteil der SAP-LUW im Dialogprogramm mit der Anweisung
COMMIT WORK ab. Im Dialogprogramm startet sofort eine neue SAP-LUW, deren
Benutzerdialoge sofort durchgeführt werden können, d.h. das Dialogprogramm arbeitet ohne
Unterbrechung weiter. Es wird nicht auf die Ausführung des Verbuchungsprogramms
gewartet.
Das Verbuchungsprogramm wird in einem speziellen Verbuchungsworkprozeß, der sich
auf einem anderen Server des R/3-Systems befinden kann, asynchron ausgeführt.
Die im Dialogprogramm begonnene SAP-LUW wird in dem Verbuchungsprogramm
fortgeführt und abgeschlossen.
❏ Die Protokolltabelle VBLOG kann in Ihrem System in Abhängigkeit von der Datenbank als
Clusterdatei realisiert, oder durch die transparenten Tabellen VBHDR, VBMOD, VBDATA und
VBERROR ersetzt sein.
❏ Die asynchrone Verbuchung eignet sich für Transaktionen, bei denen die Datenbankänderungen
lange Antwortzeiten verursachen würde, die Performance des Benutzerdialogs jedoch im
Vordergrund steht.
 SAP AG
20
Synchrone Verbuchung
Zeit
DialogWP
VBLOG
Verbuchungs-WP
Text
Protokolltabelle
Vormerkung 1
1
...
COMMIT WORK
AND WAIT.
Vormerkung n
2
3
DB
1 SAP-LUW 1, Dialogprogramm
2 SAP-LUW 1, Verbuchungsprogramm
3 SAP-LUW 2, Dialogprogramm
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
21
❏ Bei der synchronen Verbuchung wartet das Dialogprogramm auf das Ende des
Verbuchungsprogramms. Erst wenn das Verbuchungsprogramm beendet ist, startet das
Dialogprogramm mit der Verarbeitung der zweiten SAP-LUW.
❏ Das Umschalten von der asynchronen auf die synchrone Verbuchung geschieht durch den Zusatz
AND WAIT bei der Anweisung COMMIT WORK.
 SAP AG
21
Lokale Verbuchung
Zeit
Workprozeß
Hauptspeicher
Protokolltabelle
SET UPDATE
TASK LOCAL.
Vormerkung 1
...
1
Vormerkung n
COMMIT WORK.
2
3
DB
1 SAP-LUW 1, Dialogprogramm
2 SAP-LUW 1, Verbuchungsprogramm
3 SAP-LUW 2, Dialogprogramm
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
22
❏ Bei der lokalen Verbuchung wird das Verbuchungsprogramm mit dem Dialog-Workprozeß
ausgeführt, in dem sich das Dialogprogramm vor dem COMMIT WORK befindet.
❏ Dazu muß im Dialogprogramm vor dem Aufruf der Verbuchungsfunktionsbausteine, die lokal
ausgeführt werden sollen, mit der Anweisung SET UPDATE TASK LOCAL auf lokale Verbuchung
umgeschaltet werden. Die Änderungsvormerkungen werden dann nicht mehr in die
Datenbanktabelle VBLOG geschrieben, sondern im Hauptspeicher gehalten.
❏ Beim Prozessieren des ABAP-Befehls COMMIT WORK werden die zugehörigen
Verbuchungsfunktionsbausteine im aktuell durch das Dialogprogramm belegten Dialog-Workprozeß
ausgeführt. Ein Datenbank-Commit wird erst nach erfolgreicher Abarbeitung aller
Verbuchungsfunktionsbausteine durchgeführt. Im Fehlerfall wird ein Datenbank-Rollback ausgelöst.
❏ Nach Abarbeitung der Verbuchungsfunktionsbausteine wird das Dialogprogramm mit einer neuen
SAP-LUW fortgesetzt.
 SAP AG
22
SAP-LUW: Zeitlicher Verlauf bei Verbuchung
synchron
Zeit
Dialog
Verbuchung
asynchron
Dialog
1
Verbuchung
1
COMMIT WORK
AND WAIT.
Dialog
SET UPDATE
TASK LOCAL.
1
COMMIT WORK.
COMMIT WORK.
2
3
2
2
lokal
3
3
1 SAP-LUW 1, Dialogprogramm
2 SAP-LUW 1, Verbuchungsprogramm
3 SAP-LUW 2, Dialogprogramm
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
23
❏ Die Verwendung der asynchronen Verbuchung bietet sich bei Transaktionen an, bei denen der
weitere Benutzerdialog nicht auf das Ergebnis der Datenbankänderungen warten muß. Nach Aufruf
der Verbuchung geht die Kontrolle sofort wieder an den Benutzer über..
❏ Die synchrone Verbuchung empfielt sich für Transaktionen, die die Vorteile einer
Verbuchungstechnik (Protokollierung, Möglichkeit zur Nachverbuchung) nutzen wollen, aber die
weitere Bearbeitung des Dialogteils von den Ergebnissen des Verbuchungsteils abhängen. Eine
wichtige Anwendung besteht in dem Anlegen von sog. Rahmentransaktionen, die bestehende
Transaktionen als Modularisierungseinheiten programmgesteuert hintereinander ausführen. Bei der
programmgesteuerten ausführung von Transaktionen (CALL TRANSACTION <t_code>) kann
beim Aufruf festgelegt werden, mit welcher Verbuchungstechnik die Transaktion ablaufen soll.
❏ Die lokale Verbuchung eignet sich besonders für die Abarbeitung von Dialogtransaktionen im
Hintergrund.Bei dieser Ablaufart entfällt die Kommunikation mit der Datenbanktabelle VBLOG. Im
Fall, daß das Programm alleine auf dem Server abläuft, wird es bei lokaler Verbuchung schneller
ausgeführt als bei synchroner oder asynchroner Verbuchung. Im Fall meherer Benutzer auf dem
Server (Regelfall), hängt die Geschwindigkeit des Programms von der Gesamtbelastung des
Servers ab.
 SAP AG
23
Was passiert bei Commit Work ?
• Ausführung aller mit PERFORM ... ON COMMIT
registrierter Unterprogramme
• Schreiben des Verbuchungsheaders; Abschluß
der Verbuchungsvormerkungen
• Registrierung des Verbuchungspakets für die
Verbuchung
• Auslösen eines impliziten Datenbank-Commits
• Beenden des Dialogteils der alten und Eröffnen
einer neuen SAP-LUW
Im Regelfall werden Sperren an die Verbuchung
übergeben.
ABER: SAP-Sperren werden erst nach der
Verbuchung freigegeben!
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
24
❏ Der ABAP-Befehl COMMIT WORK löst eine Reihe von Verarbeitungen aus:
Zuerst werden alle Unterprogramme, die mit dem Zusatz ON COMMIT aufgerufen wurden,
ausgeführt.
Im zweiten Schritt werden die Änderungsvormerkungen, die bis zu diesem Zeitpunkt
erzeugt wurden, durch das Schreiben der HEADER-Informationen zum aktuellen
Verbuchungsschlüssel abgeschlossen.
Die durch den HEADER abgeschlossenen Einträge werden für die Verbuchung registriert.
Bei lokaler Verbuchung wird dieser Schritt durch das Ausführen der V1Verbuchungsfunktions-bausteine ersetzt.
Dann wird ein Datenbank-Commit durchgeführt.
Im letzten Schritt wird die alte SAP-LUW abgeschlossen und eine neue eröffnet.
❏ Beachten Sie bitte: Das Auslösen des Datenbank-Commits durch den Befehl COMMIT WORK
verbietet die Verwendung verschiedenartiger Bündelungstechniken. Insbesondere sollten direkte
Datenbankänderungen sowie die Verwendung von PERFORM <subroutine> ON COMMIT zur
Bündelung von Inline-Änderungen nicht mit Verbuchungstechniken zusammen eingesetzt werden.
Datenbankänderungen aus dem Dialogprogramm und aus dem Verbuchungsprogramm sind
zusammen nicht rollback-fähig.
❏ Der ABAP-Befehl COMMIT WORK gibt keine SAP-Sperren frei.
 SAP AG
24
Warum müssen Sperren gesetzt werden?
Programm B
Programm A
Tabelle 4
Tabelle 1
Tabelle 3
Tabelle 6
Tabelle 5
Tabelle 2
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
25
❏ Wenn mehrere Benutzer konkurrierend auf mindestens eine Ressource zugreifen, müssen sie sich
in geeigneter Weise synchronisieren, um die Konsistenz der Daten zu gewährleisten.
❏ Beispiel: In einem Flugbuchungssystem muß bei der Reservierung überprüft werden, ob noch Plätze
frei sind. Erst dann kann eine Reservierung vorgenommen werden. Für die Dauer eines
Reservierungs-Dialogprogramms muß garantiert sein, daß kein anderer Benutzer auf die kritischen
Daten zugreift (z.B. die Anzahl freier Plätze).
❏ Ein geeignetes Mittel, um konkurrierende Zugriffe auf Ressourcen zu koordinieren, sind Sperren.
Jeder Benutzer fordert eine Sperre an, bevor er auf kritische Daten zugreift.
❏ Damit andere Benutzer in ihrer Arbeit nicht unnötig behindert werden, ist es wichtig, Sperren nur so
lange wie nötig zu halten.
 SAP AG
25
Datenbanksperren
COMMIT
COMMIT
(implizit)
(implizit)
UPDATE
UPDATE
COMMIT
WORK
(explizit)
SELECT
SELECT
FOR
FOR UPD
UPD
INSERT
INSERT
DELETE
DELETE
Sperren
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
26
❏ Werden in einem Dialogprogramm Datenbankänderungsanweisungen direkt ausgeführt, so setzt
das Datenbanksystem entsprechende Sperren.
❏ Das Datenbankmanagementsystem (DBMS) sperrt zu ändernde Tabelleneinträge (INSERT
UPDATE, MODIFY) und mit Änderungsabsicht (SELECT SINGLE <f> FROM <dbtab> FOR
UPDATE) gelesene Tabellenzeilen physisch. D.h. andere Benutzer müssen für die Dauer der
physischen Sperre warten, bis die Sperren aufgehoben sind.
❏ Am Ende einer Datenbanktransaktion gibt das Datenbanksystem alle während der
Datenbanktransaktion gesetzten Sperren frei.
❏ Da vom SAP-System bei jedem Bildwechsel implizit eine Commit-Anforderung an das
Datenbanksystem ergeht, gelten die während eines Dialogschritts gesetzten Datenbanksperren
längstenfalls bis zum Ende dieses Dialogschritts.
 SAP AG
26
SAP Sperrkonzept
SAPGUI
SAPGUI
SAPGUI
SAPGUI
SAPGUI
SAPGUI
SAPGUI
Dispatcher
Dispatcher
Dialog
WP
.. .. ..
Dialog
WP
SAPGUI
Sperrtabelle
MessageServer
WP
.. .. .. Enqueue
WP
DB-Workprozesse
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
27
❏ Um Sperren auch über Bildwechsel sowie über Dialog- und Verbuchungsprogramm aufrecht
erhalten zu können gibt es auf Applikationsserverebene eine für das R/3-System globale
Sperrtabelle, mit der Tabelleneinträge logisch gesperrt werden können.
❏ Auf genau einem der Applikationsserver gibt es eine Sperrtabelle, sowie einen speziellen EnqueueWorkprozeß, der die Sperranforderungen für die Sperrtabelle administriert. Alle logischen
Sperranforderungen des R/3-Systems laufen über diesen Workprozeß.
❏ Mit Hilfe von logischen Sperren können auch Tabelleneinträge "gesperrt" werden, die auf der
Datenbank noch nicht existieren (Einfügen neuer Tabellenzeilen). Dies ist mit Hilfe von
Datenbanksperren nicht möglich.
 SAP AG
27
Logische Sperren setzen
Programm
Erzeuge Sperreintrag
Sperrtabelle
Antwort = Returncode
•Sperre erfolgreich gesetzt
•Sperre konnte nicht gesetzt
werden, da
- Objekt bereits gesperrt ist
- ein Systemfehler auftrat
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
28
❏ Sperren werden erzeugt, indem ein Eintrag in die Sperrtabelle geschrieben wird. Das geschieht mit
Hilfe von Funktionsbausteinen.
❏ Das Absetzen eines Sperreintrags gelingt nur, wenn für die betreffenden Tabellensätze bisher noch
keine Sperreinträge vorhanden sind.
❏ Auskunft über den Erfolg einer Sperranforderung bekommt die SAP-Transaktion über einen
Returncode.
❏ Durch Auswerten des Returncodes kann die SAP-Transaktion entsprechend reagieren.
❏ Möchte ein weiterer Benutzer mit einer SAP-Transaktion ebenfalls dieselben Tabellensätze
bearbeiten, kann er durch eine entsprechende Error-Message abgewiesen werden.
❏ Am Ende der Verarbeitung müssen bei Inline-Änderungen die Sperren durch das Dialogprogramm
explizit freigegeben werden. Im Falle der V1-Verbuchung werden die Sperren i.A. an den
Verbuchungsworkprozeß übergeben, in dem das Verbuchungsprogramm ausgeführt wird. Der
Verbuchungsworkprozeß löscht nach Abarbeitung des Verbuchungsprogramms alle ihm
übergebenen Sperreinträge automatisch.
❏ Bricht der Benutzer das Dialogprogramm ab, werden die Sperren automatisch (implizit) freigegeben
(Befehlsfeldeingabe /n, die Anweisungen LEAVE PROGRAM, LEAVE TO TRANSACTION, AMessage).
 SAP AG
28
Zusammenfassung
l SAP-Transaktionen
n Programme, die mit Hilfe des Konzeptes der SAP-LUW die
Daten, die während eines Benuzerdialoges ausgetauscht werden,
innerhalb einer Datenbank-LUW konsistent auf die Datenbank
abbilden.
l Bündelungstechnik
n Das SAP-System stellt mehrere Bündelungstechniken zur
Verfügung, mit deren Hilfe eine SAP-LUW auf eine DatenbankLUW abgebildet werden kann.
l SAP Sperrkonzept
n Zur Gewährleistung der Datenkonsistenz während der
Datenbankänderungen
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
29
29
Aufruf einer Transaktion
Programm 1
Programm 1: Transaktion TCGB
MODULE ... INPUT.
...
CALL TRANSACTION ’TCGB’.
* AND SKIP FIRST SCREEN.
...
ENDMODULE.
1. Dynpro
SAPMTCGB
2. Dynpro
F15
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
MODULE ... INPUT.
...
LEAVE PROGRAM.
...
ENDMODULE.
30
❏ Mit der Anweisung CALL TRANSACTION <t_code> können Sie ABAP-Programme, die einen
Transaktionscode <t_code> besitzen, ausführen. Nach Beendigung des gerufenen Programms
wird die Verarbeitung des rufenden Programms fortgesetzt.
❏ Falls die mit CALL TRANSACTION <t_code> gerufene Transaktion mit einer Verbuchungstechnik
arbeitet, können sie über den Parameter FUNCTION beim Aufruf steuern, mit welcher
Verbuchungstechnik (synchron oder asynchron) die Transaktion ablaufen soll.
❏ Durch die Anweisung LEAVE PROGRAM können Sie die Beendigung eines ABAP-Programms
erzwingen. Im Fall, daß diese Anweisung in einem Programm ausgeführt wird, das durch CALL
TRANSACTION <t_code> oder SUBMIT <program> AND RETURN aufgerufen wurde, wird das
rufende Programm fortgesetzt. Andernfalls kommen Sie in das Anwendungsmenü zurück, aus dem
das rufende Programm gestartet wurde.
❏ Mit der Anweisung LEAVE TO TRANSACTION <t_code> starten Sie die Transaktion mit dem
Transaktionscode <t_code>. Eine Rückkehr zur Aufrufstelle ist hierbei nicht möglich. Die
Anweisung entspricht der Befehlsfeld-Eingabe /n<t_code>.
 SAP AG
30
Synchrone Programmaufrufe:
Belegung des Hauptspeichers
Externer Modus 1
nach dem Aufruf
Externer Modus 1
Interner Modus 2
3
Programm 2
2
Interner Modus 1
Programm 1
1
Interner Modus 1’
3
4
Programm 3
Funktionsgruppe
1 CALL FUNCTION
3
LEAVE TO TRANSACTION
2 CALL TRANSACTION,
4
SUBMIT <p>
SUBMIT <p> AND RETURN
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
31
❏ Die unterschiedlichen Aufrufmöglichkeiten für Programme (ABAP-Programme mit und ohne
Transaktionscode) oder Programmteile (Funktionsbausteine) unterscheiden sich hinsichtlich der
Programmkontexte, die sie im Hauptspeicher erzeugen. Einzelheiten zu Programmkontexten finden
Sie im Anhang.
❏ Die Aufteilung des Hauptspeichers aus Sicht von ausführbaren Programmen läßt sich in einem
logischen Speichermodell erklären. Hierin sind Externe Modi und Interne Modi zu unterscheiden.
Ein Externer Modus ist i.d.R. an ein R/3-Fenster gebunden. Er kann durch den Menüeintrag System
/ Neuer Modus oder durch den Aufruf /o<t_code> erzeugt werden. Innerhalb eines Externen Modus
finden weitere Unterteilungen in sog. Interne Modi statt. Die Daten eines Programms sind nur
innerhalb eines Internen Modus sichtbar. Ein Externer Modus kann in bis zu 20 Interne Modi
unterteilt werden (Stapel).
❏ Programme, die mit CALL TRANSACTION <t_code>, SUBMIT <program> AND RETURN
aufgerufen werden, laufen in je einem internen Modus zum gleichen externen Modus, in dem auch
das rufende Programm lauft. Die Daten des rufenden Programms sind im gerufenen Programm
nicht sichtbar (und umgekehrt).
❏ Funktionsbausteine laufen im gleichen internen Modus ab, wie das rufende Programm.
Tabellenarbeitsbereiche werden in der Funktionsgruppe doppelt gehalten.
❏ Programme, die mit SUBMIT <program> oder LEAVE TO TRANSACTION <t_code> gerufen
werden, werden in einem neuen internen Modus zum gleichen externen Modus ausgeführt. Das
rufende Programm wird beendet. Einzelheiten hierzu finden Sie im Anhang.
 SAP AG
31
Synchrone Programmaufrufe: SAP-LUWs
Art des Aufrufs
- SUBMIT <prog2>.
- LEAVE TO TRANSACTION
<t_code>.
- SUBMIT <prog2> AND
RETURN.
- CALL TRANSACTION
<t_code>.
- CALL FUNCTION
<f_name>.
Beteiligte SAP-LUWs
SAP-LUW1
SAP-LUW2
Programm 1
prog2 / t_code
SAP-LUW1
SAP-LUW2
SAP-LUW1
Programm 1
prog2 / t_code
Programm 1
Zeit
Zeit
SAP-LUW1
Programm 1
f_name
Programm 1
Zeit
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
32
❏ Programme, die mit den Anweisungen SUBMIT <program>, LEAVE TO TRANSACTION
<t_code>, SUBMIT <program> AND RETURN oder CALL TRANSACTION <t_code>
aufgerufen werden, laufen in einer eigenen SAP-LUW (Verbuchungsaufträge bekommen einen
eigenen Verbuchungsschlüssel!).
❏ Bei SUBMIT <program>. und LEAVE TO TRANSACTION <t_code> wird die SAP-LUW des
rufenden Programms beendet. Falls Sie vor dem Programmaufruf keine Anweisung COMMIT WORK
prozessiert haben, stehen die Verbuchungsaufträge des rufenden Programms unabgeschlossen in
der Protokolltabelle. Sie können nicht mehr ausgeführt werden. Gleiches gilt für Inline-Änderungen ,
die mit Hilfe der Technik PERFORM ... ON COMMIT durchgeführt werden sollten. Daten, die durch
Inline-Änderungen auf die Datenbank geschrieben wurden werden beim nächsten Bildwechsel
kommitiert.
❏ Falls Sie die Verarbeitung eines neuen Programms per SUBMIT <program> AND RETURN oder
CALL TRANSACTION <t_code> in die Verarbeitung des aktuellen Programms einschieben, wird
die SAP-LUW des rufenden Programms nach Beendigung des gerufenen Programms fortgesetzt.
Die LUW-Verarbeitungen von rufendem und gerufenen Programm sind unabhängig voneinander.
D.h. Inline-Änderungen werden jeweils beim nächsten Bildwechsel kommitiert, Verbuchungsaufträge
und Aufrufe mittels PERFORM ... ON COMMIT benötigen jeweils eine eigenständige Anweisung
COMMIT WORK in der SAP-LUW, in der sie ablaufen.
❏ Funktionsbausteine laufen in der gleichen SAP-LUW wie das sie rufende Programm.
 SAP AG
32
Asynchrone Aufrufe
Hauptspeicher
Hauptspeicher
Modus 1
Modus 2
1
CALL FUNCTION <f_name>
STARTING NEW TASK ’<name>’
...
1
2
1
Programm 1
2
Funktionsbaustein <f_name>
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
33
❏ Funktionsbausteine können nicht nur synchron, sondern auch asynchron ausgeführt werden. Hierzu
muß der Aufruf des Funktionsbausteins durch den Zusatz STARTING NEW TASK '<name>'
erweitert werden. '<name>' ist hierbei ein symbolischer Name, mit dem der externe Modus, in dem
das gerufene Programm ausgeführt wird, im rufenden Programm identifiziert werden kann.
❏ Funktionsbausteine, die mit dem Zusatz STARTING NEW TASK '<name>' aufgerufen werden,
werden unabhängig vom rufenden Programm ausgeführt. Die Verarbeitung des rufenden
Programms wird nicht unterbrochen.
❏ Funktionsbausteine, die lokal asynchron aufrufbar sein sollen, müssen als Remote aufrufbar
gekennzeichnet werden (Ablaufart: Remote Function Call unterstützt).
❏ Funktionsbausteine, die mit dem Zusatz STARTING NEW TASK gerufen werden, können über den
weiteren Zusatz DESTINATION '<dest>' auch in anderen R/3-Systemen ausgeführt werden.
Einzelheiten hierzu siehe im Abschnitt "Programmaufrufe über RFC".
 SAP AG
33
Asynchrone Programmaufrufe
CALL FUNCTION <f_name>
STARTING NEW TASK ’<name>’
EXPORTING
...
Externer Modus 2
Externer Modus 1
Interner Modus 1
Programm 1
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
Interner Modus 1
zeitlich
entkoppelt
Funktionsgruppe
34
❏ Funktionsbausteine, die mit dem Zusatz STARTING NEW TASK ’<name>’ aufgerufen werden,
werden in einem vom rufenden Programm verschiedenen externen Modus ausgeführt. Ihre weitere
Ausführung ist sowohl zeitlich als auch kausal unabhängig von dem rufenden Programm. Der
gerufene Funktionsbaustein wird in einem weiteren freien Workprozeß gestartet. Die Lebensdauer
des gerufenen Funktionsbausteins ist unabhängig von der des rufenden Programms. Das rufende
Programm wird nach der Ausführung des Aufrufs unabhängig vom aufgerufenen Programm weiter
fortgesetzt.
❏ Der Parameter '<name>' enthält einen frei wählbaren symbolischen Namen für den gerufen
externen Modus. Bei lokalen Aufrufen können Sie den symbolischen Namen ' '(Leerzeichen)
verwenden.
❏ Funktionsbausteine, die asynchron aufgerufen werden, geben keine Werte über die Schnittstelle des
Funktionsbausteins zurück.
 SAP AG
34
Datenübergabe: Überblick
SAP-Memory
SET- /GET-Parameter
3
ABAP-Memory
2
Programm A
Schnittstelle
1
Programm B
4
DB
5
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
35
❏ Es gibt verschiedene Möglichkeiten Daten an Programme, die in verschiedenen
Programmkontexten (Interne Modi) ablaufen, zu übergeben. Sie können Daten über
1)die Schnittstelle des gerufenen Programms (Standard-Selektionsbild oder Schnittstelle
eines Unterprogramms, Funktionsbausteins oder von Dialogbausteinen)
2)das ABAP-Memory
3)das SAP-Memory
4)Datenbanktabellen oder
5)lokale Dateien auf Ihrem Präsentationsserver
– übergeben.
 SAP AG
35
Programm A
Daten
Datenübergabe über die ABAP/4 Schnittstelle
EXPORTING
IMPORTING
EXCEPTIONS
Schnittstelle Funktionsbaustein
FUNCTION xy.
...
ENDFUNCTION.
oder
Programm A
Daten
Selektionsbild
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
Programm B
36
❏ Funktionsbausteine besitzen eine Schnittstelle, über die das rufende und das gerufene Programm
Daten austauschen können (vergleichbares gilt für ABAP-Unterprogramme). Funktktionsbausteine,
die für RFC geeignet sind, besitzen Einschränkungen für ihre Schnittstelle.
❏ Sie können ABAP-Programmen, die ein Standard-Selektionsbild besitzen, beim Aufruf Werte für die
Eingabefelder auf dem Selektionsbild mitgeben. Hierfür gibt es zwei Möglichkeiten:
Sie verwenden beim Aufruf des gerufenen Programms eine Variante zum StandardSelektionsbild
Sie geben beim Aufruf des gerufenen Programms konkrete Werte für die Eingabefelder
mit.
 SAP AG
36
Asynchrone Programmaufrufe: SAP-LUWs
CALL FUNCTION <f-name>
STARTING NEW TASK ’’.
SAP-LUW1
Modus 1
Zeit
Programm 1
Programm 1
Zeit
Modus 2
Funktionsbaustein f-name
SAP-LUW2
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
37
❏ Funktionsbausteine, die asynchron mit Hilfe der Anweisung CALL FUNCTION <function>
STARTING NEW TASK ’ ’ aufgerufen werden, laufen in einer eigenen SAP-LUW.
 SAP AG
37
RFC-Szenario: R/3 - R/3
R/3-System A
R/3-System B
R/3-Applikations-Server
R/3-Applikations-Server
Workprozess
Workprozess
Funktionsgruppe
PROGRAM ...
RFC-CALL
Remote
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
Funktionsbaustein
38
❏ Wird ein Funktionsbaustein "remote" aufgerufen, so läuft er auf einem anderen Applikations-Server
in einem eigenen Workprozess ( in einer eigenen SAP-LUW ) ab.
❏ Es kann sich um einen Applikations-Server eines anderen R/3-Systems, eines R/2-Systems oder
eines externen Server-Programms handeln.
 SAP AG
38
Programm-Kontext der Remote-Funktion
R/3-Appl.-Server
Remote-Server
Funktionsgruppe
Globale Daten
PROGRAM ... .
...
FUNCTION FUNC1.
CALL FUNCTION ’FUNC1’
DESTINATION ’DEST’
...
...
DB-LUW1
ENDFUNCTION.
FUNCTION FUNC2.
CALL FUNCTION ’FUNC2’
DESTINATION ’DEST’
...
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
...
DB-LUW2
ENDFUNCTION.
39
❏ Die Verbindung zu einer Remote-Destination bleibt so lange bestehen, wie der Aufrufer-Kontext
aktiv ist. Die auf einer Remote-Destination angesprochenen Funktionsgruppen bleiben ( wie bei
einem lokalen Aufruf auch ) so lange aktiv, wie der Aufrufer selbst aktiv ist. Daher ist bei
aufeinanderfolgenden Aufrufen von Funktionsbausteinen derselben Funktionsgruppe jeweils der
Zugriff auf die globalen Daten der jeweiligen Funktionsgruppe möglich.
❏ Beim synchronen und asynchronen RFC bildet jeder Funktionsbaustein eine eigene DB-LUW ab (
Ausnahme: transaktionaler RFC ).
 SAP AG
39
Remote Function Call: Überblick
RFC-Techniken
sRFC: synchroner RFC
aRFC: asynchroner RFC
tRFC: transaktionaler RFC
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
40
❏ Funktionsbausteine, die in anderen R/3-Systemen ausgeführt werden sollen, können auf drei
verschiedene Arten ausgeführt werden:
synchron, sog. synchroner Remote Function Call (sRFC)
asynchron, sog. asynchroner Remote Function Call (aRFC)
mit transaktionaler Verarbeitungslogik, sog. transaktionaler Remote Function Call (tRFC).
 SAP AG
40
Ablaufschema: Synchroner RFC
PROGRAM ...
.
.
.
CALL FUNCTION ’TEST’
DESTINATION
’<dest>’
EXPORTING ...
Datenübergabe
R/3-System ’<dest>’
ABAP-Funktionsbaustein
FUNCTION TEST.
ENDFUNCTION.
.
.
.
Datenrückgabe
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
41
❏ Beim synchronen RFC hält die Verarbeitung im rufenden Programm so lange an, bis der gerufene
Funktionsbaustein abgearbeitet ist. Danach setzt der Aufrufer seine Verarbeitung hinter dem Aufruf
fort.
❏ Über die Schnittstelle können Daten in beiden Richtungen ausgetauscht werden.
❏ Der Zusatz DESTINATION ’<dest>’ enthält den symbolischen Namen des Systems, in dem der
Funktionsbaustein zur Ausführung gebracht werden soll.
 SAP AG
41
Ablaufschema: Asynchroner RFC
PROGRAM ...
.
Datenübergabe
.
.
CALL FUNCTION ’TEST’
DESTINATION ’<dest>’
STARTING NEW TASK ’<a>’
.
.
.
R/3-System ’DEST’
ABAP-Funktionsbaustein
FUNCTION TEST.
ENDFUNCTION.
Datenrückgabe
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
42
❏ Beim asynchronen RFC wird der gerufene Funktionsbaustein gestartet und sofort danach die
Verarbeitung im rufenden Programm fortgesetzt. Die Verarbeitung des Funktionsbausteins selbst
findet entkoppelt vom Aufrufer statt.
❏ Über die Schnittstelle können Daten in beiden Richtungen ausgetauscht werden.
 SAP AG
42
Ablaufschema: Transaktionaler RFC
PROGRAM ...
...
Logische Einheit
Starten
CALL FUNCTION ’TEST1’
IN BACKGROUND TASK
DESTINATION ’DEST’
...
CALL FUNCTION ’TEST2’
IN BACKGROUND TASK
DESTINATION ’DEST’.
Datenübergabe
FUNCTION TEST1.
ENDFUNCTION.
FUNCTION TEST2.
...
COMMIT WORK.
...
ENDFUNCTION.
Rückmeldungen:
Verwaltung- u. Monitoring
- Kein Verbindungsaufbau
möglich
- Anstarten der Einheit nicht
möglich
- Fehler während Ausführung
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
43
❏ Wenn Sie z.B. konsistente Datenbankänderungen in verschiedenen R/3-Systemen durchführen
wollen, können Sie hierfür die Technik des transaktionalen RFC verwenden. Über dieses Verfahren
kann sichergestellt werden, daß "remote" gerufene Funktionsbausteine auch dann abgearbeitet
werden, wenn zum Aufrufzeitpunkt der relevante Remote-Partner gerade nicht erreichbar ist.
Beispielsweise könnte die Verbindung zu dem Partner-System unterbrochen sein oder das PartnerSystem selbst zur Zeit nicht aktiv sein.
❏ Es stehen Mechanismen zur Verfügung, die eine geregelte Behandlung von Problemsituationen
( Verwaltung und Monitoring ) erlauben.
❏ Im Gegensatz zum synchronen und asynchronen RFC können Sie verschiedene
Funktionsbausteine für die Remote-Verarbeitung zu einer logischen Einheit ( SAP-LUW )
zusammenfassen ( Rollback auf die ganze Einheit ist möglich ).
 SAP AG
43
Transaktionaler RFC (tRFC)
Beispiel-Szenario:
Identische Datenbankänderung in verschiedenen R/3-Systemen
R/3-System B
R/3-System A
Anwendungs-Programm
Funktionsbaustein
Identische
DB-Änderung
DB
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
DB
44
❏ Wenn Sie z.B. konsistente Datenbankänderungen in verschiedenen R/3-Systemen durchführen
wollen, können Sie hierfür die Technik des transaktionalen RFC verwenden. Über dieses Verfahren
kann sichergestellt werden, daß Remote gerufene Funktionsbausteine auch dann abgearbeitet
werden, wenn zum Aufrufzeitpunkt der relevante Remote-Partner gerade nicht erreichbar ist.
Beispielsweise könnte die Verbindung zu dem Partner-System gerade unterbrochen sein oder das
Partner-System selbst ist gerade nicht aktiv.
❏ Desweiteren stehen in diesem Zusammenhang Mechanismen zur Verfügung, die eine geregelte
Behandlung von Problemsituationen, die sich während einer Remote-Verarbeitung zur Laufzeit
ergeben könnten, erlauben.
 SAP AG
44
tRFC: Eigenschaften
Job
Client
tRFC-Call 1
tRFC-Call 2
Aufruf
L
U
W
Server
Funktion 1
Rückkopplung
SM58
Funktion 2
L
U
W
- Partner-System muß zum Aufruf-Zeitpunkt nicht aktiv ( oder erreichbar ) sein
- Protokollierung des Ausführungs-Status im Client-System mit Verwaltungsfunktionalität
- Automatische Jobeinplanung für die spätere Wiederholung des Aufrufs bei
Nichterreichbarkeit des Partner-Systems
- LUW-Integrität: eine LUW auf der Client-Seite wird als LUW auf der Serverseite abgebildet
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
45
❏ tRFC-Aufrufe werden grundsätzlich erst einmal auf der Client-Seite in der Datenbank abgelegt (
übergebene Daten und Kontextinformationen ). Ein Systemprogramm startet im rufenden System
einen Funktionsbaustein asynchron, der seinerseits alle tRFC-Aufrufe synchron im Zielsystem
ausführt.
❏ Ist die direkte Ausführung nicht möglich, weil der Partner gerade nicht erreichbar ist, so wird dies auf
der Client-Seite protokolliert. tRFC-Aufrufe, die noch nicht erfolgreich abgearbeitet werden konnten,
sind über die Verwaltungstransaktion SM58 sichtbar und können hier z.B. interaktiv bearbeitet
werden. In diesem Zusammenhang besteht auch die Möglichkeit, über eine automatische
Jobeinplanung die Ausführung von tRFC-Aufrufen so lange anzustoßen, bis sie erfolgreich
abgearbeitet werden konnten.
❏ Konnte die Ausführung eines tRFC-Aufrufs im Partner-System zwar initiiert werden, aber während
der Abarbeitung im Server-System ergeben sich Fehler, so erfolgt eine Rückmeldung an das ClientSystem. Die Fehlerursache kann über die Transaktion SM58 analysiert und bearbeitet werden.
❏ tRFC-Aufrufe, die auf der Client-Seite eine SAP-LUW bilden, werden im Partner-System ebenfalls
als eine SAP-LUW abgebildet.
 SAP AG
45
SAP R/3 4.6A
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
46
46
R/3 Mandarin Version
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
47
47
24
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
48
48
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
49
49
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
50
50
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
51
51
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
52
52
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
53
53
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
54
54
CCMS Monitore des R/3 Systems
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
55
55
Aktuelle Entwicklungen
l Internet Integration
l Business Objects
l Object-oriented Development and Delivery
n
Java
n
C++
n
VB
n
...
l Systemkopplung durch ALE
l Business Warehouse
l Object Repository
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
56
56
Blockseminar Transaktionssysteme
Friedrich-Schiller-Universität Jena 1999:
Transaktionssystemeigenschaften
im SAP System R/3
Thomas Arend
SAP AG
 Thomas Arend SAP AG Jena‘99 June, 10. 1999
 SAP AG
57
57
Herunterladen