Modifikationsfreie Erweiterungen
In vielen Fällen wird es nötig werden,
von SAP ausgelieferte oder andere bereits existierende Anwendungen zu
verändern oder zu erweitern. Unstrukturierte Eingriffe in den Quell-Code oder
das Layout einer Anwendungen, nennt man Modifikationen. Modifikationen können
zu Konflikten führen, wenn ein neues Release der Anwendungsprogramme
eingespielt werden soll. Um solche Konflikte zu vermeiden, können für
existierende Anwendungen, die mit Hilfe von Web Dynpro für ABAP realisiert
wurden, so genannte
Erweiterungsimplementierungen
angelegt werden. Diese Erweiterungsimplementierungen sind eigenständige
Entwicklungsobjekte, die unabhängig vom zugehörigen Original-Objekt verwaltet
werden. Sie sind Teil des
Erweiterungskonzepts
welches im Application Server ABAP zu Release 7.0 in die ABAP Workbench
integriert wurde. Die zugrunde liegenden Original-Objekte werden durch eine
solche Erweiterung nicht verändert und können daher i.d.R. problemlos beim
Release-Wechsel aktualisiert werden. Informationen über Sonderfälle, bei denen
ein Abgleich erforderlich ist, finden Sie unter Erweiterungen nach
einem Upgrade abgleichen.
ABAP-Quelltexte in einer
Web-Dynpro-Anwendung können mit Hilfe von so genannten
BAdIs erweitert
werden. Zu diesem Zweck werden bei der Entwicklung der Anwendung an geeigneten
Stellen im Quelltext explizite Ankerpunkte (so genannte
Erweiterungspunkte)
implementiert, über welche ein separat entwickeltes BAdI später in den Ablauf
des Programms eingefügt werden kann. Ein BAdI ist daher eine
explizite
Erweiterung. Eine
implizite
Erweiterung dagegen benötigt keinerlei Vorimplementierung durch die
Anwendungsentwicklung.
Neben den oben beschriebenen Quelltext-Erweiterungen können Sie auch an einzelnen Bestandteilen einer Web-Dynpro-Component Erweiterungen vornehmen. So können Sie beispielsweise UI-Elemente in einer View hinzufügen oder ausblenden oder in einem Controller-Context neue Knoten hinzufügen.
Um eine Erweiterungsimplementierung anzulegen öffnen Sie in der Objektliste der SE80 zunächst die gewünschte Component. Durch Doppelklicken öffnen Sie dann die View oder den Controller, in dem Sie die Erweiterung vornehmen wollen, im Editor.

In der Ikonenleiste des Web Dynpro Explorers finden Sie nun die Ikone für die Funktion Erweiterungsimplementierung anlegen/ändern.
Die Funktion „Anlegen/Ändern einer
Erweiterungsimplementierung“ steht Ihnen nur dann zur Verfügung, wenn
die Original-Component im Anzeigemodus vorliegt. Wenn Sie vom Anzeige- in den
Änderungsmodus umschalten, ist die Original-Component selbst änderungsbereit
und es kann daher keine Erweiterungsimplementierung angelegt oder geändert
werden, die Ikone ist ausgegraut.
Durch Klicken der Ikone öffnen Sie entweder einen Anlege-Dialog für eine neue Erweiterungsimplementierung oder Sie erhalten alle, zu dieser Component vorhandenen, Erweiterungsimplementierungen zur Auswahl angeboten.
Es ist sinnvoll, dass der Name der
Erweiterungsimplementierung einen Namensraum-Präfix enthält. Die Namen von Objekten, die Sie im
Rahmen dieser Erweiterungsimplementierung anlegen, sollten dann ebenfalls mit
diesem Namensraum-Präfix beginnen.
Beispiel:
Wird ein Button in der Erweiterung /myCompany/myEnhancement_1 angelegt, könnte der Button /myCompany/button_1 genannt werden.
Dies dient der Vermeidung von Namenskonflikten zu Objekten der Original-Component.
Weitere Informationen über
Namensräume und
Namenskonventionen für die Entwicklung finden Sie unter
Namensraum für
Entwicklungen einrichten.
Mit Abschluss des Dialogs können Sie dann die von Ihnen vorgesehenen Erweiterungen bzw. Erweiterungsänderungen ausführen:
Erweiterungen in einem Controller
Grundsätzlich können zu einer Component
mehrere, von einander unabhängige Erweiterungsimplementierungen vorgenommen
werden. Die einzelnen Änderungen können jeweils nur in der Implementierung
editiert werden, in der sie angelegt worden sind.