ALVtree toolbar processingDefine 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.
|
||||||||