
Der Context eines Controllers kann auf verschiedene Art und Weise zur Laufzeit manipuliert werden.
Zur Unterstützung der dynamischen Programmierung von Contexten und View-Layouts stellt Ihnen das Web-Dynpro-Framework eine Reihe von Methoden in der Service-Klasse CL_WD_DYNAMIC_TOOL zur Verfügung. In dieser Klasse finden Sie häufig genutzte Methoden vorformuliert. Alle in dieser Klasse implementierten Methoden zur dynamischen Context-Manipulation können Sie jedoch innerhalb des Web-Dynpro-Frameworks auch selber implementieren. Beachten Sie jedoch, dass nicht alle technisch möglichen Optionen in dieser Klasse zur Verfügung stehen. In vielen Fällen werden Sie die Programmierung über die betreffenden Framework-Interfaces durchführen um weitergehende Funktionen nutzen zu können.
Sie können sich über die Verwendung dieser Klasse in der Beispiel-Component DEMODYNAMIC im Paket SWDP_DEMO informieren, die mit Ihrem System ausgeliefert wurde.
Context-Knoten hinzufügen
Das Hinzufügen eines Knotens an einen Context zur Laufzeit kann aus unterschiedlichen Gründen erforderlich sein. In sehr generisch programmierten Components ist die Anzahl der benötigten Knoten unter Umständen zur Design-Zeit noch gar nicht bekannt. Selbst wenn die Anzahl bereits bekannt ist kann es vorkommen, dass die Struktur des Knotens erst zu Laufzeit bekannt wird. Auch in einem solchem Fall wird der Knoten dynamisch erzeugt und typisiert.
Zu diesem Zweck enthält das Interface IF_WD_CONTEXT_NODE_INFO die Methode ADD_NEW_CHILD_NODE, welche über eine Reihe von Parametern verfügt wie z.B. der Name des neuen Knotens oder der zugeordneten Supply-Methode.
Alternativ enthält die Service-Klasse CL_WD_DYNAMIC_TOOL die Methode CREATE_NODEINFO_FROM_STRUCT mit allerdings eingeschränkter Funktionalität.
Wenn Sie die Node-Info löschen, werden automatisch auch alle Instanzen des zugehörigen Knotens gelöscht.
Die Zeichenlänge für den Namen eines dynamisch angelegten Knotens ist - im Gegensatz zu statisch angelegten Context-Knoten - nicht begrenzt.
Die Attribut-Struktur des Knotens
Die Methode CREATE_NODEINFO_FROM_STRUCT erwartet die Übergabe einer bekannten Struktur, das heißt, der auf diese Weise erzeugt Knoten besitzt automatisch ein festgelegtes Set an Attributen gemäß dieser ausgewählten Struktur. Sie können an diese Struktur jedoch ohne Weiters einzelne Attribute hinzufügen (siehe unten). Grundsätzlich besteht auch die Möglichkeit, einen leeren Knoten dynamisch zu erzeugen und anschließend mit Attributen zu füllen. Hierfür steht jedoch in der Service-Klasse CL_WD_DYNAMIC_TOOL keine vorbereitete Methode zur Verfügung.
Die Bindung eines UI-Elements an einen dynamisch erzeugten Context-Knoten
Die dynamische Bindung eines UI-Elements an einen Context-Knoten wird am UI-Element programmiert (siehe Kapitel Dynamische Layout-Manipulation).
Context-Attribute hinzufügen
Unter Umständen kann es sinnvoll sein, abhängig von zur Laufzeit ausgewerteten Parametern an einem Context-Knoten Attribute hinzuzufügen oder zu entfernen. Wenn Sie zur Design-Zeit einen Context-Knoten mit einer DDIC-Struktur angelegt haben, können Sie zusätzliche Attribute nur auf dynamischem Wege erzeugen. In generischen Anwendungen kann der Fall auftreten, dass der Typ eines Attributs zur Design-Zeit noch nicht bekannt ist, auch dann wird man dieses Attribut erst zu Laufzeit dynamisch erzeugen und typisieren.
Das Interface IF_WD_CONTEXT_NODE_INFO enthält zu diesem Zweck die Methode ADD_ATTRIBUTE.
Festwerte von Attributen
Ein UI-Element kann an einen dynamisch erzeugten Context-Knoten gebunden werden. Unter Umständen handelt es sich dabei um ein UI-Element, welches auf Festwerte von Context-Attributen zugreift. In diesem Fall ist es nötig, Festwerte für die Attribute festzulegen. Lesen Sie hierzu weiter im Kapitel Festwerte von Attributen.
Weitere Informationen zu den Interfaces und Klassen finden Sie in der zugehörigen Systemdokumentation.