Ansicht
Dokumentation

ABAPCALL_FUNCTION_PARAMETER - CALL FUNCTION PARAMETER

ABAPCALL_FUNCTION_PARAMETER - CALL FUNCTION PARAMETER

Vendor Master (General Section)   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CALL FUNCTION, parameter_list

Kurzreferenz



... $[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.

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.

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 ohne den Zusatz RAISING gesendet werden.
  • 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 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.
  • 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 )