Übersicht
Die Eingabe von Werten über Dropdown-Listen ist schnell und benutzerfreundlich. Das S10 Framework unterstützt konstante Wertelisten, die automatische Generierung von Wertelisten aufgrund des SAP Data Dictionary und auch die dynamische Generierung in einer eigenen ABAP-Methode.

Beispiel 1: Konstante Werteliste

       

Hierzu definieren Sie in der ABAP Klasse ein Attribut für den Wert der Dropdownliste, z.B.

ABAP
data:
  orderlimit type string. 

Und in HTML ein <label> sowie ein <select> Element mit jeweils einem <option> Element pro Wert:

HTML
<label class="label">Auftragshöhe</label>
<br />

<select class="inputselect" name="orderlimit">
    <option value=""></option>
    <option value="0">Kein Limit</option>
    <option value="1000">1 000 EUR</option>
    <option value="50000">50 000 EUR</option>
</select>

Falls Sie durch die Auswahl in der Dropdown-Liste sofort eine ABAP-Methode aufrufen möchten, geht das durch den "onchange" Zusatz:

HTML
<select class="inputselect" name="orderlimit" 
	onchange="S10Apply('select_orders')">

Die aufgerufene ABAP-Methode in diesem Beispiel ist "select_orders".  Der ausgewählte Wert steht automatisch in der Variablen "orderlimit" zur Verfügung. Einzelheiten zur Funktion "S10Apply" finden Sie in dem Artikel S10Apply().

Mit dem Zusatz "required" können Sie erreichen, dass vor dem Senden der Screen-Daten an die Applikation geprüft wird, dass der Benutzer einen Wert ausgewählt hat:

HTML

<select class="inputselect" name="orderlimit" required>

Beispiel 2: Data Dictionary-basierte Werteliste

ABAP
data:
 land1 type kna1-land1.
HTML
<label class="label output" name="land1"></label><br>
<select class="inputselect" name="land1" style="width: 240px;"
     data-s10dropdownlist='land1@dropdownlist'>
</select>

Das S10-Framework baut hierbei gemäß den im Data Dictionary zu "kna1-land1" verzeichneten Wertetabellen T005 und T005T die Dropdown-Liste auf. Einzelheiten dazu finden Sie im Artikel s10dropdownlist().

Auch Wertelisten, die nicht aus Customizing-Tabellen zusammengestellt werden, sondern konstant im Data Dictionary abgelegt sind, können auf diese Weise angezeigt werden. Zum Beispiel sind im SAP Data Dictionary zum "Belegstatus" folgende Werte mit den entsprechenden sprachabhängigen Texten abgelegt:

ABAP
data:
 bstat type bkpf-bstat.
HTML
<label class="label output" name="bstat"></label><br>
<select class="inputselect" name="bstat"  
   data-s10dropdownlist="bstat@dropdownlist" data-s10options="hidekeys" 
   style="width:240px"></select>




Beispiel 3: Dynamisch in einer ABAP Methode generierte Werteliste

Hier werden die im SAP System zu einem Kunden hinterlegten Ansprechpartner als Dropdown-Liste zur Auswahl angeboten. Die Werteliste wird in einer ABAP-Methode dynamisch abhängig von der aktuellen Kundennummer aufgebaut. Dabei ist folgendes zu beachten:

  • Die Werteliste als Klassenattribut vom Typ "string" anlegen
  • Am besten dann dazu eine build-Methode definieren, in der die import-Parameter bestimmen, von welchen anderen Attributen die Werteliste abhängig ist. Damit ist gewährleistet, dass die Werteliste neu aufgebaut wird, falls sich ein import-Attribut geändert hat.
  • Die Werteliste besteht aus Zeilen, die voneinander durch Zeilenvorschub getrennt sind
  • Jede Zeile besteht aus dem Wert, einem Tabulatorzeichen und dem Text
  • Ein Zeilenvorschub am Ende der Liste wird ignoriert
  • Die Werteliste wird automatisch vom S10 Framework zur Anzeige sortiert, und zwar nach Schlüsselwerten, falls diese angezeigt werden, sonst nach dem Text
ABAP
data:
   kunnr        type kna1-kunnr,
   parnr        type knvk-parnr,
   ddl_contacts type string. 
methods:
   build_ddl_contacts
     importing
       kunnr        type kna1-kunnr
     exporting
       ddl_contacts type string. 
  method build_ddl_contacts.
    clear ddl_contacts.

    data: knvk type knvk.

    select parnr namev name1 from knvk
        into corresponding fields of knvk
          where kunnr = kunnr.

      ddl_contacts =
          ddl_contacts
          && knvk-parnr
          && cl_abap_char_utilities=>horizontal_tab
          && knvk-namev
          && | |
          && knvk-name1
          && cl_abap_char_utilities=>cr_lf.

    endselect.

  endmethod.
HTML
<select class="inputselect"  name="parnr" data-s10dropdownlist="ddl_contacts" 
	data-s10options="hidekeys"></select>

Die Werteliste wird automatisch neu aufgebaut, sobald sich die Kundennummer geändert hat. 

Allgemeine S10-Optionen für Dropdown-Listen

  • HTML
    data-s10options="hideKeys"
    Der Schlüsselwert wird nicht angezeigt. 
     
  • HTML
    data-s10options="noEmptyEntry"
    Am Anfang der Werteliste wird kein leerer Eintrag hinzugefügt.

Eine Kombination der beiden Optionen dann mit 
HTML

data-s10options="hideKeys,noEmptyEntry".

Komponenten: S10 Framework