
Alle Bestandteile eines Web-Dynpro-Controllers können erweitert werden. Dabei gilt auch hier: Grundsätzlich lassen sich in der Original-Component angelegte Controller-Bestandteile in einer Erweiterungsimplementierung nicht ändern oder löschen.
Beachten Sie, dass erweiterte Objekte im Component Controller, wie Methoden oder Context-Knoten, nicht in den Interface Controller und somit in das externe Interface der Component aufgenommen werden können.
Wird ein in das Interface exponierter Context-Knoten um zusätzliche Attribute erweitert, so stehen diese ebenfalls nicht im entsprechenden Context-Knoten des Interface Controllers statisch zur Verfügung. Zur Laufzeit kann jedoch dynamisch auf diese erweiterten Attribute zugegriffen werden.
Context-Knoten und Context-Attribute
Zu jedem bestehenden Context können im Rahmen einer Erweiterung zusätzliche Knoten und Attribute angelegt werden. Wenn Sie jedoch in einen bestehenden Knoten ein Attribut einfügen wollen, müssen die folgenden Fälle unterschieden werden:
Innerhalb eines Knotens ohne Dictionary-Struktur ist dies ohne Einschränkungen möglich.
Innerhalb eines Knotens mit Dictionary-Struktur können über den Kontextmenü-Eintrag ein oder mehrere Attribute aus der verwendeten Struktur hinzugefügt werden.
Wenn Sie ein auf diese Weise eingefügtes Attribut markieren, wird Ihnen in dessen Eigenschaften-Tabelle in der letzten Zeile Erweiterungsimplementierung der Name der Implementierung angezeigt, für die es angelegt wurde.
Ändern oder Löschen können Sie einen zu Erweiterungszwecken angelegten Context-Knoten bzw. ein Context-Attribut nur in genau der Erweiterungsimplementierung, in der er bzw. es angelegt wurde.
Methoden, Pre-, Post- und Overwrite-Exits
Entsprechend allen bisherigen Schritten ist es möglich, in einer Erweiterung neue Methoden für einen Controller anzulegen und zu implementieren.
Um jedoch auch in bestehende Methoden eingreifen zu können, werden in einer Erweiterung für jede Methode jeweils ein Pre-Exit und Post-Exit und Overwrite-Exit zur Verfügung gestellt.
Diese in sich abgeschlossenen Zusatzmethoden werden jeweils direkt vor bzw. direkt nach dem Aufruf bzw. anstelle der zugehörigen Original-Methode durchlaufen. Dies setzt voraus, dass der Aufruf der Original-Methode über das lokale Controller-Interface erfolgt ( WD_THIS->... ) und nicht direkt über die lokale Controller-Instanz ( ME->... ).
Wenn mehrere Pre- oder Post-Exits angegeben sind, dann ist die Ausführungsreihenfolge willkürlich.
Pre-Exits
Die Pre-Exit-Methode stellt automatisch alle Importing- und Changing-Parameter der zugehörigen Original-Methode zur Verfügung.
Post-Exits
Die Post-Exit-Methode liest automatisch den Importing-Parameter der Original-Methode aus. Alle anderen Parameter der Original-Methode (Exporting-, Changing- und Returning-Parameter) werden als Changing-Parameter zur Verfügung gestellt.
Overwrite-Exits
Die Overwrite-Exit-Methode nimmt die Signatur der Original-Methode an und überschreibt diese. Damit wird ein Overwrite-Exit anstelle der Original-Methode ausgeführt.
Zur Laufzeit kann immer nur ein Overwrite-Exit aktiv sein. Wenn mehrere Overwrite-Exits aktiv sind, wird ein Laufzeitfehler ausgegeben.
Attribute
Im Rahmen einer Erweiterungsimplementierung können zusätzliche Attribute angelegt werden.
Ereignisse
Im Rahmen einer Erweiterungsimplementierung können zusätzliche Ereignisse angelegt werden. In der gleichen Erweiterungsimplementierung können sich die Ereignisbehandler auf dieses Ereignis registrieren.