Nein, ich will einen BUTTON mit einem Menü haben. Siehe Bild....jensschladitz hat geschrieben:Sali,
also du willst ein Menü mit einem unter Menü haben richtig ? Dann bau dir in einem Programm einen entsprechende Status zusammen und den gibst du dann an den SALV mit der Methode set_screen_status.
Gruss
Hmpf, dann lieber doch ein eigener Button im Control mit meiner Spezialfunktion....jensschladitz hat geschrieben:Sali,
ich denke nicht, dass das so einfach machbar ist - daher würde ich das Ganze in eine eigene Function/Menü packen (den Standard verschieeben sozusagen) welches ich im Status hinzufüge und dort dann die Standard Function rein bauen plus deine Zusatzfunktion .
Gruss
Code: Alles auswählen.
REPORT ztest.
DATA: gt_data TYPE STANDARD TABLE OF t000 WITH NON-UNIQUE DEFAULT KEY,
go_dock TYPE REF TO cl_gui_docking_container,
go_salv TYPE REF TO cl_salv_table,
go_salv_functions_list TYPE REF TO cl_salv_functions_list.
*----------------------------------------------------------------------*
* CLASS lcl_eventreceiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_eventreceiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object.
ENDCLASS. "lcl_eventreceiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_eventreceiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_eventreceiver IMPLEMENTATION.
METHOD handle_toolbar.
DATA:lo_object TYPE REF TO cl_alv_event_toolbar_set.
BREAK-POINT. " Hier hast du deine Toolbar
ENDMETHOD. "handle_toolbar
ENDCLASS. "lcl_eventreceiver IMPLEMENTATION
START-OF-SELECTION.
SELECT *
INTO TABLE gt_data
FROM t000.
CREATE OBJECT go_dock
EXPORTING
no_autodef_progid_dynnr = 'X'
ratio = 50.
TRY.
cl_salv_table=>factory( EXPORTING
r_container = go_dock
IMPORTING
r_salv_table = go_salv
CHANGING
t_table = gt_data ).
go_salv_functions_list = go_salv->get_functions( ).
go_salv_functions_list->set_all( ).
go_salv->display( ).
PERFORM grab_toolbar. " Muss nach dem Display aufgerufen werden
CATCH cx_salv_msg .
ENDTRY.
END-OF-SELECTION.
WRITE 'Ende'.
*&---------------------------------------------------------------------*
*& Form GRAB_TOOLBAR
*&---------------------------------------------------------------------*
FORM grab_toolbar .
FIELD-SYMBOLS: <child> LIKE LINE OF go_dock->children.
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
READ TABLE go_dock->children INDEX 1 ASSIGNING <child>.
lo_grid ?= <child>.
SET HANDLER lcl_eventreceiver=>handle_toolbar FOR lo_grid.
lo_grid->refresh_table_display( ).
ENDFORM. " GRAB_TOOLBAR
Hi Ralf ,ralf.wenzel hat geschrieben:Nein, ich will einen BUTTON mit einem Menü haben. Siehe Bild....jensschladitz hat geschrieben:Sali,
also du willst ein Menü mit einem unter Menü haben richtig ? Dann bau dir in einem Programm einen entsprechende Status zusammen und den gibst du dann an den SALV mit der Methode set_screen_status.
Gruss
Das ist der Standard-Vorschaubutton, der einen Menüeintrag zeigt. Diesen hätte ich gern um einen weiteren Menüeintrag erweitert, wenns geht, weil ich einen weiteren Funktionscode brauche für eine "besondere" Vorschaufunktion....
Der Button sitzt direkt über dem Grid (also im Control) und nicht etwa oben in der Buttonleiste.
Code: Alles auswählen.
report ztest.
data: gt_data type standard table of t006 with non-unique default key,
go_dock type ref to cl_gui_docking_container,
go_salv type ref to cl_salv_table,
go_salv_functions_list type ref to cl_salv_functions_list.
class lcl_forbidden_enhancement definition inheriting from cl_gui_alv_grid.
public section.
class-methods:
enhance_view_submenu,
handle_toolbar for event toolbar of cl_gui_alv_grid importing e_object,
handle_usercommand for event user_command of cl_gui_alv_grid importing e_ucomm.
class-data: mo_grid type ref to cl_gui_alv_grid.
endclass.
start-of-selection.
select *
into table gt_data
from t006.
create object go_dock
exporting
no_autodef_progid_dynnr = 'X'
ratio = 50.
try.
cl_salv_table=>factory( exporting
r_container = go_dock
importing
r_salv_table = go_salv
changing
t_table = gt_data ).
go_salv_functions_list = go_salv->get_functions( ).
go_salv_functions_list->set_all( ).
go_salv->display( ).
lcl_forbidden_enhancement=>enhance_view_submenu( ).
catch cx_salv_msg .
endtry.
end-of-selection.
write 'Ende'.
class lcl_forbidden_enhancement implementation.
method enhance_view_submenu.
field-symbols: <child> like line of go_dock->children.
read table go_dock->children index 1 assigning <child>.
mo_grid ?= <child>.
set handler handle_toolbar for mo_grid.
set handler handle_usercommand for mo_grid.
mo_grid->refresh_table_display( ). "--> Trigger Toolbar event
endmethod.
method handle_toolbar.
mo_grid->m_cl_menu_button_view->add_function( fcode = 'HUGO'
text = 'Hineingeschummelter Eintrag' ).
endmethod.
method handle_usercommand.
message e_ucomm type 'I'.
endmethod.
endclass.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
autohandel7 • abuma