ABAPCALL_BADI - CALL BADI

BAL_S_LOG - Application Log: Log header data   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

CALL BADI

Kurzreferenz



Syntax

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 eineBAdI-Referenzvariable angegeben werden.

  • In der statischen Variante muss für badi eineBAdI-Referenzvariable vom statischen Typ einer konkretenBAdI-Klasse angegeben werden und für meth direkt eine BAdI-Methode des zugehörigenBAdIs.

  • In der dynamischen Variante muss für badi eineBAdI-Referenzvariablevom statischen Typ der abstrakten Oberklasse CL_BADI_BASE und für meth_name ein zeichenartigesDatenobjekt 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 eineInterfacereferenzvariable mit dem statischen Typ des betreffendenBAdI-Interfaces.Eine BAdI-Methode, die als Komponente des zugehörigen BAdI-Interfaces deklariert ist, wird direkt über ihren Namen angesprochen. BAdI-Methoden, die inKomponenten-Interfaces des BAdI-Interface deklariert sind, können über denInterfacekomponenten-Selektor oder eventuelleAliasnamen angesprochen werden.

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

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

  • Wenn das BAdI für die Einzelverwendung definiert ist, muss badi beim statischen BAdI-Aufruf eine gültigeBAdI-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ültigeBAdI-Referenzenthalten oder kann 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örigenBAdI-Implementierungenfestgelegt werden, wenn das vordefinierte BAdI BADI_SORTER des gleichnamigen Erweiterungsspots fürdas 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-Implementierungfehlen. In diesem Fall wird der Aufruf so ausgeführt, als wäre die Methode mit leererImplementierung vorhanden. Aktualparameter, die an per Wert übergebene EXPORTING- oderRETURNING-Parameter angebunden sind, werden initialisiert. Alle anderen Aktualparameter bleiben unverändert.

Systemfelder

Das Systemfeld sy-subrc wie beim normalen CALL METHOD 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.

  • In der Terminologie des Erweiterungskonzepts ist die Anweisung CALL BADI einErweiterungsspot-Elementaufruf

  • Der Aufruf einer BAdI-Methode eines für Einzelverwendung definierten BAdIs verhält sichwie ein Methodenaufruf mit CALL METHOD: die aufgerufene Methode muss vorhanden sein. Der Aufrufeiner BAdI-Methode eines für Mehrfachverwendung definierten BAdIs entspricht dagegen eher demAuslösen eines Ereignisses mit RAISE EVENT: Es können keine, eine oder mehrere Methoden vorhanden sein.


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 (abfangbar)





PERFORM Short Reference   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: 8765 Date: 20120526 Time: 232324     triton ( 258 ms )