Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Mehrfach genutzte klassische BAdIs  Dokument im Navigationsbaum lokalisieren

Insgesamt lassen sich einfache und mehrfach genutzte Add-Ins unterscheiden. Die Unterscheidung bezieht sich auf den prozeduralen bzw. den Ereignischarakter einer Erweiterung. Beim ersten Typ erwartet das Programm, das die Erweiterung anbietet, in der Regel Rückgabewerte. Ein Beispiel hierfür wäre die Benefitberechnung im HR: Je nach Implementierung werden alternative Berechnungen durchgeführt. Beim zweiten Typ ist im Ablauf ein Ereignis eingetreten, das für andere Komponenten interessant sein könnte. Beliebig viele Komponenten könnten dieses Ereignis als "Aufhänger" für weitere Aktionen nehmen.

Hinweis

Neben Importing-Parametern können bei mehrfach genutzten Business Add-Ins auch Changing-Parameter verwendet werden. Da es bei Mehrfachimplementierungen von BAdIs keine Reiehnfolgesteuerung gibt, kann die Verwendung von Changing-Parametern sehr problematisch sein, da nicht sichergestellt ist, dass Implementierungen die Ergebnisse anderer Implementierungen nicht überschreiben. Eine Reihenfolgesteuerung ist technisch nicht realisierbar, da zum Zeitpunkt der Definition der Schnittstelle nicht bekannt ist, welche Implementierungen es geben wird und welche Parameter von Implementierungen geändert werden. Eine Entscheidung darüber, welche Implementierung vor welcher anderen (zukünftigen) Implementierung ausgeführt werden soll, ist nicht möglich.

Beispiel:

In einer Anwendung soll die Möglichkeit bestehen, daß nach dem Sichern durch eine andere Komponente Indizes fortgeschrieben werden können, d.h. nach dem Sichern soll ein Add-In angeboten werden. Da dieser Zeitpunkt für unterschiedliche Zwecke nützlich sein könnte, kann man hier eine Erweiterung mit beliebig vielen Abonnenten anlegen.

Gehen Sie folgendermaßen vor, um ein mehrfach genutztes Business Add-In anzulegen.

...

       1.      Definieren Sie ein Add-In und markieren Sie im Register Verwaltung das Ankreuzfeld Mehrfache Nutzung.

       2.      Definieren Sie ein Interface mit der Methode 'OBJECT_SAVED' und einem Importing-Parameter 'OBJECTNAME'.

Aufruf der Erweiterung im Anwendungsprogramm:

program event.

data exit_obj type ref to if_ex_event.

call method cl_exithandler =>get_instance
     changing instance = exit.

form save_object using obj_name type c.

update …
call method exit_obj->object_saved
     exporting objectname = obj_name.
endform.

Für den Aufrufer ist es belanglos, ob und wieviele Abonnenten das Ereignis als Ausgangspunkt weiterer Aktionen verwenden. Der Aufruf der aktiven Implementierungen erfolgt in der Adapter-Methode.

Ende des Inhaltsbereichs