Funktion Gibt die Dropdownliste eines Attributs zurück
Beispiel ABAP
myddlstring =
s10dropdownlist( "kunnr" ). 
Aufruf ABAP
data:
  myattrname type string,
  myvaluelist type string,
  myddlstring type string.

myddlstring =
  s10dropdownlist(
    exporting
      attrname = myattrname
      valuelist = myvaluelist ). 
Parameter
Name Typ Bedeutung
attrname string
Attributname
valuelist string
Werteliste (Filter)
ddlstring string
Dropdown-Liste
Beschreibung Die Methode s10dropdownlist() wird durch das S10 Framework implizit aufgerufen, wenn in HTML für ein Klassenattribut "attr" über "attr@dropdownlist" die dropdown-Liste zu einem Attribut angefordert wird. Beispiel:
HTML
<label class='label output' 
    name='land1'></label><br />
<select class='inputselect' size="1" 
    name='land1' style='width: 240px;'
   data-s10dropdownlist='land1@dropdownlist'>
</select>

Das S10 Framework baut die dropdown-Liste automatisch aus den Angaben im SAP Data Dictionary auf. Sie können in HTML angeben, ob die internen Codes mit angezeigt werden sollen oder nur die Texte. Beispiel:

HTML

<label class='label output' 
    name='bsark'></label><br />
<select class='inputselect' size="1" 
    name='bsark' style='width: 240px;'
    data-s10dropdownlist='bsark@dropdownlist'
    data-s10options='hidekeys'>
</select>

s10dropdownlist() liefert die Werte immer in alphabetischer Reihenfolge der Schlüssel. Falls Sie die Anzeige der Schlüssel in HTML ausschalten, wird die Dropdown-Liste nach dem Text sortiert angezeigt:

Die Dropdown-Liste wird als String zurückgeliefert, in dem jeweils der Schlüssel und der Text durch ein TAB Zeichen und die Einträge durch einen Zeilenvorschub getrennt sind. Hier die Anzeige der Länderliste im ABAP Debugger:

Falls die Standard-Dropdownliste zu viele Werte enthält, können Sie eine Werteliste als Filter mitzugeben. Da der Aufruf von s10dropdownlist() für die Werteliste in HTML implizit durch das S10 Framework erfolgt, ist hierzu das Überschreiben der s10dropdownlist() Methode in Ihrer Klasse nötig.

Wir zeigen das Vorgehen anhand der Länderliste und nehmen dazu an, dass Sie nur eine Auswahl von Ländern in der Dropdownliste zur Auswahl anbieten wollen.

HTML

<label class='label output' 
    name='land1'></label><br />
<select class='inputselect' size="1" 
    name='land1' style='width: 240px;'
   data-s10dropdownlist='countries01@dropdownlist'
   data-s10options='hidekeys'>
</select>

ABAP

methods:
      s10dropdownlist redefinition.
* redefinition of s10dropdownlist() for certain attributes
  method s10dropdownlist.

    case to_lower( attrname ).
      when 'countries01'.
        ddlstring = super->s10dropdownlist(
          exporting
             attrname = 'land1'
             valuelist = 'AT,AU,BE,CA,CH,DE,FR,IT' ).


* call up super method for all other attributes
      when others.
        ddlstring = super->s10dropdownlist(
           exporting
              attrname = attrname
              valuelist = valuelist ).
    endcase.

  endmethod.

 

Ebenso sind dynamisch erzeugte Listen möglich. Zum Beispiel wäre es bei der Selektion von Kunden sinnvoll, nur solche Länder anzubieten, in denen es auch Kunden gibt. Das können wir entweder nochmal mit dem gleichen Vererbungsmechnismus implementieren oder die Liste ganz ohne s10dropdownlist() selbst aufbauen. Wir zeigen hier beide Verfahren.

Methode 1 (Redefinition von s10dropdownlist)

HTML

<label class='label output' 
    name='land1'></label><br />
<select class='inputselect' size="1" 
    name='land1' style='width: 240px;'
   data-s10dropdownlist='countries02@dropdownlist'
   data-s10options='hidekeys'>
</select>

ABAP

methods:
      s10dropdownlist redefinition.
* redefinition of s10dropdownlist() for certain attributes
  method s10dropdownlist.

    case to_lower( attrname ).
      when 'countries01'.
        ddlstring = super->s10dropdownlist(
          exporting
             attrname = 'land1'
             valuelist = 'AT,AU,BE,CA,CH,DE,FR,IT' ).
   when 'countries02'.

*       build up country code list from existing customers
        data:
          valuelist02 type string,
          tabland1 type table of kna1-land1.

        select distinct land1 from kna1 into table tabland1.
        concatenate lines of tabland1 into valuelist02 
        separated by ','.

        ddlstring = super->s10dropdownlist(
         exporting
            attrname = 'land1'
            valuelist = valuelist02 ). 


* call up super method for all other attributes
      when others.
        ddlstring = super->s10dropdownlist(
           exporting
              attrname = attrname
              valuelist = valuelist ).
    endcase.

  endmethod. 

Methode 2 (ohne s10dropdownlist)

HTML

<label class='label output' 
    name='land1'></label><br />
<select class='inputselect' size="1" 
    name='land1' style='width: 240px;'
   data-s10dropdownlist='ddlcountries02'
   data-s10options='hidekeys'>
</select>

ABAP

data:
      ddlcountries02 type string.methods:
       build_ddlcountries02
        exporting
          ddlcountries02 type string.

method build_ddlcountries02.
    clear ddlcountries02.

    data: land1 type kna1-land1,
          landx type t005t-landx.

    select distinct kna1~land1 t005t~landx  into (land1,landx)
      from kna1 join t005t
        on kna1~land1 = t005t~land1
        and t005t~spras = sy-langu
          order by kna1~land1.

      ddlcountries02 = ddlcountries02 
                 && land1 && cl_abap_char_utilities=>horizontal_tab 
                 && landx && cl_abap_char_utilities=>cr_lf.
    endselect.
  endmethod. 

Komponente S10 Framework