Ansicht
Dokumentation
ABAPCALL_FUNCTION_PARAMETER - CALL FUNCTION PARAMETER
Vendor Master (General Section) Fill RESBD Structure from EBP Component StructureDiese Dokumentation steht unter dem Copyright der SAP AG.
CALL FUNCTION, parameter_list
... $[EXPORTING p1 = a1 p2 = a2 ...$]
$[IMPORTING p1 = a1 p2 = a2 ...$]
$[TABLES t1 = itab1 t2 = itab2 ...$]
$[CHANGING p1 = a1 p2 = a2 ...$]
$[EXCEPTIONS $[exc1 = n1 exc2 = n2 ...$]
$[error_message = n_error$]
$[OTHERS = n_others$]$].
Zusätze:
1. ... EXPORTING p1 = a1 p2 = a2 ...
2. ... IMPORTING p1 = a1 p2 = a2 ...
3. ... TABLES t1 = itab1 t2 = itab2 ...
4. ... CHANGING p1 = a1 p2 = a2 ...
5. ... EXCEPTIONS exc1 = n1 exc2 = n2 ... OTHERS = n_others
6. ... EXCEPTIONS ... error_message = n_error ...
Wirkung
Bis auf den Zusatz EXCEPTIONS ordnen diese Zusätze den Formalparametern p1, p2, ... bzw. t1, t2, ... des aufgerufenen Funktionsbausteins die Aktualparameter a1, a2, ... zu. Als Aktualparameter können alle Datenobjekte und teilweise Ausdrücke angegeben werden, deren Datentyp zur Typisierung des entsprechenden Formalparameters passt. Mit Ausnahme der Angabe von Rechenausdrücken bei Eingabeparametern übernimmt jeder Formalparameter zum Zeitpunkt des Aufrufs sämtliche Eigenschaften des zugeordneten Aktualparameters. Der Zusatz EXCEPTIONS ermöglicht die Behandlung nicht-klassenbasierter Ausnahmen. Die Reihenfolge der Zusätze ist vorgeschrieben.
Bei einem falschen Formalparameter kommt es zu einer behandelbaren Ausnahme, wenn der Name des Funktionsbausteins durch eine Konstante oder als Zeichenliteral angegeben ist. Im Gegensatz zu Methodenaufrufen werden Formalparameter nicht von der Syntaxprüfung überprüft. Eine statische Überprüfung findet nur bei der erweiterten Programmprüfung statt. Wenn der Name des Funktionsbausteins durch eine Variable angegeben ist, wird die Angabe eines falschen Formalparameters zur Laufzeit ignoriert.
Hinweise
- Die Formalparameter und nicht-klassenbasierten Ausnahmen eines Funktionsbausteins werden als dessen Parameterschnittstelle im Function Builder definiert.
- Ein Systemfeld sollte
niemals als Aktualparameter verwendet werden.
Zusatz 1
... EXPORTING p1 = a1 p2 = a2 ...
Wirkung
Dieser Zusatz ordnet den Eingabeparametern des aufgerufenen Funktionsbausteins Aktualparameter zu. Mit EXPORTING können Aktualparameter den optionalen Eingabeparametern und müssen den nicht optionalen Eingabeparametern zugeordnet werden. Bei Referenzübergabe wird zum Zeitpunkt des Aufrufs eine Referenz auf einen Aktualparameter übergeben. Bei Wertübergabe wird der Inhalt eines Aktualparameters dem entsprechenden Formalparameters zugeordnet.
Bei a1, a2, ... handelt es sich um allgemeine Ausdruckspositionen, d.h. es können neben Datenobjekten auch Funktionen und Ausdrücke als Aktualparameter übergeben werden. In diesem Fall gelten spezielle Regeln.
Hinweise
- Auf einen hinter EXPORTING angegebenen Aktualparameter vom Typ string oder xstring ist kein Teilfeldzugriff möglich.
- Anders als beim Methodenaufruf kann bei der Angabe eines
Konstruktorausdrucks
keine generische Typangabe # gemacht werden, da die Typisierung der Parameter erst zur Laufzeit bestimmt wird..
Zusatz 2
... IMPORTING p1 = a1 p2 = a2 ...
Wirkung
Dieser Zusatz ordnet den Ausgabeparametern des aufgerufenen Funktionsbausteins Aktualparameter zu. Mit IMPORTING können allen Ausgabeparametern Aktualparameter zugeordnet werden müssen aber nicht. Bei Referenzübergabe wird zum Zeitpunkt des Aufrufs eine Referenz auf einen Aktualparameter übergeben. Bei Wertübergabe wird der Inhalt eines Ausgabeparameters nur bei fehlerfreier Beendigung des Funktionsbausteins dem jeweiligen Aktualparameter zugewiesen.
Hinweis
Anders als beim Methodenaufruf können keine
schreibbaren Ausdrücke und keine
Inline-Deklarationen angegeben werden.
Zusatz 3
... TABLES t1 = itab1 t2 = itab2 ...
Wirkung
Dieser Zusatz ordnet den Tabellenparametern
des aufgerufenen Funktionsbausteins Aktualparameter zu. Mit TABLES müssen allen nicht-optionalen
und können allen optionalen Tabellenparametern t1, t2, ... des Funktionsbausteins interne Tabellen itab1, itab2, ... zugeordnet werden. Für itab1, itab2, ... können nur
Standardtabellen angegeben werden. Die Übergabe erfolgt per Referenz
(ausgenommen RFC) . Falls eine angegebene Tabelle itab1, itab2, ... eine
Kopfzeile hat,
wird diese ebenfalls übergeben. Andernfalls ist die Kopfzeile des entsprechenden Tabellenparameters t1, t2, ... nach dem Aufruf initial.
Zusatz 4
... CHANGING p1 = a1 p2 = a2 ...
Wirkung
Dieser Zusatz ordnet den Ein-/Ausgabeparametern des aufgerufenen Funktionsbausteins Aktualparameter zu. Mit CHANGING können Aktualparameter den optionalen Ein-/Ausgabeparametern und müssen den nicht optionalen Ein-Ausgabeparametern zugeordnet werden. Bei Referenzübergabe wird zum Zeitpunkt des Aufrufs eine Referenz auf einen Aktualparameter übergeben. Bei Wertübergabe wird der Inhalt eines Aktualparameters dem relevanten Formalparameter zugeordnet und der modifizierte Inhalt eines Ein-/Ausgabeparameters wird nur bei fehlerfreien Beendigung des Funktionsbausteins dem relevanten Aktualparameter zugeordnet.
Hinweis
Anders als beim Methodenaufruf können keine
schreibbaren Ausdrücke angegeben werden.
Zusatz 5
... EXCEPTIONS exc1 = n1 exc2 = n2 ... OTHERS = n_others
Wirkung
Während der Programmausführung wird beim Aufruf eines Funktionsbausteins eine angegebene Ausnahme nicht überprüft. Nur die erweiterte Programmprüfung meldet es, wenn eine angegebene Ausnahme nicht in dessen Schnittstelle deklariert ist.
Hinweise
- Für den Zusatz EXCEPTIONS gibt es bei CALL FUNCTION noch eine obsolete Kurzform, in welcher die Angabe des Rückgabewerts = n hinter einer angegebenen Ausnahme auch weggelassen werden kann. Beim Auftreten der Ausnahme wird sy-subrc dann implizit der Wert 1 zugewiesen. Der Rückgabewert soll aber immer explizit angegeben werden.
- Die Zuordnung des Wertes 0 zu einer Ausnahme bedeutet, dass der Aufrufer diese Ausnahme ignorieren will. Wenn die Ausnahme im Funktionsbaustein auftritt, kommt es zwar nicht zu einem Laufzeitfehler, die Ausnahme kann aber auch nicht behandelt werden.
- Für das Verhalten klassenbasierter Ausnahmen in Funktionsbausteinen, siehe Klassenbasierte Ausnahmen in Prozeduren.
Zusatz 6
... EXCEPTIONS ... error_message = n_error ...
Wirkung
Mit der Angabe der vordefinierten Ausnahme error_message hinter EXCEPTIONS wird die Verarbeitung aller gesendeten Nachrichten während der Verarbeitung des Funktionsbausteins wie folgt:
- Nachrichten, die über die Anweisung MESSAGE RAISING gesendet werden, weil ihnen kein Rückgabewert zugeordnet ist.
- Nachrichten, die von der ABAP-Laufzeitumgebung gesendet werden.
In diesen Fällen ist die Nachrichtenverarbeitung wie folgt betroffen:
- Nachrichten vom Typ S, I, oder W werden nicht gesendet , bei der Hintergrundverarbeitung aber im Protokoll vermerkt .
- Nachrichten vom Typ E und A lösen die Ausnahme error_message aus und setzen sy-subrc auf n_error. Nachrichtenklasse, Nachrichtentyp, Nachrichtennummer und der Inhalt eventueller Platzhalter der MESSAGE-Anweisung stehen in den Feldern sy-msgid, sy-msgno, sy-msgty und sy-msgv1, ... sy-msgv4 zur Verfügung. Bei Nachrichten vom Typ A wird außerdem implizit die Anweisung ROLLBACK WORK ausgeführt. Zum Verhalten in der Hintergrundverarbeitung siehe Nachrichten in der Hintergrundverarbeitung.
- Nachrichten vom Typ X werden nicht beeinflusst. Sie führen wie immer zu einem Programmabbruch mit Kurzdump.
Hinweise
- Bei der Behandlung von Nachrichten mit der vordefinierten Ausnahme error_message spielt es keine Rolle, ob die Nachricht im aktuell aufgerufenen oder einem von diesem aufgerufenen Funktionsbaustein gesendet wurde. Im Gegensatz zu Ausnahmen, die mit der Anweisung RAISE ausgelöst werden, werden mit der Anweisung MESSAGE gesendete Nachrichten über Aufrufebenen hinweg propagiert.
- Es werden nur Nachrichten der aktuellen internen Sitzung behandelt. Nachrichten aus Programmen, die während der Verarbeitung des Funktionsbausteins aufgerufen werden, werden nicht behandelt.
- Für eine Anweisung MESSAGE RAISING innerhalb des gerufenen Funktionsbausteins kann es folgende Situationen geben:
- Wenn der hinter RAISING angegebenen Ausnahme ein Rückgabewert zugewiesen ist, wird die Ausnahme unabhängig von error_message behandelt und sy-subrc auf diesen Wert gesetzt.
- Wenn der hinter RAISING angegebenen Ausnahme kein Rückgabewert zugewiesen ist und error_message angegeben ist, wird die gesendete Nachricht wie oben angegeben beeinflusst.
- Wenn der hinter RAISING angegebenen Ausnahme kein Rückgabewert zugewiesen ist und error_message nicht angegeben ist, wird die Nachricht gemäß ihres Typs gesendet.
- Bei der Fortführung eines Programms nach dem Behandeln einer Nachricht vom Typ A ist zu beachten, dass ein vollständiger ROLLBACK WORK und nicht nur ein Datenbank-Rollback durchgeführt wurde.
- Da beim Abfangen einer Nachricht vom Typ A mit error_message die Anweisung ROLLBACK WORK ausgeführt wird, ist dies während der Verbuchung und der Verarbeitung von Unterprogrammen nach PERFORM ON COMMIT oder PERFORM ON ROLLBACK verboten und führt zu Laufzeitfehlern.
- Während der Ausführung von Programmen kann auch das ABAP-Laufzeit-Framework senden,
z.B. bei der automatischen Eingabeüberprüfung auf Dynpros. Solche Nachrichten werden mit error_message genauso abgefangen, wie Nachrichten, die mit MESSAGE gesendet werden.
Beispiel
Aufruf des Funktionsbausteins GUI_DOWNLOAD zum Speichern des Inhalts einer internen Tabelle in einer Datei auf dem aktuellen
Präsentationsserver.
Der Name des Funktionsbausteins ist als Zeichenliteral angegeben, was bei der statischen Parameterzuordnung die am häufigsten anzutreffende Art der Angabe ist.
BAL_S_LOG - Application Log: Log header data PERFORM Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 17974 Date: 20240427 Time: 004234 sap01-206 ( 241 ms )