Was ist ein BAdI in SAP? Erklärung der Business Add-Ins

kategorie
General
Veröffentlicht
autor
Johannes

Ein BAdI steht für Business Add-In. Es ist eine moderne, objektorientierte Technologie von SAP, die es Dir ermöglicht, den SAP-Standardcode zu erweitern, ohne ihn direkt zu modifizieren (modifikationsfreie Erweiterung).

Was ist ein BAdI?

Stell es Dir wie eine Steckdose in der Wand vor:

  • SAP liefert die “Steckdose”: An vordefinierten Stellen im Standardcode baut SAP sogenannte BAdI-Definitionen ein. Das sind quasi vorbereitete “Haken” oder “Einstiegspunkte”.
  • Du steckst Deinen “Stecker” ein: Als Entwickler:in kannst Du für diese BAdI-Definitionen eigene * BAdI-Implementierungen* erstellen. Das ist Dein eigener ABAP-Code (in Form einer Klasse), der dann an dieser Stelle im Standardablauf aufgerufen wird.

Die Kernidee ist: Du fügst Deine eigene Logik hinzu, ohne den Originalcode von SAP anfassen zu müssen. Das hat riesige Vorteile, vor allem bei Upgrades und Wartung, da Deine Erweiterungen getrennt vom Standard bleiben.

Wie funktioniert das technisch (vereinfacht)?

  1. BAdI-Definition (z. B. in SE18): SAP (oder manchmal auch Partner/Kunden) definiert ein BAdI. Kernstück ist ein * Interface*, das eine oder mehrere Methoden (die “Haken”) vorschreibt, die Du implementieren kannst. Die Definition legt auch fest, ob das BAdI z. B. filterabhängig ist oder mehrfach aktiv sein darf.
  2. BAdI-Implementierung (z. B. in SE19): Du erstellst eine Implementierung zu einer BAdI-Definition. Dabei legst Du eine implementierende Klasse an, die das BAdI-Interface implementiert. In den Methoden dieser Klasse schreibst Du Deinen eigenen ABAP-Code.
  3. Aufruf im SAP-Standardcode: An der entsprechenden Stelle im Standardprogramm steht dann Code wie GET BADI ... ( um eine Referenz auf aktive Implementierungen zu holen) und CALL BADI ...->methodenname(...) (um die Methode Deiner Implementierung aufzurufen).

Wichtige Eigenschaften von BAdIs

  • Modifikationsfrei: Die wichtigste Eigenschaft. Erweiterungen bleiben von Standardänderungen unberührt.
  • Objektorientiert: Basiert auf ABAP Objects (Interfaces und Klassen).
  • Filterabhängigkeit: Viele BAdIs können gefiltert werden. Deine Implementierung wird dann nur aktiv, wenn bestimmte Filterwerte (z. B. Buchungskreis, Land) übereinstimmen.
  • Mehrfachverwendbarkeit: Manche BAdIs erlauben, dass mehrere Implementierungen gleichzeitig aktiv sind. Andere erlauben nur eine aktive Implementierung.
  • Switch Framework: BAdIs können an das Switch Framework gekoppelt werden, sodass Erweiterungen über Business Functions ein- und ausgeschaltet werden können.
  • Teil des Enhancement Frameworks: Moderne BAdIs sind in das allgemeine Erweiterungskonzept (Enhancement Spots/Options) integriert.

Arten von BAdIs

  • “Klassische” BAdIs: Die ältere Generation (vor NetWeaver 7.0). Werden technisch etwas anders aufgerufen.
  • “Neue” BAdIs (Kernel-BAdIs): Die moderne Form, integriert ins Enhancement Framework, aufgerufen über GET BADI/ CALL BADI. Diese sollten bevorzugt verwendet werden.

Abgrenzung zu älteren Techniken

BAdIs sind die Nachfolger der älteren Erweiterungstechniken wie Customer Exits (Funktionsbaustein-Exits, Transaktionen SMOD/CMOD) und User Exits (FORM-Routinen in Standard-Includes). BAdIs sind flexibler, sauberer gekapselt und objektorientiert.

Zusammenfassend: BAdIs sind der von SAP empfohlene, objektorientierte Standardweg, um zusätzliche Geschäftslogik, Prüfungen oder Datenmanipulationen an definierten Stellen in SAP-Standardprozesse einzufügen, ohne den Kern verändern zu müssen.