Share |

Activate user interaction with ALVtree


Insert the following code into the PBO of the screen after the ALVtree has been created.

i.e after 'CALL METHOD gd_tree->set_table_for_first_display' has been executed.

*&-------------------------------------------------------------*
*&      REGISTER_EVENTS
*&-------------------------------------------------------------*

* define the events which will be passed to the backend
  data: lt_events type cntl_simple_events,
        l_event type cntl_simple_event.

* define the events which will be passed to the backend
  l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_header_click.
  append l_event to lt_events.
  l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
  append l_event to lt_events.

  call method gd_tree->set_registered_events
    exporting
      events = lt_events
    exceptions
      cntl_error                = 1
      cntl_system_error         = 2
      illegal_event_combination = 3.
  if sy-subrc <> 0.
    message x208(00) with 'ERROR'.                       "#EC NOTEXT
  endif.



* set Handler
  data: l_event_receiver type ref to lcl_tree_event_receiver.
  create object l_event_receiver.
  set handler l_event_receiver->handle_node_ctmenu_request
                                                        for gd_tree.
  set handler l_event_receiver->handle_node_ctmenu_selected
                                                        for gd_tree.
  set handler l_event_receiver->handle_item_ctmenu_request
                                                        for gd_tree.
  set handler l_event_receiver->handle_item_ctmenu_selected
                                                        for gd_tree.
  set handler l_event_receiver->handle_item_double_click
                                                        for gd_tree.
  set handler l_event_receiver->handle_header_click
                                                        for gd_tree.