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