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