...
● Verwendung von Implementierungen, die als Container dienen
In der folgenden Abbildung sehen Sie auf der rechten Seite (einfache) Erweiterungsimplementierungen, die den BAdI-Implementierungen als Container dienen.
● Verwendung von Paketen
Die zu einer BAdI-Implementierung gehörende (einfache) Implementierung bestimmt die Paketzuordnung dieses BAdIs.
Die Abbildung zeigt das folgende Szenario: BAdI-Implementierungen in der gleichen (einfachen) Erweiterungsimplementierung gehören zu dem gleichen Paket, wohingegen BAdI-Implementierungen in anderen (einfachen) Erweiterungsimplementierungen zu anderen Paketen gehören.
● Verwendung von Containern
Die Schalter, mit denen Sie die BAdI-Implementierungen umschalten können, sind Paketen zugeordnet. Dies bedeutet, dass Sie BAdI-Implementierungen, die unterschiedlich umgeschaltet werden müssen, in unterschiedliche (einfache) Erweiterungsimplementierungen einordnen müssen. Ein Grund, warum Sie auf der Implementierungsseite Container haben ist, dass Sie eine Einheit benötigen, die solche Implementierungen, die gemeinsam umgeschaltet werden sollten, umfasst.
Natürlich ist dies nicht das einzige Prinzip, nach dem (einfache) Erweiterungsimplementierungen entworfen werden können. Weitere Prinzipe sind das Bauen von leicht zu bearbeitenden (einfachen) Erweiterungsimplementierungen, sowie die Berücksichtigung von projektbezogenen oder anderen organisatorischen Fragen.
● Die folgende Abbildung zeigt ein Szenario, das nicht vereinfacht wurde. Die beiden gelben Linien zeigen einen ungewöhnlichen Fall. Viele Implementierungen eines BAdIs können sich in einer (einfachen) Erweiterungsimplementierung befinden. Dies ist sinnvoll, wenn Sie als Implementierungen verschiedene Klassen benötigen, die zusammen geschaltet werden können. Sie können Ihr BAdI so definieren, dass es mehrere Instanzen haben kann.
Wenn Sie mehrere Filterwerte mit unterschiedlichen Implementierungen abdecken und dabei die gleiche Klasse verwenden möchten, ist es besser, nur eine Implementierung zu nehmen und für diese Implementierung eine Disjunktion der Filterwerte zu verwenden.
Meistens haben Sie nur eine BAdI-Implementierung in einer (einfachen) Erweiterungsimplementierung, wenn Sie die Implementierung separat umschalten möchten. Denken Sie an die Fälle, in denen ein BAdI genau eine Implementierung haben darf (Single-Use-BAdI).
● In der nachfolgenden Abbildung gehört eine (einfache) Erweiterungsimplementierung als einzige zu einem bestimmten (einfachen) Erweiterungsspot. Eine (einfache) Erweiterungsimplementierung darf keine BAdI-Implementierungen enthalten, die einem anderen (einfachen) Erweiterungsspot zugeordnet sind.
● Beispiel aus der Praxis
In der Programmierpraxis können die Einheiten auf der Definitionsseite auf die entsprechenden Teile einer Anwendung zugeschnitten sein. Die Implementierungsseite enthält Einheiten, die entsprechend einer Branchenlösung entworfen wurden: IS_OIL. Die kleineren Einheiten spiegeln die Organisation auf der Definitionsseite.
Hinter den Containern steht die Idee, die Organisation zu unterstützen, damit später in einer überzeugenden, geschachtelten Struktur nach Erweiterungsmöglichkeiten gesucht werden kann. Die Vorteile einer solchen Struktur können Sie jedoch nur unter einer Bedingung nutzen: die Container müssen aussagefähig benannt und sorgfältig dokumentiert werden.
Sie können dann den Enhancement Browser (Transaktion SPAU_ENH) in SE80 benutzen, um den Geschäftsteil zu erweitern und nach BAdIs zu suchen, die Sie für Ihre Zwecke erweitern möchten.