Define class to handle user defined ALVtree toolbar buttons. Insert at end of DATA declaration section but before any ABAP processing.
*--------------------------------------------------------------* * INCLUDE ZTEST_TOOLBAR_EVENT_RECEIVER * *--------------------------------------------------------------* data mr_toolbar type ref to cl_gui_toolbar. "Add to top include CLASS lcl_toolbar_event_receiver DEFINITION. PUBLIC SECTION. METHODS: on_function_selected FOR EVENT function_selected OF cl_gui_toolbar IMPORTING fcode, on_toolbar_dropdown FOR EVENT dropdown_clicked OF cl_gui_toolbar IMPORTING fcode posx posy. ENDCLASS. *-------------------------------------------------------------* * CLASS lcl_toolbar_event_receiver IMPLEMENTATION *-------------------------------------------------------------* * ........ * *-------------------------------------------------------------* CLASS lcl_toolbar_event_receiver IMPLEMENTATION. METHOD on_function_selected. DATA: ls_sflight TYPE sflight. DATA: lt_list_commentary TYPE slis_t_listheader, l_logo TYPE sdydo_value. * Processing for user defined tollbar button goes here CASE fcode. WHEN 'NEXT'. WHEN 'DELETE'. DATA: lt_selected_node TYPE lvc_t_nkey. DATA: e_selected_node TYPE lvc_nkey, e_fieldname TYPE lvc_fname. DATA: lt_outtab_line(100) TYPE c, lt_node_text TYPE lvc_value. CALL METHOD gd_tree->get_selected_nodes CHANGING ct_selected_nodes = lt_selected_node. WHEN 'INSERT_LC'. * Code for function code INSERT_LC goes here WHEN 'INSERT_FC'. * Code for function code INSERT_FC goes here WHEN 'INSERT_FS'. * Code for function code INSERT_FS goes here WHEN 'INSERT_LS'. * Code for function code INSERT_LS goes here WHEN 'INSERT_NS'. * Code for function code INSERT_NS goes here ENDCASE. * update frontend CALL METHOD gd_tree->frontend_update. ENDMETHOD. METHOD on_toolbar_dropdown. * create contextmenu DATA: l_menu TYPE REF TO cl_ctmenu, l_fc_handled TYPE as4flag. CREATE OBJECT l_menu. CLEAR l_fc_handled. * Setup Insert button so options are displayed as drop doan menu CASE fcode. WHEN 'INSERT_LC'. l_fc_handled = 'X'. * insert as last child CALL METHOD l_menu->add_function EXPORTING fcode = 'INSERT_LC' text = 'Insert New Line as Last Child'. "#EC NOTEXT * insert as first child CALL METHOD l_menu->add_function EXPORTING fcode = 'INSERT_FC' text = 'Insert New Line as First Child'. "#EC NOTEXT * insert as next sibling CALL METHOD l_menu->add_function EXPORTING fcode = 'INSERT_NS' text = 'Insert New Line as Next Sibling'."#EC NOTEXT * insert as last sibling CALL METHOD l_menu->add_function EXPORTING fcode = 'INSERT_LS' text = 'Insert New Line as Last Sibling'."#EC NOTEXT * insert as first sibling CALL METHOD l_menu->add_function EXPORTING fcode = 'INSERT_FS' text = 'Insert New Line as First Sibling'. "#EC NOTEXT ENDCASE. * show dropdownbox IF l_fc_handled = 'X'. CALL METHOD mr_toolbar->track_context_menu EXPORTING context_menu = l_menu posx = posx posy = posy. ENDIF. ENDMETHOD. ENDCLASS.