Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen Teil 4: Implemtierung des Datentransports  Dokument im Navigationsbaum lokalisieren

 

Um den Wert des Attributs CARRID im Context der View Suchen für den Context der View Anzeigen sichtbar zu machen, muss zunächst ein View-übergreifender Context eingerichtet werden.

 

       1.      Doppelklicken Sie in der Objektliste auf das Objekt ComponentController. Im Editor wird Ihnen nun der Context des Component-Controllers angezeigt.

       2.      Markieren Sie den noch leeren Wurzelknoten des Contexts und öffnen Sie dessen Kontextmenü.

       3.      Kopieren Sie mit Hilfe des Eintrags Anlegen über Wizard den Knoten data aus der View Suchen (oder auch aus Anzeigen) in den Wurzelknoten des Contexts des Component-Controllers.

       4.      Sichern Sie und wechseln Sie in der Objektliste durch Doppelklicken auf die Anzeige der View Suchen, dort auf die Registerkarte Context.

Im zweigeteilten Editor wird Ihnen nun in der rechten Hälfte der Context des Component-Controllers angezeigt. 

Definieren Sie ein Mapping für den Knoten data des View-Contextes auf den gleichnamigen Knoten des Component-Controller-Contexts:

       5.      Markieren Sie dafür den Knoten data des Component-Controllers und ziehen Sie ihn mit gedrückter linker Maustaste auf den Knoten data des View-Contextes. Nach Loslassen der Maustaste wird das durch diesen Vorgang definierte Mapping angezeigt durch einen kleinen schwarzen Pfeil in der Ikone des View-Context-Knotens. Außerdem wird in der Eigenschaftentabelle dieses Knotens der Mapping-Pfad zum Knoten des Component-Controllers angegeben.

Der Wert, den das Attribut CARRID zur Laufzeit erhält, kann nun über das Mapping an den Component-Controller weiter gereicht werden. Sichern Sie die View.

       6.      Öffnen Sie durch Doppelklicken in der Objektliste die View Anzeigen und wechseln Sie auf die Registerkarte Context.

       7.      Definieren Sie auch hier ein Mapping für den Knoten data des View-Contextes auf den gleichnamigen Knoten des Component-Controller-Contexts.

Der Wert für das Attribut CARRID, den der Component-Controller von der View Suchen erhält, kann so dem Context der View Anzeigen übergeben werden. Als nächstes muss dessen Context-Knoten flights mit einer Supply-Funktion ausgestattet werden.

       8.      Markieren Sie den Knoten flights und geben Sie in der Zeile Supply-Funktion der Eigenschaftentabelle den Namen „getflights“ ein.

       9.      Die benötigte Methode wird beim Sichern automatisch angelegt und Sie verzweigen nun per Doppelklick auf den Namen der Funktion in den ABAP Editor um die Methode getflights  geeignet auszuprogrammieren (Quell-Code siehe unten).

 

Das Layout der beiden Views ist jetzt gestaltet und der Datentransport implementiert.

Zum Fertigstellen der Anwendung fahren Sie fort mit Teil 5: Einrichten der Navigation

 

 

Quell-Code für die Methode "getflights"

 

method GETFLIGHTS.

 

  data:   datanode type ref to if_wd_context_node,

          value type string,

          flighttab type standard table of sflight.

 

* Einlesen der Referenz auf den Knoten des lokalen Contextes:

 

  datanode = wd_context->get_child_node( name = 'DATA' ).

 

* Auf Grund des Mappings auf den Knoten 'DATA' des Component-Controllers

* enthält dieser Knoten den vom Benutzer eingegebenen Wert für das Attribut

* 'CARRID'.

 

* Dieser Wert wird dann folgenden Schritt ausgelesen:

 

  datanode->get_attribute( exporting name = 'CARRID' importing value = value ).

 

* Jetzt kann die interne Tabelle 'flighttab' gefüllt werden:

 

  select * from sflight into table flighttab

  where CARRID = value.

 

* Die interne Tabelle muss nun noch an den aktuellen Context-Knoten gebunden

* werden:

 

  node->bind_elements( flighttab ).

 

endmethod.

 

Achtung Die Programmierung der Datenbeschaffung in diesem Beispiel ist zu Gunsten des besseren Verständnisses von Web Dynpro erheblich verkürzt worden. In einer realen Anwendung sollte beispielsweise niemals innerhalb einer Methode des Web-Dynpro-Frameworks ein select-Aufruf auf eine Datenbanktabelle implementiert werden. Zur Beschaffung der Daten sollte unbedingt zumindest eine eigene Klasse angelegt werden.

 

 

Ende des Inhaltsbereichs