!--a11y-->
Dynamische Context-Manipulation 
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.
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 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 dynamische Bindung eines UI-Elements an einen Context-Knoten wird am UI-Element programmiert (siehe Kapitel Dynamische Layout-Manipulation).
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.
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.