In der Welt der Entwicklung und individueller Anforderungen ist die Fähigkeit, Standardanwendungen anzupassen, ohne den ursprünglichen Quellcode zu ändern, sehr wertvoll. Für die Bewohner der SAP-Welt gibt es dafür Business Add-Ins (BAdI).
In diesem Blogbeitrag betrachten wir das Konzept der BAdI, ihre Vorteile und wie man sie wirkungsvoll implementiert.
Was ist ein Business Add-In (BAdI)?
Ein Business Add-In (BAdI) ist eine Erweiterungstechnologie in ABAP, die es Entwicklern ermöglicht, SAP-Standardanwendungen oder eigenen Lösungen zusätzliche Funktionalität hinzuzufügen, ohne den ursprünglichen Quellcode zu verändern. Es wird auch als Hook für Objekt-Plug-ins bezeichnet und zählt zu den expliziten Erweiterungsoptionen.
Explizite Erweiterungsoptionen werden vom Anwendungsentwickler an vordefinierten Stellen bereitgestellt, um das Einklinken von Quellcode zu erlauben und so die Erweiterung der Anwendung zu erleichtern.
Mit BAdI können Entwickler SAP-Systeme so erweitern, dass sie spezifische fachliche Anforderungen erfüllen, und dabei Flexibilität und Anpassungsfähigkeit sicherstellen.
Vorteile von BAdI
Wiederverwendbarkeit
BAdI sind objektorientiert konzipiert und damit wiederverwendbare Komponenten. Einmal erstellt, lassen sich BAdI in mehreren Szenarien einsetzen, was den Entwicklungsaufwand reduziert und die Effizienz erhöht.
Flexibilität
BAdI bieten einen flexiblen Ansatz, um ergänzte Funktionalität je nach fachlichem Bedarf zu aktivieren oder zu deaktivieren. Damit können Organisationen ihre SAP-Systeme ohne umfangreiche Modifikationen zuschneiden und sich leichter an veränderte Anforderungen anpassen.
Anpassbarkeit
Jedes BAdI besteht aus einem Interface, Filtern und einstellbaren Optionen. Das erlaubt Entwicklern, das Verhalten der BAdI-Implementierung an konkrete Anforderungen anzupassen und so eine maßgeschneiderte Lösung bereitzustellen, die zu den Geschäftsprozessen passt.
Mehrfachimplementierung
BAdI unterstützen sowohl einfache als auch mehrfache Implementierungen. Das heißt, verschiedene Implementierungen können nebeneinander bestehen, was mehr Flexibilität bei der Verwaltung und Kombination von Erweiterungen bietet und Kompatibilität sowie Skalierbarkeit sicherstellt.
Ich verstehe, dass Sie nach diesen Vorteilen nun gespannt darauf sind, wie man Business Add-Ins (BAdI) implementiert. Bevor wir jedoch in die Implementierung einsteigen, ist es wichtig, das Konzept des Enhancement Spot im SAP-Ökosystem zu verstehen.
Enhancement Spot?
"Die Grundlagen zu lernen ist genauso wichtig wie Gemüse zu essen."
Das Enhancement-Konzept ist ein Framework, mit dem sich die Funktionalität von SAP-Standardanwendungen erweitern oder ändern lässt, ohne den ursprünglichen Quellcode direkt zu modifizieren.
Um einen modularen Ansatz zu ermöglichen, werden Erweiterungen als eigenständige Objekte umgesetzt, die als Enhancement Spots bezeichnet werden. Diese Spots dienen als Container für verschiedene Arten von Erweiterungen, etwa BAdI, User Exits, Enhancement Points und mehr.
Kernpunkte zum Enhancement-Konzept:
Enhancement Spots
Enhancement Spots dienen, wie zuvor beschrieben, als Container, mit dem sich zusammengehörige Erweiterungen gruppieren lassen und der einen zentralen Punkt für deren Verwaltung bietet.
Enhancement Options
Das sind die konkreten Erweiterungen, die die verfügbaren Enhancement Points definieren, also die Hooks, an denen Entwickler eigenen Code einfügen können.
Enhancement Implementations
Das sind die tatsächlichen Implementierungen der Enhancement Options mit dem kundeneigenen Code. Wie bereits erwähnt, sind mehrere Implementierungen eines einzelnen Enhancement Point möglich.
Schauen wir uns nun die Erstellung und Implementierung von BAdI an.
Der erste Schritt besteht darin, Enhancement Spots zu implementieren und anschließend die BAdI-Definition dem jeweiligen Spot hinzuzufügen.
BAdI erstellen
Das ist hilfreich, wenn Sie den Kunden Ihrer Produkte die Möglichkeit geben möchten, den Code anzupassen.
Den Enhancement Point identifizieren
Finden Sie die Stelle in Ihrer Anwendung, an der Sie das BAdI zur Nutzung bereitstellen möchten.
Einen Enhancement Spot anlegen
Gehen Sie in die TCODE SE18 und legen Sie einen Enhancement Spot an.
Hinweis: Wählen Sie als Technologie die BAdI-Definition aus.
BAdI-Definition definieren
Klicken Sie auf das Anlegen-Symbol für die BAdI-Definition. Vergeben Sie einen aussagekräftigen Namen und eine Beschreibung.
Die BAdI-Definition ist angelegt. Wählen Sie nun je nach Anforderung die notwendigen Optionen wie Usability, Instance Creation Mode und weitere.
🤔 Sie fragen sich, was es mit der Option Call fallback auf sich hat?
Die Call-Fallback-Option erlaubt Entwicklern, eine Fallback-Klasse zu hinterlegen. Es handelt sich um eine Klassenimplementierung, aus der die Methode aufgerufen und ausgeführt wird, falls im System keine aktive Implementierung des BAdI existiert (bei einem Single-Use-BAdI) oder keine aktive Implementierung mit passender Filterbedingung vorliegt (bei einem Multiple-Use-BAdI).
Nun kommt der wichtige Teil: die Definition des Interface, das der Entwickler implementieren wird. Denken Sie vor dem Anlegen des Interface aus der Perspektive anderer Entwickler und nehmen Sie die Parameter auf, die sie für ihre Erweiterungen benötigen könnten.
Interface der BAdI-Definition definieren
Klicken Sie unter dem gewünschten Namen der BAdI-Definition auf Interface.
Geben Sie den Interface-Namen an und legen Sie es an, falls es noch nicht existiert.
Wenn Sie ein Interface direkt über SE24 anlegen, stellen Sie sicher, dass das Interface “IF_BADI_INTERFACE” darin eingebunden ist.
Einen Enhancement Point anlegen
Legen Sie an den erforderlichen Stellen in Ihrem Produkt einen Enhancement Point für das BAdI an.
Damit haben Sie die Definition des BAdI für die Nutzung abgeschlossen.
Ein BAdI nutzen
Es ist eine übliche Anforderung in SAP, die Funktionalität der Standardanwendung entsprechend den fachlichen Anforderungen anzupassen. Dafür hat SAP für seine unterschiedlichen Lösungen zahlreiche BAdI bereitgestellt.
Das zu implementierende BAdI identifizieren
BAdI lassen sich anhand der Produktdokumentation identifizieren.
Oder über die Transaktion SE20.
Nehmen wir an, wir möchten das folgende BAdI implementieren:
Implementierung
Gehen Sie in die Transaktion SE19. Geben Sie den Namen des Enhancement Spot über den Navigationspfad an. “Create Implementaton→New BAdI→Enhancement Spot”
Legen Sie die Enhancement Implementation an.
Zu einer BAdI-Definition lässt sich der Enhancement Spot über die Transaktion SE20 ermitteln.
Geben Sie den Namen der BAdI-Implementierung und der implementierenden Klasse an und wählen Sie die BAdI-Definition aus.
Implementieren und aktivieren Sie die BAdI-Implementierungsklasse.
Voilà! Sie haben das BAdI implementiert.
Was wäre wenn?
Bevor wir weitergehen, sprechen wir über ein Was-wäre-wenn.
Was, wenn Sie eines schönen Tages entscheiden, dass die BAdI-Implementierung aus dem einen oder anderen Grund im Standardcode nicht mehr ausgeführt werden soll, Sie die Implementierung aber auch nicht löschen möchten? Was tun in einem solchen Fall?
Nun, gehen Sie so vor:
Gehen Sie in die TCODE SE19.
Wählen Sie die von Ihnen angelegte Enhancement Implementation aus.
Klicken Sie auf Ändern.
Entfernen Sie den Haken bei “Implementation is active”.
Speichern und aktivieren.
Best Practices für Erstellung und Implementierung von BAdI
Verwenden Sie aussagekräftige und beschreibende Namen für BAdI, Implementierungen und Methoden. Das erhöht Klarheit und Wartbarkeit über den gesamten Entwicklungsprozess hinweg.
Entwerfen Sie das BAdI-Interface mit klar definierten Methoden und Parametern. Ein gut strukturiertes Interface sorgt für ein klares Verständnis der vom BAdI angebotenen Funktionalität.
Vermeiden Sie es, bestehende BAdI-Definitionen zu ändern, da dies Kompatibilitätsprobleme verursachen kann. Legen Sie stattdessen neue BAdIs oder Enhancement Spots an, um zusätzliche Anforderungen abzudecken.
Stellen Sie zu jedem implementierten BAdI eine ausführliche Dokumentation bereit, die Zweck, Funktionsweise und etwaige Abhängigkeiten beschreibt. Eine klare Dokumentation ist immer großartig.
Testen Sie das implementierte BAdI gründlich, um sicherzustellen, dass es sich wie erwartet verhält und keine unerwünschten Nebenwirkungen im System verursacht.
Achten Sie bei der Implementierung von BAdI auf Kompatibilität mit künftigen SAP-Upgrades und Support Packages, indem Sie die Richtlinien und Empfehlungen von SAP befolgen.
Halten Sie die Verwendung von BAdI in einem Dokument fest. Das hilft bei der Planung von Support-Package-Upgrades und erlaubt es, vom Upgrade betroffene BAdI schnell zu identifizieren.*️⃣
Sehen Sie sich vor dem Upgrade die Release Notes zum jeweiligen Support Package an, um die Änderungen und ihre Auswirkungen auf die implementierten BAdI zu verstehen.
Wer diese Best Practices befolgt, kann wirkungsvolle BAdI und BAdI-Implementierungen erstellen, die die Funktionalität von SAP-Anwendungen erweitern und dabei die Systemstabilität erhalten.
*️⃣Beim Support-Package-Upgrade helfen die Transaktionen SPDD und SPAU dabei, Konflikte bei ABAP-Dictionary-Objekten beziehungsweise Repository-Objekten zu identifizieren.
Zusammenfassung
Business Add-Ins (BAdI) sind mächtige Erweiterungstechnologien in ABAP, mit denen Entwickler SAP-Standardanwendungen erweitern können, ohne den ursprünglichen Quellcode zu ändern. Durch den Einsatz von BAdIs lassen sich in den SAP-Systemen der Kunden auf einfache Weise mehr Flexibilität, Anpassbarkeit und Wiederverwendbarkeit erreichen.
Das Enhancement-Konzept zu verstehen, Best Practices zu befolgen und BAdI wirkungsvoll zu implementieren, kann Organisationen dabei helfen, Geschäftskontinuität zu erreichen.
Also: Tauchen Sie ein in die Welt der BAdI und bringen Sie Ihre SAP-Entwicklung auf das nächste Level!