Show TOC

Datenbindung von Oberflächenelement-EigenschaftenLocate this document in the navigation structure

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.

Unterschiedliche Datenbindungsansätze

Es gibt für die einzelnen Oberflächenelemente unterschiedliche Datenbindungskonzepte. Allgemein gilt:

  • Datenbindung mit gleichen oder konvertierbaren Datentypen

    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).

  • Datenbindung von Oberflächenelementen mit dynamischem bzw. statischem Charakter

    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.

  • Datenbindung von Oberflächenelementen mit nicht skalarem Charakter

    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.

  • Datenbindung an den Context-Knoten

    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.

    Hinweis Beachten Sie, dass die IDs der Oberflächelemente nicht gebunden werden. Gleiches gilt für diejenigen Eigenschaften, die den Namen einer Aktion darstellen und ausgeführt werden können, wenn ein Ereignis eintritt, z.B. CheckBox.onToggle.

    Einige Eigenschaften können an Context-Attribute beliebigen Datentyps gebunden werden, sofern der Datentyp der Eigenschaft konvertierbar ist. Dazu zählen:

    • InputField.value
    • Label.text
    • TextEdit.value
    • TextView.text.

    Alle anderen Eigenschaften können nur an Context-Attribute mit gleichem Datentyp gebunden werden.

DDIC-Bindung einiger Oberflächenelement-Eigenschaften

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.

Tipp

Beispiel: Die Eigenschaft length des UI-Elements InputField  kann per DDIC-Binding aus Folgendem gezogen werden:

  • Länge eines bestimmten ABAP-Dictionary-Typs
  • Länge des ABAP-Dictionary-Typs eines bestimmten Context-Attributes
  • Länge des ABAP-Dictionary-Typs des Context-Attributes der Eigenschaft value

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:

  • Context-Attribut-Angabe

    Die ABAP-Dictionary-Information wird aus dem im Context-Attribut hinterlegten ABAP-Dictionary-Typ ermittelt.

  • Typangabe

    Die ABAP-Dictionary-Information wird aus angegebenem ABAP-Dictionary-Typ ermittelt.

  • Keine Angabe

    Automatisches DDIC-Binding, wenn es sich um eineprimäre Eigenschaft handelt oder bei einem Label oder einer Caption innerhalb einer TableColumn

Vorgehensweise

  1. Wählen Sie bei den Eigenschaften des jeweiligen UI-Elements den Schalter für das Binding.

    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.

  2. Wählen Sie auf dem Fenster zum Auswählen des Context-Elements den Schalter für das DDIC-Binding.

  3. Geben Sie den gewünschten Typ und das passende Typmerkmal an.

    • Typ

      Angabe, welcher ABAP-Dictionary-Datentyp verwendet werden soll

    • Typmerkmal

      Angabe, welche Eigenschaften des ABAP-Dictionary-Datentypen verwendet werden sollen. Die folgenden Varianten sind möglich:

      • Text kurz
      • Text mittel
      • Text lang
      • Text Überschrift
      • Text passend

        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.

      • Visuelle Länge

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

AbstractInputField

length

CO_OUTPUT_LEN

TextEdit

cols

CO_OUTPUT_LEN

Label

text

CO_AUTO_TEXT

ProgressIndicator

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:

  1. Mittlerer Text
  2. Langer Text
  3. Kurzer Text
  4. Überschriftentext
Bindung an die Eigenschaften von Context-Attributen

Es gibt vier ausgezeichnete Eigenschaften von UI-Elementen:

  • enabled
  • readOnly
  • state
  • visible

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.