Show TOC

Mehrere Zelleditoren für eine Spalte definierenLocate this document in the navigation structure

Verwendung

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

Abbildung 1: Klassendiagramm für den Mehrfach-Zelleditor
Vorgehensweise

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.

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

  2. 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' ).

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

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

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

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

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

  8. 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' ).

Hinweis

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.

Ergebnis

Die Spalte mit diesen Zelleditoren sieht dann so aus:

Abbildung 2: "One click action": Mehrere interaktive Oberflächenelemente in einer Zelle