BAdI Implementierung überprüfen

In diesem Artikel erfährst Du, was man unter einem BAdI versteht und in SAP ERP bzw. SAP S/4HANA einfach und schnell überprüfen kann, ob eine BAdI-Implementierung für eine bestimmte Definition im SAP-System verwendet wird. Die zentralen Transaktionen für BAdIs sind SE18 und SE19. Zudem hinaus wird beschrieben, wie Du einfach und schnell zu einer bestimmten Transaktion alle relevanten BAdI-Definitionen ermitteln kannst. Abschließend werden alle wichtigen Transaktionen zu BAdIs aufgeführt.

Was ist ein BAdI?

BAdI ist eine Abkürzung und steht für Business Add-In. Unter einem BAdI versteht man eine SAP-Erweiterungstechnik, die auf ABAP-Objekten basiert. Dabei können BAdIs in das SAP-System eingefügt werden, um Anforderungen zu erfüllen, die zu spezifisch sind, um in der Standardauslieferung von SAP ERP oder SAP S/4HANA enthalten zu sein. Das Unternehmen SAP garantiert die Aufwärtskompatibilität aller Business Add-In-Schnittstellen. BAdIs wurden mit Release 4.6 eingeführt und ersetzen Funktionsbaustein-Exits.

Ein BAdI besteht generell aus zwei Teilen:

  • Definitionsteil
  • Implementierungsteil

In der Transaktion SE18 wird die BAdI-Definition gepflegt. Hier wird das Interface angegeben, das die Schnittstelle des BAdIs festlegt. In der Anwendungsprogrammierung wird letztlich eine Variable mit der Typisierung zu diesem Interface erstellt, um den BAdI zu verwenden.

Transaktion SE18 BAdI-Builder - Definition

In der Transaktion SE19 hingegen kann man ein BAdI implementieren. Hier wird das Coding, das die Funktionalität der Erweiterung enthält, eingefügt. Grundsätzlich können mehrere BAdI-Implementierungen zu einer BAdI-Definition erstellt werden.

Transaktion SE19 - BAdI-Builder - Implementierungen

Man unterscheidet zwischen klassichen und neuen BAdIs. Die neuen BAdIs sind performanter und werden über die neuen Sprachelemente GET BADI und CALL BADI verwendet.

Die zentrale ABAP-Klasse für die Handhabung von Exit-Techniken lautet CL_EXITHANDLER. Da BAdIs ebenfalls eine Exit-Technik sind, kann man mit dieser ABAP-Klasse den Einsatz genauer untersuchen.

Mit der Transaktion SE20 kann man sich ebenfalls einen Überblick über BAdIs verschaffen.

BAdI-Implementierungen für BAdI-Definition prüfen

Es ist durchaus möglich, dass zu einer BAdI-Definition mehrere BAdI-Implementierungen existieren. Hierzu kann man einfach in der Transaktion SE18 alle zugehörigen BAdI-Implementierungen zu einer BAdI-Definition prüfen.

Nachdem man die Transaktion SE18 aufgerufen hat, gibt man im Feld “Erweiterungsspot” die BAdI-Definition an und klickt auf den Anzeigen-Button. Falls man die BAdI-Definition nicht kennt, kann man sich den Tipp bzw. Hinweis im nächsten Abschnitt “BAdI-Definition für Transaktion ermitteln” befolgen.

Nachdem man in der Detailansicht der Definition gelandet ist, gibt es im Tabreiter “Erw.spot-Elementdefinitionen” die Aktion “Implementierung” auf der linken Seite. Hier klickt man doppelt.

SE18 - BAdI-Definition - Implementierung

Daraufhin werden alle BAdI-Implementierungen aufgezeigt, die es zu dieser BAdI-Definition im System gibt. Nun kann man durch Doppelklick die einzelnen Implementierungen genauer analysieren und prüfen.

BAdI-Implementierungen zu BAdI-Definition

In dem Tabreiter “Erw.-Implementierungen” werden ebenfalls alle zugeordneten BAdI-Implementierungen angezeigt. Zusätzlich wird angezeigt, welcher Status die Implementierung hat. Ebenfalls kann man hier mit einem Doppelklick in die Detailansicht wechseln.

Zudem hinaus kann man die Transaktion BADI_RSANALYZE nutzen, um eine BAdI-Definition zu analysieren.

BAdI-Definition für Transaktion ermitteln

Klasse CL_EXITHANDLER, Methode GET_INSTANCE

Die ABAP-Klasse CL_EXITHANDLER verwaltet die Aufrufe von SAP-Erweiterungen und so auch den Aufruf von BAdIs. In der Methode GET_INSTANCE wird eine Referenz auf eine generierte Exit-Klasse zurückgegeben. Hierbei kann man in der Transaktion SE24 einen Breakpoint setzen, um in einer Transaktion die BAdI-Definition zu ermitteln.

So kann man im ABAP Debugger die Variable EXIT_NAME untersuchen und die Definition herausfinden. Dabei werden in einer Transaktion alle BAdI-Definitionen in der Variable angezeigt. Mit der F8-Taste kann man jeweils zur nächsten Definition im Debugger gelangen. So erhält man eine Übersicht über alle Definitionen in einer Transaktion. In den Transaktionen SE18 und SE19 kann man die Implementierung im Detail analysieren.

Für Transaktion BAdI-Definition ermitteln

Im Debugger gilt es zu beachten, dass die Methode GET_CLASS_NAME_BY_INTERFACE den Namen der Definition ermittel. Man sollte also in der Methode GET_INSTANCE einen Breakpoint hinter dem Aufruf der Methode setzen.

Funktionsbaustein SXV_GET_CLIF_BY_NAME

Zudem hinaus kann man mit dem Funktionsbaustein SXV_GET_CLIF_BY_NAME ebenfalls die BAdI-Definition und deren Klassen einer Transaktion ermitteln.

Hierzu ruft man in der Transaktion SE37 den Funktionsbaustein SXV_GET_CLIF_BY_NAME auf und setzt am Ende einen Breakpoint. Daraufhin öffnet man seine gewünschte Transaktion (z.B. MIRO) und untersucht die Variablen (NAME und CLIF). Mit der F8-Taste gelangt man zur nächsten Definition in der Transaktion.

BAdI untersuchen im Debugger - SXV_GET_CLIF_BY_NAME

Durch dieses Vorgehen erhält man ebenfalls eine Übersicht über alle Definitionen in einer Transaktion.

Wichtige Transaktionen zu BAdI

TransaktionscodeBeschreibung
SE18BAdI-Builder – Definitionen
SE19BAdI-Builder – Implementierungen
SE20Enhancements
BADI_RSANALYZEBadI-Analyse

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP bzw. SAP S/4HANA interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar