
Das Zusammenspiel von Oberflächenelementen und Context-Elementen wird über eine wechselseitige Datenbindung ermöglicht. Dabei ist immer die View, die die Oberflächenelemente enthält, gegen den Context des ihr zugeordneten Controllers gebunden. Ist eine Datenbindung von Context-Element und Oberflächenelement-Eigenschaft definiert, dann werden Änderungen der Oberflächenelement-Eigenschaft direkt im Context aufgenommen und umgekehrt. Diese Änderungen werden auch von Eigenschaften anderer Oberflächenelemente der gleichen View übernommen, wenn sie an das gleiche Context-Element gebunden sind. Komplexere Oberflächenelemente, wie z.B. das Table- oder Tree-Oberflächenelement können an einen Context-Knoten gebunden werden, der eine Kollektion repräsentiert. Daher können diese Oberflächenelemente die gesamten Daten und Inhalt des Knotens anzeigen.
Durch das Speichern einer Referenz auf ein Context-Element können Daten direkt vom Context an das Oberflächenelement und zurück geliefert werden. Diese Referenz wird aufgebaut, indem man eine pfadähnliche Angabe, z.B. MONTHSOFYEAR.MONTHNAME als Wert einer bindbaren Eigenschaft des Oberflächenelements setzt. Ein Punkt trennt die einzelnen Context-Elemente, z.B. MONTHSOFYEAR.MONTHNAME.
Der Web Dynpro Explorer bietet grafische Unterstützung der Context-Elemente und erlaubt dem Anwendungsentwickler, die Context-Knoten sowie deren Context-Attribute den entsprechenden Oberflächenelement-Eigenschaften zuzuordnen. Damit ist für den Datentransport zwischen dem Context-Element und dem Oberflächenelement keine explizite Implementierung erforderlich.
Es gibt für die einzelnen Oberflächenelemente unterschiedliche Datenbindungskonzepte. Allgemein gilt:
Der Typ des Context-Attributs muss mit dem Typ der Eigenschaft kompatibel sein. Dies bedeutet, dass entweder die Typen gleich sein müssen oder die Eigenschaft des Oberflächenelements vom Typ String und gleichzeitig konvertierbar ist. Bei der letzteren Möglichkeit spielt dann der Typ des Context-Attributs keine Rolle (z.B.InputField.value).
Für gewisse Oberflächenelement-Eigenschaften macht es keinen Sinn, an einen entsprechenden Context gebunden zu werden, beispielsweise Eigenschaften, die einen statischen Charakter besitzen. Deshalb kann die ID eines Oberflächenelements, auf das sich ein Label-Oberflächenelement bezieht, nicht an einen Context gebunden werden. Die Datenquelle eines Table-Oberflächenelements hingegen, die normalerweise dynamisch erstellt wird und auch eine Struktur repräsentiert, muss an einen Context gebunden werden.
Viele Eigenschaften von Oberflächenelementen sind nicht von skalarem Charakter, sondern gleichen mehr einer Ansammlung von Werten. Solche Eigenschaften bindet man nicht an ein Wurzelattribut, sondern an das Context-Attribut eines multiplen Knotens. Eine Dropdown-Listbox ist dafür ein Beispiel: Jedes Element des multiplen Knotens enthält eine andere Ausprägung des Context-Attributs und daher erscheinen mehrere Elemente in der Auswahlliste.
Es gibt aber auch Eigenschaften, die sich auf einen kompletten Knoten beziehen, und nicht nur auf eines seiner Attribute. Die Datenquelle einer Table ist hierfür ein Beispiel: Die Elemente des gebundenen Knotens entsprechen den Table-Zeilen, seine Attribute dagegen den Spalten.
Einige Eigenschaften können an Context-Attribute beliebigen Datentyps gebunden werden, sofern der Datentyp der Eigenschaft konvertierbar ist. Dazu zählen:
Alle anderen Eigenschaften können nur an Context-Attribute mit gleichem Datentyp gebunden werden.
Einige Oberflächenelement-Eigenschaften ausgewählter UI-Elemente bieten neben der Bindung an ein Context-Attribut (Context-Binding) auch die Bindung an einen ABAP-Dictionary (DDIC)-Datentypen an.
Beispiel: Die Eigenschaft length des UI-Elements InputField kann per DDIC-Binding aus Folgendem gezogen werden:
Auf diese Weise ist es möglich, die Länge des Eingabefeldes entweder an die Länge des verwendeten Context-Attributs anzupassen oder mit der Länge eines ABAP-Dictionary-Datentypen zu variieren.
Die DDIC-Bindung wird, abhängig vom jeweiligen UI-Element, für Eigenschaften angeboten, die im Zusammenhang mit Feldbezeichnern und der Zeichenlänge von Feldern stehen. Für das oben erwähnte Beispiel des UI-Elements InputField können die Eigenschaften length und tooltip an einen ABAP-Dictionary-Datentypen gebunden werden.
Die folgenden Möglichkeiten zur Anbindung an das ABAP Dictionary stehen zur Verfügung:
Die ABAP-Dictionary-Information wird aus dem im Context-Attribut hinterlegten ABAP-Dictionary-Typ ermittelt.
Die ABAP-Dictionary-Information wird aus angegebenem ABAP-Dictionary-Typ ermittelt.
Automatisches DDIC-Binding, wenn es sich um eineprimäre Eigenschaft handelt oder bei einem Label oder einer Caption innerhalb einer TableColumn
Vorgehensweise
Wenn es sich um das Binding für die Eigenschaft explanation handelt, erscheint ein spezielles Popup für Hilfetexte. Weitere Informationen finden Sie unterHilfetexte in und für Web-Dynpro-Applikationen.
Angabe, welcher ABAP-Dictionary-Datentyp verwendet werden soll
Angabe, welche Eigenschaften des ABAP-Dictionary-Datentypen verwendet werden sollen. Die folgenden Varianten sind möglich:
Diese Option wird zur Zeit nicht unterstützt. Sie ist offen für zukünftige Erweiterungen. Beim HTML-Client wird bei Text passend der erste existierende Text in folgender Suchreihenfolge übernommen: mittel, lang, kurz.
Standardverhalten bei initialen Werten
Wenn der Wert der folgenden Eigenschaften von UI-Elementen initial ist, wird automatisch der Wert aus dem ABAP Dictionary ermittelt:
| UI-Element | Eigenschaft | Wert aus dem ABAP-Dictionary |
|---|---|---|
|
length |
CO_OUTPUT_LEN |
|
|
cols |
CO_OUTPUT_LEN |
|
|
text |
CO_AUTO_TEXT |
|
|
displayValue |
CO_AUTO_TEXT |
|
|
Caption bei der Verwendung in einerTableColumn |
text |
CO_AUTO_TEXT |
Die Texte aus dem ABAP Dictionary werden in der folgenden Reihenfolge ausgewertet:
Es gibt vier ausgezeichnete Eigenschaften von UI-Elementen:
Diese UI-Elemente-Eigenschaften können an die Context-Attribut-Eigenschaften der primären UI-Elemente-Eigenschaft gebunden werden.
Lesen Sie hierzu mehr im DokumentEigenschaften von Context-Attributen.