Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Das Problem mit großen BAdI-Interfaces  Dokument im Navigationsbaum lokalisieren

Das Problem

Angenommen, Sie haben ein großes BAdi mit 50 Methoden (siehe folgende Abbildung). Es ist ganz offensichtlich nicht nach den Regeln eines guten, objektorientierten Designs entworfen worden, trotzdem fragen Sie sich vielleicht, was an einem solchen BAdI schlecht ist.

Diese Grafik wird im zugehörigen Text erklärt

Es ist möglich, dass in vielen Anwendungen, nur die ersten drei Methoden benötigt werden. Die anderen sind optionale Methoden, die nur von ein paar Kunden in deren Systemen benutzt werden. Eine Implementierung dieses BAdIs muss nichtsdestotrotz alle Methoden implementieren. Normalerweise erhalten die ersten drei Methoden in diesem Fall wirkliche Implementierungen wohingegen der Rest leere Implementierungen erhält.

Es stellt sich das folgende Problem. Ist die BAdI-Definition aus irgendeinem Grund modifiziert oder existiert ein Upgrade, müssen Sie sich in SPAU_ENH auch mit den restlichen 47 leeren Methoden befassen. Dieser Vorgang würde unnötig Zeit kosten!

Die Lösung

Die Lösung des Problems ist, nicht alle benötigen und optionalen Methoden in ein BAdI zu stellen, sondern kleine BAdIs zu entwerfen, die nur die Methoden enthalten, die von einer Kundengruppe benötigt werden. Das heißt nicht, dass Sie alle erforderlichen Methoden in ein großes BAdI stellen sollten, wenn Sie diese für eine Branchenanwendung benötigen. Halten Sie sich beim Entwerfen von BAdIs an die Grundlagen eines guten, objektorienterten Designs. Definieren Sie keine übergroßen BAdIs, sondern kleine, die auf bestimmte Probleme oder sogar Teile eines Problems zugeschnitten sind. Halten Sie Ihre BAdIs grundsätzlich klein. Sie können so besser verwaltet werden und zwingen diejenigen, die die BAdIs implementieren nicht dazu, leere Implementierungen zu schreiben. In der folgenden Abbildung sehen Sie, wie Sie Methoden trennen:

Diese Grafik wird im zugehörigen Text erklärt

Hinweis

Wenn Sie ein BAdI implementieren, müssen Sie alle seine Methoden implementieren. Das liegt daran, dass ein BAdI ein Interface definiert und Interfaces vollständig implementiert werden müssen. Syntaktisch gesehen gibt es keine teilweise implementierten Interfaces.

Kleine BAdIs gruppieren

Bei der Definition von kleinen BAdIs kann aufgrund der kleinen Größe ein Problem auftreten. Die Anzahl Ihrer BAdIs ist größer und Sie haben viele BAdIs im selben Namensraum. Das kann schnell unübersichtlich werden.

Um das zu vermeiden, benötigen Sie Container für Ihre BAdIs. Dafür benutzen Sie den (einfachen) Erweiterungsspot.  Wie auch für alle anderen Erweiterungsarten kann diese Spot als Container für BAdI-Definitionen benutzt werden. Obwohl die BAdIs immer noch im selben Namensraum sind, sind sie in größeren Einheiten, den Erweiterungsspots, strukturiert. Ihre Handhabung wird dadurch erleichtert. Die folgende Abbildung zeigt, wie Container benutzt werden:

Diese Grafik wird im zugehörigen Text erklärt

 

 

 

Ende des Inhaltsbereichs