habe das Problem, daß ich eine ALV-Liste über den FB ausgebe und darauf vier neue Buttons anlegen muß. Die Buttons anlegen ist kein Problem, aber ich würde es gerne auf einen Button mit Mehrfachauswahl beschränken. Hat das schon jemand gemacht?
wenn ich's richtig verstanden hab, willst du nen Button haben, den man wie ein DropDown aufmachen kann ????
Glaub nicht, daß das in der Drucktastenleiste geht. SAP macht beim ALV (REUSE) selber mehrere Button für's Layout. Beim ALV (ABAP Object) geht's. Da gibt's auch ein Bsp. dazu (BCALV_GRID_07).
genau richtig verstanden. Da ich auf einer ALV-Liste zusätzlich 4 Button's anlegen soll, wollte ich gleich eine elegante Lösung wählen und einen Button mit DropDown machen. Habe eine ganze weile gesucht (aber leider nicht's gefunden ) und nur noch die Idee gehabt mal hier zu fragen ob so was geht.
Ist zwar schon lange her, dass hier was gepostet wurde,
aber für alle Suchenden hier die Lösung.
für das ALV in einer Klasse ein Ereignishandler anlegen:
[b]Definition:[/b]
handle_toolbar
for event toolbar of cl_gui_alv_grid
importing e_object e_interactive ...
[b]Implementation:[/b]
[i]Button anlegen mit Typ = 2:[/i]
loop at e_object->mt_toolbar into r_toolbar
where function = '&PRINT_BACK'.
r_toolbar-function = 'PRI_LST'.
r_toolbar-butn_type = 2.
modify e_object->mt_toolbar from r_toolbar.
endloop.
[i]Im Handle handle_menu_button wird das
Menü zum Button erzeugt:[/i]
[b]definition:[/b]
handle_menu_button
for event menu_button of cl_gui_alv_grid
importing e_object e_ucomm.
[b]Implementation[/b]
create object ct_pri_menu.
call method ct_pri_menu->add_function
exporting
fcode = 'PRI_X'
icon = icon_store_location
text = 'PRINT_X'.
Und natürlich die Zuweisung der Ereignisse nicht vergessen:
set handler event_receiver->handle_toolbar for alv_grid.
set handler event_receiver->handle_menu_button for alv_grid.
es ging, glaube ich, um den FuBa 'REUSE_ALV_GRID_DISPLAY'. Da hast du nur die Möglichkeit, einen eigenen Status mit zu geben. Und in diesem können dann eigene Buttons angelegt werden.
Wenn es um die direkte Verwendung eines Objekts der Klasse CL_GUI_ALV_GRID geht, hast du natürlich recht aber dazu gab es hier ja auch schon den Hinweis mit BCALV_GRID_07. Neben deinem Coding würde ich noch ein freundliches 'set_toolbar_interactive' an das ALV-Grid schicken.