Anfang des Inhaltsbereichs

Programme aufrufen Dokument im Navigationsbaum lokalisieren

Wenn eine umfangreiche Anwendung zu bearbeiten ist, kann ein einzelnes Programm sehr komplex werden. Um das Programm übersichtlicher zu gestalten, kann es sinnvoll sein die erforderlichen Funktionen über mehrere Programme zu verteilen.

Neben der Möglichkeit der externen Modularisierung von ABAP-Programmen, bei der Prozeduren in spezielle nichtstartbare ABAP-Programme wie z.B. Funktionsgruppen, ausgelagert werden, können auch vollständige startbare Programme aus ABAP-Programmen heraus aufgerufen werden.

Mit den folgenden ABAP-Anweisungen werden entweder ausführbare Programme oder Transaktionen aus ABAP-Programmen gestartet. Dabei kann das aufrufende Programm entweder vollständig beendet werden oder es wird nach Beendigung des aufgerufenen Programms hinter die Aufrufstelle zurückgekehrt.

 

Typ 1 - Programm

Transaktion

Aufruf ohne Rückkehr

SUBMIT

LEAVE TO TRANSACTION

Aufruf mit Rückkehr

SUBMIT AND RETURN

CALL TRANSACTION

Diese Anweisungen sind in jedem ABAP-Programm verwendbar. Beispielsweise kann man bei der Bearbeitung einer Benutzeraktionen auf der Ausgabeliste eines ausführbaren Programms gezielt eine Transaktion aufrufen, deren Startbildschirm mit Daten aus der ausgewählten Listenzeile gefüllt wird.

Bei jedem Aufruf eines Programms wird das Ereignis LOAD-OF-PROGRAM ausgelöst. Falls ein entsprechender Ereignisblock im Rahmenprogramm definiert ist, wird er einmalig vor der Ausführung des ersten anderen Verarbeitungsblocks ausgeführt.

An dieser Stelle ist es interessant zu bemerken, daß jede Ausführung eines ausführbaren Programms vom Typ 1 letztendlich auf die Anweisung SUBMIT zurückzuführen ist. Die Eingabe des Programmnamens auf dem Bildschirm einer Transaktion wie z.B. SE38 oder SA38 führt zur Anweisung SUBMIT im zugehörigen ABAP-Programm. Technisch gesehen sind Programme vom Typ 1 also auch durch die Eigenschaft durch SUBMIT aufrufbar zu sein klassifiziert, während aus Benutzersicht die Eingabe des Programmnamens für den Start im Vordergrund steht.

Speicherorganisation bei Programmaufrufen

Das erste ABAP-Programm in einem Modus des Applikationsservers öffnet einen eigenen internen Modus (Rollbereich) innerhalb des Hauptmodus. Alle extern aufgerufenen Prozeduren laufen im internen Modus des aufrufenden Programms. D.h. Rahmenprogramme und Arbeitsdaten werden mit in den Speicherbereich des internen Modus geladen.

Beim Aufruf startbarer Programme, also ausführbare Programme und Transaktionen, wird für jedes aufgerufene Programm ein weiterer interner Modus eröffnet. Dabei müssen wir zwei Fälle unterscheiden. Wenn nach der Ausführung des aufgerufenen Programms nicht in das vorherige Programm zurückgekehrt wird, ersetzt der interne Modus des aufgerufenen Programms den ersten internen Modus und dessen Speicherinhalt wird vollständig gelöscht. Wird aber in das aufrufende Programm zurückgekehrt, bleibt sein Modus während der Ausführung des aufgerufenen Programms erhalten. Er ist aber inaktiv und seine Speicherinhalte werden auf einem Stack abgelegt. Es können bis zu 9 weitere interne Modi durch externe Programmaufrufe geöffnet werden. Siehe auch Speicherstrukturen eines ABAP-Programms.

Außer beim Aufruf von ausführbaren Programmen und Transaktionen gibt es eine weitere Art von aufrufbaren Programmen, die einen eigenen internen Modus öffnen, nämlich Dialogbausteine. Dialogbausteine dienten früher der Modularisierung von Dynprofolgen.

Programmaufrufe und SAP-LUWs

Eine SAP-LUW ist eine logisch zusammenhängende Einheit von Dialogschritten, deren Änderungen innerhalb einer einzigen Datenbank-LUW ausgeführt werden. Die Zusammenfassung aller ändernden Datenbankzugriffe einer SAP-LUW in einer Datenbank-LUW erfolgt durch verschiedene Bündelungstechniken.

Alle extern aufgerufenen Prozeduren öffnen keine neue SAP-LUW.

Beim Aufruf von startbaren Programmen, also von ausführbaren Programmen und Transaktionen, wird dagegen eine neue SAP-LUW geöffnet. Die ändernden Datenbankzugriffe werden durch die Bündelungstechniken in einer eigenen Datenbank-LUW zusammengefaßt. Falls aus den aufgerufenen Programmen nicht in das aufrufende Programm zurückgekehrt wird, wird die vorhergehende SAP-LUW beim Programmaufruf abgeschlossen. Falls aus den aufgerufenen Programmen wieder in das aufrufende Programm zurückgekehrt wird, läuft die neue SAP-LUW parallel zur SAP-LUW des aufrufenden Programms.

Beim Aufruf von Dialogbausteinen wird keine neue SAP-LUW geöffnet. Die Bündelungstechniken fügen die ändernden Datenbankzugriffe der Datenbank-LUW des aufrufenden Programms zu. Manchmal soll beispielsweise eine Transaktion augerufen werden, die in der gleichen SAP-LUW laufen soll wie der Aufrufer. Eine mögliche Technik dafür ist, die existierende Transaktion so zu benutzen, als wäre sie ein Dialogbaustein. Hierfür muß aber ein neuer Dialogbaustein angelegt werden, dessen Hauptprogramm und Einstiegsbild mit der Transaktion übereinstimmt. Weiterhin muß die Programmierung von Transaktionen, die sowohl als Transaktionen, als auch als Dialogbausteine verwendet werden, bestimmten Regeln folgen. Mehr dazu unter Dynprofolgen aufrufen.

Die Tatsache, daß ein aufgerufenes Programm die SAP-LUW mit dem Aufrufer teilt oder nicht, hat spezielle Konsequenzen, falls das Programm Verbuchungs-Funktionen aufruft oder die Anweisung COMMIT WORK verwendet. Mehr dazu findet sich unter Spezielle Überlegungen zu LUWs.

Ende des Inhaltsbereichs