Show TOC

Füllen des ContextsLocate this document in the navigation structure

Da die Werte der Context-Elemente eine zentrale Rolle spielen, ist das Füllen bzw. Ändern des Contexts ein Vorgang, der sorgfältig geplant werden muss. Je nach dem zu welchem Zeitpunkt ein Context gefüllt bzw. aufgefrischt werden soll bieten sich unterschiedliche Methoden an:

WDDOINIT

Die Methode WDDOINIT ist die Initialisierungsmethode des Controllers. Wenn Sie von Anfang an wissen, dass in Ihrer Anwendung der Context nur einmal gefüllt und danach nicht mehr invalidiert wird, bietet sich diese Methode zum Füllen des Contexts an. Sie können diese Methode auch dann nutzen, wenn Sie ein anschließendes Aktualisieren der Daten mit einer Aktion verbinden wollen und die Aktualisierung in den zugehörigen Ereignisbehandler verlagern.

Hinweis Mit Hilfe der WDDOINIT-Methode sollten nur solche Context-Knoten gefüllt werden von denen bekannt ist, dass sie auf jeden Fall gefüllt werden müssen.

Die Aufruf-Folge zum Füllen des Contexts ist innerhalb dieser Methode etwas aufwändiger als in einer Supply-Funktion, da diese nicht mit einem Context-Knoten verbunden ist und man zunächst  den betreffende Knoten heranziehen muss.

Beispielcode
method WDDOINIT.
data: NODE type ref to IF_WD_CONTEXT_NODE,
FLIGHTS type SPFLI_TAB.
* get node from context
NODE = WD_CONTEXT->GET_CHILD_NODE( 'CARRIER_NODE' ).
* get connections from helper class
FLIGHTS = CL_WD_GET_SPFLI=>GET_FLIGHTS( ).
NODE->BIND_ELEMENTS( FLIGHTS ).
endmethod.

Supply-Funktion

Das Befüllen eines Contexts mit Hilfe einer Supply-Funktion ist genau dann sinnvoll, wenn der Inhalt eines Knotens nur bei Bedarf zur Verfügung stehen muss. Dies ist u.a. bei Singleton-Knoten der Fall. Die Supply-Funktion wird aufgerufen, sobald auf die Elemente des zugehörigen Knotens zugegriffen wird. Dies ist oft erst zum Zeitpunkt des Renderings der Fall. Das Füllen des Contexts in der Supply-Funktion ist technisch am einfachsten, da der zugehörige Knoten bereits als Parameter zur Verfügung steht (siehe Supply-Funktion).

Hinweis Im Fall einer Aktualisierung der Daten mit Hilfe der Supply-Funktion müssen Sie immer den ganzen Context-Knoten neu aufbauen (es ist nicht möglich, über die Supply-Funktion einzelne Elemente des Contexts neu zu belegen). Dies kann sich unter Umständen negativ auf die Performance einer Web-Dynpro-Anwendung auswirken.

Ereignisbehandler von Aktionen

Häufig ist das Füllen oder Ändern eines Contexts als Reaktion auf die Aktion eines Benutzers notwendig. In diesem Fall können werden Sie den Context in der zur Aktion zugehörigen Ereignisbehandlermethode programmieren. Hierfür haben Sie grundsätzlich zwei verschiedene Möglichkeiten:

In der ersten Variante wird der Knoten von der Ereignisbehandlermethode lediglich invalidiert, sodass eine Supply-Funktion im Anschluss automatisch gerufen werden muss. Die Ereignisbehandlermethode "verlässt" sich dabei auf das Vorhandensein einer geeigneten Implementierung der Supply-Funktion.

In der zweiten Variante übernimmt die Ereignisbehandlermethode das Füllen des Contexts selber. (Achten Sie auch hier darauf, dass eine Ereignisbehandlermethode nicht an einen speziellen Context-Knoten gebunden ist. Der zu füllende Knoten steht, wie auch bei der Methode WDDOINIT, nicht automatisch als Parameter zur Verfügung sondern muss in einem vor gelagerten Programmierschritt erzeugt werden).

Hinweis Unabhängig davon, mit welcher der drei Methoden Sie einen Context füllen, gilt: Wenn im Quelltext einer Methode der Name eines Knotens oder Attributs als String angegeben wird, müssen Großbuchstaben verwendet werden.

Performance des Contexts

Da der Context sehr viele gestalterische Möglichkeiten bietet, in sehr viele kleine Objekte aufgespalten sein kann und sehr dynamisch agieren muss, lässt sich die Performance einer Web-Dynpro-Anwendung durch geeignete Gestaltung des Contexts erheblich beeinflussen.