Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Attribut-Wert eines Context-Elements lesen  Dokument im Navigationsbaum lokalisieren

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.

Auslesen eines Attribut-Wertes des Lead-Selection-Elements 

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:

Diese Grafik wird im zugehörigen Text erklärt

Diese Grafik wird im zugehörigen Text erklärt

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.

Auslesen eines Attribut-Wertes eines beliebigen Elements 

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 .

 

 

 

Ende des Inhaltsbereichs