Attribut-Wert eines Context-Elements
lesen
Context-Knoten halten zur Laufzeit die Daten der Web-Dynpro-Anwendung vor. Um mit diesen Daten arbeiten zu können, stellen die Interfaces IF_WD_CONTEXT_NODE und IF_WD_CONTEXT_ELEMENT geeignete Methoden zur Verfügung. Insbesondere ist in beiden Interfaces die Methode GET_ATTRIBUTE enthalten.
Das Auslesen von Daten aus einem Element eines Context-Knotens kann auf unterschiedliche Weise geschehen. Im Folgenden sind einige Möglichkeiten aufgezeigt.
Die einfachste Möglichkeit besteht darin, den Attribut-Wert des Lead-Selection-Elements eines Knotens auszulesen. Zum besseren Verständnis zeigen die folgenden beiden Graphiken noch einmal schematisch den Context zur Design-Zeit und zur Laufzeit:


Zur Laufzeit existieren zum Context-Knoten Node_1 eine Reihe von Elementen, jeweils mit einem zusammen gehörenden Datensatz zu den Attributen Attr1_1 bis Attr1_3. Im UI könnte jedes Element beispielsweise durch eine Tabellenzeile repräsentiert werden. Eines der Elemente 1, 2 oder 3 ist in der Regel über die Lead-Selection ausgezeichnet. Der Wert des durch die Lead-Selection gekennzeichneten Elements lässt sich sehr einfach aus dem Laufzeit-Context auslesen.
In der aktuell bearbeiteten Methode wird eine lokale Variable vom Typ IF_WD_CONTEXT_ELEMENT angelegt. Diese Variable repräsentiert das jeweilige Element des Knotens, in diesem Fall also das Lead-Selection-Element. Zusätzlich muss eine Variable passenden Typs angelegt werden, die den Attribut-Wert innerhalb der Methode darstellt.
method EXAMPLE .
data: l_node type ref to IF_WD_CONTEXT_NODE, l_element type ref to IF_WD_CONTEXT_ELEMENT, l_my_string type string.
l_node = wd_context->get_child_node( wd_this->wdctx_node_1 ).
l_element = l_node->get_element( ). l_element->get_attribute ( exporting name = 'ATTR1_1' importing value = l_my_string ). . . . . . . . . .
endmethod.
|
Mit Hilfe der Methode GET_ELEMENT des Interface IF_WD_CONTEXT_NODE wird eine Referenz auf das gewünschte Knoten-Element erzeugt. Im nächsten Schritt wird der Wert des Attributs Attr1_1 dieses Elements an die lokale Variable l_my_string übergeben.
Da die Namen von Attributen innerhalb eines Context-Knotens eindeutig sind, kann man das selbe Ergebnis auch ohne die Referenz auf das jeweilige Knoten-Element erzielen.
method EXAMPLE .
data: l_node type ref to IF_WD_CONTEXT_NODE, l_my_string type string.
l_node = wd_context->get_child_node( wd_this->wdctx_node_1 ).
l_node->get_attribute ( exporting name = 'ATTR1_1' importing value = l_my_string ).
. . . . . . . . .
endmethod.
|
Auf das oben stehende Context-Schema projiziert bedeutet dies:
Je nach aktueller Position der Lead-Selection hat die Variable l_my_string den Wert string_11, string_21 oder string_31.
Neben dem Zugriff auf den Attribut-Wert des Lead-Selection-Elements ist es auch möglich, gezielt auf ein spezielles Element des Laufzeit-Contextes zuzugreifen. Aus diesem Grund liegt über der Liste der Elemente ein Index, d.h. die Elemente des Context-Knotens haben eine definierte Reihenfolge. Diese Reihenfolge wird beim Aufbau des Laufzeit-Contextes übernommen bzw. angelegt. Wird ein Context-Knoten beispielsweise aus einer internen Tabelle gefüllt, ist die Reihenfolge der Elemente im Context gleich derjenigen Reihenfolge in der internen Tabelle.
Um ein anderes als das Lead-Selection-Element auszulesen muss der Methode GET_ELEMENT ein Wert für den Parameter INDEX übergeben werden:
method EXAMPLE .
data: l_node type ref to IF_WD_CONTEXT_NODE, l_element type ref to IF_WD_CONTEXT_ELEMENT, l_my_string type string.
l_node = wd_context->get_child_node( wd_this->wdctx_node_1 ). l_element = l_node->get_element( 2 ). l_element->get_attribute ( exporting name = 'ATTR1_1' importing value = l_my_string ).
. . . . . . . . .
endmethod.
|
In diesem Fall wird eine Referenz auf das zweite Element des Context-Knotens erzeugt und der Wert des ausgelesenen Attributs ist entsprechend string_21.
Auch bei der kürzeren Variante, ohne Umweg über die Element-Referenz, kann der Methode GET_ATTRIBUTE ein Wert für den Parameter INDEX übergeben werden:
method EXAMPLE .
data: l_node type ref to IF_WD_CONTEXT_NODE, l_my_string type string.
l_node = wd_context->get_child_node( wd_this->wdctx_node_1 ).
l_node->get_attribute ( exporting index = 2 exporting name = 'ATTR1_1' importing value = l_my_string ).
. . . . . . . . .
endmethod.
|
Auch in diesem Fall wird die lokale Variable den Wert des Attributs Attr1_1 des zweiten Elements haben, also den Wert string_21 .