
Die Beispiel-Component DEMODYNAMIC zeigt in einfacher Form den Aufbau einer Web-Dynpro-Component, deren View zur Design-Zeit generisch aufgebaut und zur Laufzeit dynamisch ausgestaltet wird.
Das Layout der View TABLE_DDIC
Das Layout der View dieser Component besteht im Wesentlichen aus drei Elementen: einem Eingabefeld und zwei Group-Elementen. Das UI-Element Eingabefeld ist an einen Context-Knoten des View-Controllers gebunden, nimmt den Eingabe-String des Benutzers entgegen und legt diesen im Context ab. Die beiden Elemente vom Typ Group hingegen sind nicht gebunden, der Context der View stellt insbesondere gar keine geeigneten Context-Knoten zur Verfügung. Diese beiden Context-Knoten werden erst zur Laufzeit erzeugt und mit Daten gefüllt. Erst dann werden die beiden UI-Elemente in der Methode WDDOMODIFYVIEW an die dynamisch erzeugten Context-Knoten gebunden. Die dynamische Gestaltung des View-Contexts ist in der Methode NEW_STRUCTURE implementiert, die wiederum einige Methoden der zur Component gehörenden Assistance-Klasse CL_WD_DEMO_DYN_MODEL nutzt.
Dynamische Erzeugung des Context-Knotens
Die Methode NEW_STRUCTURE wird durch die Behandlermethode des Schaltflächen-Ereignisses change_ structure aufgerufen. Nach der Behandlung eventueller Eingabefehler des Benutzers beginnt die dynamische Erzeugung der benötigen Context-Knoten mit dem Anlegen einer neuen Node-Info. Für dieses Objekt vom Typ IF_WD_CONTEXT_NODE_INFO wird anschließend ein zugehöriger Context-Knoten angelegt und gefüllt. Die für die Erzeugung und Gestaltung des Context-Knotens benötigten Methoden liegen in der zu dieser Beispiel-Component angelegten Assistance-Klasse CL_WD_DEMO_DYN_MODEL.
Die Assistance-Klasse CL_WD_DEMO_DYN_MODEL
Die in dieser Klasse zusammengefassten Methoden sind im Wesentlichen aus der vom System bereit gestellten Service-Klasse CL_WD_DYNAMIC_TOOL kopiert. Da dieses Beispiel nicht sehr kompliziert ist, können die als Vorlage dienenden Methoden der Service-Klasse unverändert übernommen und aufgerufen werden. In der Regel werden Sie jedoch diese Klassen nach dem Kopieren in eine Assistance-Klasse verändern oder erweitern um sie an die Anforderungen Ihrer eigenen Anwendung anzupassen.
Die Methode WDDOMODIFYVIEW
In dieser Methode werden schließlich die beiden UI-Elemente an den dynamisch erzeugten Context-Knoten gebunden. Hierzu werden die beiden Methoden CREATE_TABLE_FROM_NODE und CREATE_FORM_FROM_NODE der Assistance-Klasse gerufen. Beide Methoden wurden wiederum aus der Sevice-Klasse CL_WD_DYNAMIC_TOOL kopiert.
Sie finden mehr Informationen zum Thema Dynamische Programmierung in den entsprechenden Kapiteln des SAP NetWeaver Developer's Guides.
Die View DYNAMIC_NODE_TYPE
Für diese View wird in der Methode WDDOINIT auf dynamische Weise in Context-Knoten erzeugt. Anstatt jedoch jedes Attribut einzeln dynamisch anzulegen, wird zunächst eine Struktur erzeugt aus der dann anschließend eine Node-Info und damit ein Context-Knoten angelegt wird (lesen Sie hierzu auch das Dokument Context der Programmier-Hinweise.
Mehr Informationen finden Sie im Programmierhandbuch für Web Dynpro ABAP