Parameter-Mapping
Das Parameter-Mapping kommt bei der Mehrfachverwendung von Aktionen zum Einsatz. Wenn Sie eine Aktion für mehrere Ereignisse benutzen, z.B. mehrere Buttons, benötigen Sie eine eindeutige Information, um die gewünschte Zuordnung einzurichten. Diese Information erhalten Sie über das Parameter-Mapping.
Wir empfehlen nicht die Mitgabe des
Standard-Parameters ID (siehe
unten), da in diesem Fall Aktionen und UI-Elemente nicht klar getrennt
sind.
Das Parameter-Mapping führen Sie programmatisch durch:
DATA PARAMETERS TYPE WDR_NAME_VALUE_LIST. DATA PARAMETER TYPE WDR_NAME_VALUE. DATA data_ref TYPE REF TO data. FIELD-SYMBOLS <data> TYPE any.
" Parameter können einfache Werte sein PARAMETER-NAME = 'LINES_TO_INSERT'. PARAMETER-VALUE = '3'. PARAMETER-TYPE = CL_ABAP_TYPEDESCR=>TYPEKIND_STRING. INSERT PARAMETER INTO TABLE PARAMETERS.
" Parameter können Objekt-Referenzen sein PARAMETER-NAME = 'CUSTOMER'. PARAMETER-OBJECT = customer_object. PARAMETER-TYPE = CL_ABAP_TYPEDESCR=>TYPEKIND_OREF. INSERT PARAMETER INTO TABLE PARAMETERS.
" Parameter können tiefe Datenobjekte sein (Struktur/Tabelle) CREATE OBJECT data_ref LIKE table. ASSIGN data_ref->* TO <data>. <data> = table. PARAMETER-NAME = 'TABLE'. PARAMETER-DREF = data_ref. PARAMETER-OREF = CL_ABAP_TYPEDESCR=>TYPEKIND_DREF. INSERT PARAMETER INTO TABLE PARAMETERS.
" Parameter-Mapping festlegen CL_WD_BUTTON->MAP_ON_ACTION( parameters ).
" Parameter-Mapping auslesen CL_WD_BUTTON->MAPPED_ON_ACTION( importing parameters = parameters ). |
Bei Auslösen eines Ereignisses wird die damit verknüpfte Aktion mit folgenden Parametern aufgerufen:
● Web Dynpro ABAP Standard-Parameter (ID und CONTEXT_ELEMENT)
● Spezifische Parameter des UI-Elements
● Im Parameter-Mapping angegebene Parameter des Ereignisses
Die Parameter können als Methoden-Parameter der Aktion definiert werden. Der Typ der Methoden-Parameter muss dabei MOVE-kompatibel zu den Parameter-Werten sein.
Methoden-Parameter können sowohl obligatorisch
als auch optional sein. Für obligatorische Methoden-Parameter gilt: Werden
beim Aufruf der Aktion nicht alle Methoden-Parameter durch Ereignis-Parameter
befüllt, so tritt eine Ausnahme auf.
Die Parameter-Werte können auch über das WDEVENT-Objekt ausgelesen werden:
= WDEVENT->GET_INT( 'LINES_TO_INSERT' ). = WDEVENT->GET_OBJECT( 'CUSTOMER' ). = WDEVENT->GET_CONTEXT_ELEMENT( 'CONTEXT_ELEMENT' ). |
oder
= WD_EVENT->GET_DATA( EXPORTING name = 'TABLE' importing value = table ).
|