
Wenn Sie für eine Zelle mehrere Zelleditoren verwenden wollen, zum Beispiel um alle interaktiven Elemente in der ersten Spalte anzuordnen, benutzen Sie die Zellvariante CL_SALV_WD_MULTI_CELL_EDITOR. Als Zelleditoren stehen Ihnen folgende Oberflächenelemente zur Verfügung:
Button
LinkToAction
LinkToURL
FileDownload
ToggleButton
Zellvariante mit mehreren Zelleditoren implementieren
Das folgende Beispiel zeigt, wie Sie in einer Spalte ( ls_column) beispielhaft alle zur Verfügung stehenden Zelleditoren einfügen.
Deklarieren Sie folgende Variablen:
data:
lr_cv type ref to cl_salv_wd_multi_cell_editor,
lr_checkbox type ref to cl_salv_wd_uie_checkbox,
lr_button type ref to cl_salv_wd_uie_button,
lr_link_to_action type ref to cl_salv_wd_uie_link_to_action,
lr_link_to_url type ref to cl_salv_wd_uie_link_to_url,
lr_file_download type ref to cl_salv_wd_uie_file_download,
lr_toggle_button type ref to cl_salv_wd_uie_toggle_button.
Instanziieren die Zellvariante und fügen den Schlüssel hinzu, den Sie benötigen, um die Zellvariante der Spalte zuzuordnen:
create object lr_cv.
lr_cv->set_key( 'CV_MULTI' ).
Fügen Sie einen Button hinzu:
create object lr_button.
lr_button->set_text( 'myButton' ).
lr_button->set_image_source( '~Icon/Approve' ).
lr_cv->add_editor( lr_button ).
Fügen Sie einen LinkToURL hinzu:
create object lr_link_to_url.
lr_link_to_url->set_image_source( '~Icon/Wiki' ).
lr_link_to_url->set_text( 'SDN Wiki' ).
lr_link_to_url->set_reference( 'http://wiki.sdn.sap.com/wiki/display/WHP/Home' ).
lr_cv->add_editor( lr_link_to_url ).
Fügen Sie einen LinkToAction hinzu:
create object lr_link_to_action.
lr_link_to_action->set_text( 'Details' ).
lr_link_to_action->set_image_source( '~Icon/DetailedSettings' ).
lr_cv->add_editor( lr_link_to_action ).
Fügen Sie einen FileDownload hinzu:
create object lr_file_download exporting data_fieldname = 'FILE'.
lr_file_download->set_visible( cl_wd_uielement=>e_visible-visible ).
lr_file_download->set_enabled_fieldname( 'LOCKED' ).
lr_file_download->set_file_name( 'Data.txt' ).
lr_file_download->set_text( 'Download' ).
lr_file_download->set_image_source( '~Icon/File' ).
lr_file_download->set_mime_type( 'text/plain' ).
lr_file_download->set_behaviour( cl_wd_file_download=>e_behaviour-allow_save ).
lr_cv->add_editor( lr_file_download ).
Fügen Sie einen ToggleButton hinzu:
create object lr_toggle_button exporting checked_fieldname = 'LOCKED'.
lr_toggle_button->set_visible( cl_wd_uielement=>e_visible-visible ).
lr_toggle_button->set_image_source( '~Icon/Locked' ).
lr_toggle_button->set_checked_image_source( '~Icon/Unlocked' ).
lr_cv->add_editor( lr_toggle_button ).
Fügen Sie die Zellvariante der gewünschten Spalte hinzu:
ls_column-r_column->add_cell_variant( lr_cv ).
ls_column-r_column->set_selected_cell_variant( 'CV_MULTI' ).
Ereignisbehandlung
Um zu ermitteln, welches Oberflächenelement innerhalb dieser Spalte geklickt wurde, steht Ihnen der Parameter CELL_EDITOR zur Verfügung.
Weitere Informationen dazu finden Sie im System in der Dokumentation zu den Ereignissen ON_CELL_ACTION und ON_CLICK des INTERFACECONTROLLER SALV_WD_TABLE.
Die Spalte mit diesen Zelleditoren sieht dann so aus: