Funktion Gibt die Dropdownliste eines Attributs zurück
Beispiel myddlstring =
s10dropdownlist( "kunnr" ).
Aufruf 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_lowerattrname ).
      
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_lowerattrname ).
      
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.

    
dataland1 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