ABAPCALL_BADI - CALL BADI
BAL_S_LOG - Application Log: Log header data General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
CALL BADI
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
- Ursache: Die Referenzvariable badi ist entweder beim statischen Aufruf, obwohl das BAdI für Einzelverwendung definiert ist, oder beim dynamischen Aufruf initial.
- 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 )






