Ansicht
Dokumentation
ABAPCALL_TRANSACTION - CALL TRANSACTION
BAL_S_LOG - Application Log: Log header data PERFORM Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
CALL TRANSACTION
Einfacher Transaktionsaufruf
1. CALL TRANSACTION ta WITH$|WITHOUT AUTHORITY-CHECK $[AND SKIP FIRST SCREEN$].
Transaktionsaufruf über Batch-Input-Tabelle
2. CALL TRANSACTION ta WITH$|WITHOUT AUTHORITY-CHECK
USING bdc_tab ${ ${$[MODE mode$] $[UPDATE upd$]$}
$| $[OPTIONS FROM opt$] $}
$[MESSAGES INTO itab$].
Wirkung
Die Anweisung CALL TRANSACTION ruft die Transaktion auf, deren Transaktionscode in dem Datenobjekt ta enthalten ist. Das aufrufende Programm bleibt mit seinen Daten erhalten. Nach Beendigung des Transaktionsaufrufs wird die Programmausführung des aufrufenden Programms hinter der Anweisung CALL TRANSACTION fortgesetzt. Das Datenobjekt ta muss zeichenartig und flach sein und den Transaktionscode in Großbuchstaben enthalten. Es können folgende Angaben für ta unterschieden werden:
- Literal oder Konstante
- Wenn das Datenobjekt ta als Textfeldliteral oder als Konstante angegeben ist, wird es von Werkzeugen wie der erweiterten Programmprüfung oder dem Verwendungsnachweis wie eine statische Angabe ausgewertet.
- Variable
- Wenn das Datenobjekt ta als Variable angegeben ist, ist dies eine rein dynamische Angabe und es findet keine statische Auswertung des Inhalts statt.
Bei Ausführung der Anweisung wird ta in beiden Fällen erst zur Laufzeit ausgewertet. Falls die in ta angegebene Transaktion nicht gefunden wird, kommt es zu einer unbehandelbaren Ausnahme.
- In der ersten Variante kann die Anzeige des Einstiegs-Dynpros unterdrückt werden.
- In der zweiten Variante wird die Transaktion über eine Batch-Input-Tabelle gesteuert.
In beiden Varianten kann eine Berechtigungsprüfung für die aufgerufene Transaktion ausgeführt werden.
Beim Aufruf der Transaktion wird das ABAP-Programm, mit dem der Transaktionscode verknüpft ist, in einer neuen internen Sitzung der aktuellen Aufrufkette geladen. Der Modus des aufrufenden Programms und die aktuelle SAP-LUW bleiben erhalten. Das aufgerufene Programm läuft in einer eigenen SAP-LUW.
- Falls die aufgerufene Transaktion eine Dialogtransaktion ist, wird nach dem Laden des ABAP-Programms das Ereignis LOAD-OF-PROGRAM ausgelöst und dann das Dynpro aufgerufen, das als Einstiegs-Dynpro der Transaktion definiert ist. Das Einstiegs-Dynpro ist das erste Dynpro einer Dynpro-Folge. Die Transaktion ist beendet, wenn die Dynpro-Folge durch Erreichen des Folge-Dynpros mit der Dynpro-Nummer 0 beendet oder das Programm mit der Anweisung LEAVE PROGRAM verlassen wird.
- Falls die aufgerufene Transaktion eine OO-Transaktion ist, wird beim Laden aller Programme außer Class-Pools das Ereignis LOAD-OF-PROGRAM ausgelöst und dann die Methode aufgerufen, die mit dem Transaktionscode verknüpft ist. Falls die Methode eine Instanzmethode ist, wird implizit ein Objekt der zugehörigen Klasse erzeugt und vom Laufzeit-Framework referenziert. Die Transaktion ist beendet, wenn die Methode beendet oder das Programm mit der Anweisung LEAVE PROGRAM verlassen wird.
Hinweise
- CALL TRANSACTION beendet nicht die aktuelle Datenbank-LUW. Ein Datenbank-Commit oder Datenbank-Rollback im aufgerufenen Programm wirkt genauso wie im aktuellen Programm.
- Die Anweisung CALL TRANSACTION öffnet zwar eine neue SAP-LUW aber keine neue Datenbank-LUW. Dies bedeutet, dass ein Datenbank-Rollback in dieser SAP-LUW insbesondere auch alle Registrierungseinträge, die von den Anweisungen CALL FUNCTION IN UPDATE TASK oder CALL FUNCTION IN BACKGROUND TASK in den Tabellen VB... bzw. ARFCSSTATE und ARFCSDATA vorgenommen wurden, zurückrollen kann. Eine Anweisung ROLLBACK WORK im aufgerufenen Programm wirkt damit unter Umständen auch auf die unterbrochene SAP-LUW. Um dies zu verhindern muss vor dem Programmaufruf ein expliziter Datenbank-Commit ausgeführt werden. Bei der lokalen Verbuchung tritt das Problem nicht auf.
- Die Anzahl der internen Sitzungen einer
Aufrufkette ist auf neun begrenzt. Wird diese durch CALL TRANSACTION überschritten, wird das Programm abgebrochen und die gesamte Aufrufkette wird gelöscht. Siehe
Dynamische Aufrufe.
Beispiel
Aufruf der Transaktion DEMO_TRANSACTION im ausführbaren Beispielprogramm
DEMO_CALL_TRANSACTION_SPA_GPA.
Transaktionsaufruf - Beispiele
Ausnahmen
Behandelbare Ausnahmen
- Ursache: Keine Berechtigung für die aufgerufene Transaktion.
Laufzeitfehler: CALL_TRANSACTION_NO_AUTH
Unbehandelbare Ausnahmen
- Ursache: Transaktion wurde nicht gefunden.
Laufzeitfehler: CALL_TRANSACTION_NOT_FOUND
- Ursache: Transaktion ist ein Bereichsmenü und daher nicht aufrufbar.
Laufzeitfehler: CALL_TRANSACTION_IS_MENU
- Ursache: Transaktion ist gesperrt.
Laufzeitfehler: CALL_TRANSACTION_LOCKED
- Ursache: Fehler in der internen Speicherverwaltung
Laufzeitfehler: CALL_TRANSACTION_MSG_NO_PAGING
- Ursache: Rekursiver Aufruf einer Transaktion mit dem Zusatz USING.
Laufzeitfehler: CALL_TRANSACTION_USING_NESTED
ROGBILLS - Synchronize billing plans SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 10557 Date: 20240424 Time: 120840 sap01-206 ( 124 ms )