Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

user command in trees

Former Member
0 Kudos

Hi all,

I created trees which displays kunnr value of kna1 table.My requirement is whenever i double click on that kunnr it must display the sales document number from the vbak table for that corresponding kunnr value..

how to use user command in trees.....

Regards,

Deepa

5 REPLIES 5

Former Member
0 Kudos

hii

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 = <b>cl_gui_column_tree=>eventid_item_double_click.
  append l_event to lt_events.</b>
  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.
  <b>set handler l_event_receiver->handle_item_double_click
                                                        for gd_tree.</b>
  set handler l_event_receiver->handle_header_click
                                                        for gd_tree.

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.

    <b>METHODS handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname.</b>

    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.

regards

Naresh

Former Member
0 Kudos

hi

refer to <b>BCALV_TREE_02</b>

for event handling in trees

u can also search <b>bcalv*</b> in se38 & can alist of alv tree programs

plz reward if useful

former_member188685
Active Contributor
0 Kudos

Hi,

you should have local event handler method to respond the double click on item.

METHODS handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key
                fieldname.

the above one should be implemented and then need to set the handler.

in the implementation get the order number and set the parameter id, and then call transaction TCODE skip initial screen ..

Regards

vijay

0 Kudos

Hi,

Refer the demo program :

SAPSIMPLE_TREE_CONTROL_DEMO

<b>Reward points if it helps.</b>

Former Member
0 Kudos

hi contact,

check this link:

http://www.sapdevelopment.co.uk/reporting/alv/alvtree%5Calvtree_basic.htm

reward if helpful.

regards,

keerthi.