Ansicht
Dokumentation

ABAPCALL_BADI - CALL BADI

ABAPCALL_BADI - CALL BADI

TXBHW - Original Tax Base Amount in Local Currency   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CALL BADI

Kurzreferenz



CALL BADI ${ badi->meth parameter_list $}
        $| ${ badi->(meth_name) ${parameter_list
                              $|parameter_tables$} $}.


Wirkung

Aufruf einer BAdI-Methode. Die Anweisung hat eine statische und eine dynamische Variante. In beiden Varianten muss für badi eine BAdI-Referenzvariable angegeben werden.

  • In der statischen Variante muss für badi eine BAdI-Referenzvariable vom statischen Typ einer konkreten BAdI-Klasse angegeben werden und für meth direkt eine BAdI-Methode des zugehörigen BAdIs.
  • In der dynamischen Variante muss für badi eine BAdI-Referenzvariable vom statischen Typ der abstrakten Oberklasse CL_BADI_BASE und für meth_name ein zeichenartiges Datenobjekt angegeben werden, das bei Ausführung der Anweisung den Namen einer BAdI-Methode in Großbuchstaben enthalten muss.

Bezüglich der Adressierung von BAdI-Methoden verhält sich die BAdI-Referenzvariable sowohl statisch wie dynamisch wie eine Interfacereferenzvariable mit dem statischen Typ des betreffenden BAdI-Interfaces. Eine BAdI-Methode, die als Komponente des zugehörigen BAdI-Interfaces deklariert ist, wird direkt über ihren Namen angesprochen. BAdI-Methoden, die in Komponenten-Interfaces des BAdI-Interface deklariert sind, können über den Interfacekomponenten-Selektor oder eventuelle Aliasnamen angesprochen werden.

Die Zusätze parameter_list bzw. parameter_tables ordnen den Formalparametern der BAdI-Methode Aktualparameter zu oder behandeln nicht-klassenbasierte Ausnahmen genau wie beim Methodenaufruf beschrieben. Auch die beim dynamischen Aufruf möglichen Ausnahmen entsprechen denen von CALL METHOD.

Die Anweisung CALL BADI bewirkt, dass die angegebene Methode in allen Objekt-Plugins, auf die das von badi referenzierte BAdI-Objekt verweist, aufgerufen wird.

  • Wenn das BAdI für die Einzelverwendung definiert ist, muss badi beim statischen BAdI-Aufruf eine gültige BAdI-Referenz enthalten. Wenn badi initial ist, kommt es zu einer behandelbaren Ausnahme.
  • Wenn das BAdI für die Mehrfachverwendung definiert ist, muss badi beim statischen BAdI-Aufruf eine gültige BAdI-Referenz enthalten oder darf initial sein. Wenn das referenzierte BAdI-Objekt auf mehrere Objekt-Plugins verweist, ist die Aufrufreihenfolge bei jeder Anweisung CALL BADI gleich. Die genaue Aufrufreihenfolge kann in der Definition der zugehörigen BAdI-Implementierungen festgelegt werden, wenn das vordefinierte BAdI BADI_SORTER des gleichnamigen Erweiterungsspots für das aktuelle BAdI implementiert wurde. Wenn das referenzierte BAdI-Objekt keine Objekt-Plugins referenziert oder badi initial ist, ist die Anweisung wirkungslos.
  • Beim dynamischen BAdI-Aufruf kommt es im Fall einer ungültigen BAdI-Referenz in badi immer zu einer behandelbaren Ausnahme.

Wenn ein BAdI nachträglich um eine Methode erweitert wurde, kann diese in einer BAdI-Implementierung fehlen. In diesem Fall wird der Aufruf so ausgeführt, als wäre die Methode mit leerer Implementierung vorhanden. Aktualparameter, die an per Wert übergebene EXPORTING- oder RETURNING-Parameter angebunden sind, werden initialisiert. Alle anderen Aktualparameter bleiben unverändert.

Systemfelder

Das Systemfeld sy-subrc wird beim normalen Methodenaufruf entweder auf 0 oder bei Behandlung einer nicht-klassenbasierten Ausnahme auf den hinter EXCEPTIONS angegebenen Wert gesetzt.

Hinweise

  • BAdI-Objekte und BAdI-Referenzen können ausschließlich mit der Anweisung GET BADI erzeugt werden.
  • Der Aufruf einer BAdI-Methode eines für Einzelverwendung definierten BAdIs verhält sich wie ein Methodenaufruf mit meth( ...): die aufgerufene Methode muss vorhanden sein. Der Aufruf einer BAdI-Methode eines für Mehrfachverwendung definierten BAdIs entspricht dagegen eher dem Auslösen eines Ereignisses mit RAISE EVENT: Es können keine, eine oder mehrere Methoden vorhanden sein.
  • Mit dem Zusatz DEFAULT kann bei der Definition einer BAdI-Methode in einem BAdI-Interface das Verhalten bei nicht implementierten Methoden gesteuert werden.

Ausnahmen

Behandelbare Ausnahmen

CX_BADI_INITIAL_REFERENCE

  • Ursache: Die Referenzvariable badi ist entweder beim statischen Aufruf, obwohl das BAdI für Einzelverwendung definiert ist, oder beim dynamischen Aufruf initial.

CX_SY_DYN_CALL_ILLEGAL_METHOD

  • Ursache: Methode ist beim dynamischen Aufruf nicht vorhanden
    Laufzeitfehler: DYN_CALL_METH_NOT_FOUND





PERFORM Short Reference   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8513 Date: 20240423 Time: 175850     sap01-206 ( 101 ms )