Share |

ALVtree user interaction processing


Define class to handle user interaction other than via toolbar buttons. Insert at end of DATA declaration section but before any ABAP processing.


*--------------------------------------------------------------*
*   INCLUDE BCALV_TREE_EVENT_RECEIVER                          *
*--------------------------------------------------------------*
CLASS lcl_tree_event_receiver DEFINITION.

  PUBLIC SECTION.

    METHODS handle_node_ctmenu_request
      FOR EVENT node_context_menu_request OF cl_gui_alv_tree
        IMPORTING node_key
                  menu.
    METHODS handle_node_ctmenu_selected
      FOR EVENT node_context_menu_selected OF cl_gui_alv_tree
        IMPORTING node_key
                  fcode.
    METHODS handle_item_ctmenu_request
      FOR EVENT item_context_menu_request OF cl_gui_alv_tree
        IMPORTING node_key
                  fieldname
                  menu.
    METHODS handle_item_ctmenu_selected
      FOR EVENT item_context_menu_selected OF cl_gui_alv_tree
        IMPORTING node_key
                  fieldname
                  fcode.

    METHODS handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname.

    METHODS handle_button_click
      FOR EVENT button_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname.

    METHODS handle_link_click
      FOR EVENT link_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname.

    METHODS handle_header_click
      FOR EVENT header_click OF cl_gui_alv_tree
      IMPORTING fieldname.

ENDCLASS.

*---------------------------------------------------------------------*
*       CLASS lcl_tree_event_receiver IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
CLASS lcl_tree_event_receiver IMPLEMENTATION.

  METHOD handle_node_ctmenu_request.
*   append own functions
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER1'
                          text    = 'Usercmd 1'.            "#EC NOTEXT
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER2'
                          text    = 'Usercmd 2'.            "#EC NOTEXT
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER3'
                          text    = 'Usercmd 3'.            "#EC NOTEXT
  ENDMETHOD.

  METHOD handle_node_ctmenu_selected.
    CASE fcode.
      WHEN 'USER1' OR 'USER2' OR 'USER3'.
        MESSAGE i000(0h) WITH 'Node-Context-Menu on Node ' node_key
                              'fcode : ' fcode.             "#EC NOTEXT
    ENDCASE.
  ENDMETHOD.

  METHOD handle_item_ctmenu_request .
*   append own functions
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER1'
                          text    = 'Usercmd 1'.
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER2'
                          text    = 'Usercmd 2'.
    CALL METHOD menu->add_function
                EXPORTING fcode   = 'USER3'
                          text    = 'Usercmd 3'.
  ENDMETHOD.

  METHOD handle_item_ctmenu_selected.
    CASE fcode.
      WHEN 'USER1' OR 'USER2' OR 'USER3'.
        MESSAGE i000(0h) WITH 'Item-Context-Menu on Node ' node_key
                              'Fieldname : ' fieldname.     "#EC NOTEXT
    ENDCASE.
  ENDMETHOD.

  METHOD handle_item_double_click.
* Processing for when user double clicks on ALVtree
  ENDMETHOD.

  METHOD handle_button_click.
* Processing when user clicks button
  ENDMETHOD.

  METHOD handle_link_click.
* ??
  ENDMETHOD.

  METHOD handle_header_click.
* Processing for when user clicks on ALVtree column headers
  ENDMETHOD.

ENDCLASS.