
Ein BadI ist eine objektorientierte Erweiterungsoption, ein Ankerpunkt für ein Objekt-Plug-In und damit die am weitesten entwickelte Erweiterungsart. Hauptmerkmal eines BadI ist, dass es einen Mechanismus bereitstellt, um die Funktionalität einer genau festgelegten Business Function (z.B. ein BAPI) zu ändern, ohne dabei den ausgelieferten Quelltext zu modifizieren. Künftige Upgrades der ursprünglichen Business Function können eingespielt werden, ohne dass die kundenspezifischen Erweiterungen verloren gehen und ohne dass die Änderungen zusammengeführt werden müssen.
Bei der Definition eines BAdI bestimmen Sie das zugehörige Interface - die vom BAdI angebotenen Methoden. BAdI-Implementierungen sind Klassen, die das BAdI-Interface implementieren. In der Regel werden diese Implementierungen in einer anderen Entwicklungsschicht angelegt, z.B. als kundeneigene Objekte im Kundenamensraum, während die BAdi-Definition und der Aufruf der BAdI-Methoden zum SAP-Namensraum gehören. Der Aufruf einer BAdI-Methode ähnelt einem dynamischen Methodenaufruf mit spezifiziertem Interface. Welche Methoden tatsächlich aufgerufen werden, wird von der aktiven BAdI-Implementierung festgelegt. Anders als beim dynamischen Methodenaufruf werden die relevanten BAdI-Implementierungen zur Kompilierzeit ausgewählt.
Die BAdI-Technik ist nicht auf SAP-Anwendungen begrenzt. Auch in Kundenanwendungen können BadI-Aufrufe integriert werden, die dann wieder von anderen Kundenanwendungen erweitert werden können.
SAP hat umfassende Erfahrung darin, Kunden verschiedene Möglichkeiten zur Erweiterung des SAP-Standards anzubieten. Das neue BAdI-Konzept nutzt diese Erfahrung. Die neuen BAdIs bringen im Vergleich zu den klassischen BAdIs einige wichtige Verbesserungen wie erhöhte Performance mit sich. Die neuen BAdIs sind in den Kernel integriert und schaltbar.
Die Neuimplementierung der BadIs verfolgt zwei primäre Ziele:
Die neuen ABAP-Sprachelemente und ihre Zusätze sorgen dafür, dass diese zusätzlichen Optionen auf einfache Weise in ABAP-Programmen nutzbar sind.
Im Rahmen des Enhancement Frameworks wird unter dem Begriff BAdI immer ein neues BAdI verstanden. Falls explizit auf das vorhergehende BAdI-Konzept Bezug genommen werden soll, so werden diese als klassische BAdIs bezeichnet.
In den folgenden Beispielen finden Sie gängige Probleme, die von BAdIs gelöst werden.
Die Lösung ist ein BAdI, eine Erweiterungsart mit genau definiertem Interface; BAdIs sind bei Änderungen weniger störungsanfällig als Quelltext-Plug-Ins.
Die Lösung ist, eine BAdI-Definition im Core anzulegen, so dass Benutzer in den verschiedenen Ländern eigene Implementierungen hinzufügen können.
Die Lösung ist, ein internes BAdI anzulegen und die verschiedenen Teile in verschiedenen Implementierungen hinzuzufügen. Die BAdIs und ihre Implementierungen können zu unterschiedlichen Softwareschichten gehören.
Die Lösung ist, BAdI-Aufrufe in die Standardsoftware mit einzubeziehen. Der Kunde kann die Implementierungen dieser Objekte später hinzufügen
Die Lösung sind BAdI-Implementierungen, die länderspezifische Teile enthalten. Diese Implementierungen können später für die entsprechenden Länder überschrieben werden, ohne das Originalprogramm, das die BAdI-Aufrufe enthält, zu ändern.
Sie können die BAdI-Infrastruktur benutzen, um ein leistungsfähiges Registry zu bauen. In diesem Fall wird der Filter als Selektionskriterium für das Registry benutzt.
Weitere Informationen: