Application Development and Automation 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: 
Read only

ALV tree

Former Member
0 Likes
1,316

Hi ,

I am using CL_GUI_LIST_TREE to display my tree, here i've a problem in the left pane we have option to expand /collapse .i'm able to capture the event for expansion, but i'm unable to find the event for collapse.

(left side <| click for expand/collapse).what is the event for collapse? if any one have any idea please let me know..

Regards

Vijay

10 REPLIES 10
Read only

Former Member
0 Likes
1,147

Hi Vijay,

The super class of CL_GUI_LIST_TREE ,

CL_ITEM_TREE_CONTROL has some methods for collapse

I hope this will help.

Regards,

GSR.

Read only

0 Likes
1,147

Hi Srinivas,

i'know that, in cl_gui_list_tree it self i have a mthod for collapse. but the problem here is i want te event which fires after you click on collapse.

i hope it is clear...

Regards

vijay

Read only

0 Likes
1,147

Hi kulkarni,

yea for expansion i've used the same event, but that is not triggering for collapse,

are you able to make it tirgger for both.please let me know..

Regards

vijay

Read only

0 Likes
1,147

Hello,

set handler me->handle_expand_nc
set handler me->handle_node_double_click
set handler me->handle_node_context_menu_rq
set handler me->handle_node_context_menu_sel
set handler me->handle_item_double_click
set handler me->handle_item_context_menu_rq
set handler me->handle_item_context_menu_sel
<b>set handler me->handle_selection_changed</b>
set handler me->handle_button_click
set handler me->handle_link_click
set handler me->handle_header_click
set handler me->handle_checkbox_change
set handler me->handle_item_keypress
set handler me->handle_node_keypress
set handler me->handle_on_drag
set handler me->handle_on_drop
set handler me->handle_on_drag_multiple
set handler me->handle_on_drop_complete
set handler me->handle_on_drop_complete_mult
set handler me->handle_on_drop_get_flavor

These are the handlers events that you can use in tree i do not see one for collapse however there exists a method

COLLAPSE_SUBTREE will try to use it and see if by this if is possible in some way to do something when the subtree collapses.

Regards,

Shekhar Kulkarni

Read only

0 Likes
1,147

Hi,

i used all of the above events for different things, i could not able to find it for collapse, yes i know collapse_subtree method,but

when can i call this method..., where can i call this method if there no event related.

any way thanks for your response.

Regards

vijay

Message was edited by: Vijay Babu Dudla

Read only

0 Likes
1,147

sorry for my english. try this... it works but the EXPAND method is not the best one

CLASS cl_tree_event_receiver DEFINITION.

PUBLIC SECTION.

  • double click item

METHODS handle_double_click

FOR EVENT node_double_click OF cl_gui_alv_tree

IMPORTING node_key.

  • Drag

METHODS handle_on_drag

FOR EVENT on_drag OF cl_gui_alv_tree

IMPORTING drag_drop_object

fieldname

node_key.

METHODS on_before_user_command

FOR EVENT before_user_command OF cl_gui_alv_tree

IMPORTING ucomm.

METHODS on_after_user_command

FOR EVENT after_user_command OF cl_gui_alv_tree

IMPORTING ucomm.

PRIVATE SECTION.

ENDCLASS. "CL_TREE_EVENT_RECEIVER DEFINITION

----


  • CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION

----


CLASS cl_tree_event_receiver IMPLEMENTATION.

  • handle double_click

METHOD handle_double_click.

CHECK NOT node_key IS INITIAL.

  • PERFORM display_ss_log USING node_key.

PERFORM display_bkpf_infos USING node_key.

ENDMETHOD. "HANDLE_DOUBLE_CLICK

  • Drag & Drop

METHOD handle_on_drag.

CHECK NOT node_key IS INITIAL.

PERFORM display_ss_log USING node_key.

CALL METHOD cl_gui_cfw=>set_new_ok_code

EXPORTING

new_code = fcode_entr.

ENDMETHOD. "HANDLE_ON_DRAG

METHOD on_before_user_command.

DATA: l_selected_parent TYPE lvc_nkey.

DATA: l_selected_node TYPE lvc_nkey.

DATA: l_selected_nodes TYPE lvc_t_nkey.

DATA: w_lines TYPE i.

DATA: l_key type lvc_nkey.

  • MESSAGE i000(0k) WITH text-e18 ucomm.

CASE ucomm.

WHEN '&COLLAPSE'.

CALL METHOD tree1->collapse_all_nodes.

WHEN '&EXPAND'.

CALL METHOD tree1->get_selected_item

IMPORTING

e_selected_node = l_selected_node

EXCEPTIONS

no_item_selection = 1

cntl_system_error = 2

failed = 3

OTHERS = 4.

IF sy-subrc <> 0.

CALL METHOD tree1->get_top_node

IMPORTING

e_node_key = l_selected_node.

ENDIF.

APPEND l_selected_node TO l_selected_nodes.

CALL METHOD tree1->expand_nodes

EXPORTING

it_node_key = l_selected_nodes.

WHEN OTHERS.

ENDCASE.

ENDMETHOD. "on_before_user_command

METHOD on_after_user_command.

  • MESSAGE i000(0k) WITH text-e20 ucomm.

  • CASE ucomm.

  • WHEN '&COLLAPSE'.

  • CALL METHOD tree1->collapse_all_nodes.

  • WHEN '&EXPAND'.

  • WHEN OTHERS.

  • ENDCASE.

ENDMETHOD. "on_after_user_command

ENDCLASS. "CL_TREE_EVENT_RECEIVER IMPLEMENTATION

*

DATA: tree_event_receiver TYPE REF TO cl_tree_event_receiver.

Read only

Former Member
0 Likes
1,147

Hi,

Look at the link may be you will find some thing.

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

Thanks.

If this helps you reward with points.

Read only

Former Member
0 Likes
1,147

Hello,

lv_tree
      exporting
          parent              = g_custom_container
          node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
          item_selection      = 'X'
          no_html_header      = ''
          no_toolbar          = ''
      exceptions
          cntl_error                   = 1
          cntl_system_error            = 2
          create_error                 = 3
          lifetime_error               = 4
          illegal_node_selection_mode  = 5
          failed                       = 6
          illegal_column_name          = 7.



    perform build_hierarchy_header changing l_hierarchy_header.

    p_logo = 'Your Logo'.

    perform f_build_comment changing is_header
                                     it_header.

    is_variant-report = sy-repid.
    is_variant-log_group = 'LIST'.


    call method g_alv_tree->set_table_for_first_display
       exporting
                  i_structure_name     = 'Y1MM_IMAC010_ALV'
                  is_variant           = is_variant
                  i_save               = 'A'
                  is_hierarchy_header  = l_hierarchy_header
                  it_list_commentary   = it_header
                  i_logo               = p_logo
                  i_background_id      = 'ALV_BACKGROUND'
       changing
                  it_outtab            = i_out_tree.

* §4. Create hierarchy (nodes and leaves)
    perform create_hierarchy.

* §5. Send data to frontend.
    call method g_alv_tree->frontend_update.

* Events registering for double click event
    perform f_register_events.


form f_register_events.
* Event registration: tell ALV Tree which events shall be passed
* from frontend to backend.
  data: lt_events type cntl_simple_events,
        l_event type cntl_simple_event,
        l_event_receiver type ref to lcl_tree_event_receiver.
*        l_tb_event_receiver type ref to toolbar_event_receiver.
*        l_dnd_event_receiver TYPE REF TO lcl_dnd_event_receiver.

* Register additional events for your own purposes:
* §Remark: you do not need to register dnd events on frontend

* Note 648983: Register double click event in any case!
* If parameter NO_CALL_TA is set 'X' (e.g. when called from
* batch information cockpit) double click on an BWU elemet results
* in calling the respective transaction starting a new task.
* If parameter NO_CALL_TA is initial, transactions will be displayed
* in the same mode as the batch-where-used list.
  call method g_alv_tree->get_registered_events
        importing events = lt_events.

* Frontend registration(ii): add additional event ids
  l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
  append l_event to lt_events.

* Frontend registration(iii):provide new event table to alv tree
  call method g_alv_tree->set_registered_events
    exporting
      events = lt_events
    exceptions
      cntl_error                = 1
      cntl_system_error         = 2
      illegal_event_combination = 3.
  if sy-subrc <> 0.
* Fehler in der Control-Verarbeitung! (&)
    message s300(12) with 'ERROR'.
  endif.



* Register events on backend (ABAP Objects event handling)
  create object l_event_receiver.
  set handler l_event_receiver->handle_item_double_click
              for g_alv_tree.

endform.                    " f_register_events.


In the data declaration 
CLASS lcl_tree_event_receiver DEFINITION.

  PUBLIC SECTION.
* Define an event handler method for each event you want to react to.
    METHODS handle_item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree
      IMPORTING node_key fieldname sender.
* 'sender' is an implicit event parameter that is provided by
* ABAP Objects runtime system. It contains a reference to the
* object that fired the event. You may directly use it to
* call methods of this instance.
ENDCLASS.
*******************************************************************
CLASS lcl_tree_event_receiver IMPLEMENTATION.
* Implement your event handler methods.

  METHOD handle_item_double_click.
    PERFORM f_show_dclick USING node_key fieldname.
  ENDMETHOD.
ENDCLASS.

here i have defined for double click you need to define for expand/collapse that.. is

METHOD HANDLE_EXPAND_NC.

this should solve your problem.

Regards,

Shekhar Kulkarni

Read only

Former Member
0 Likes
1,147

I solved it on my own

Read only

0 Likes
1,147

Hi Vijay,

how did you solve the problem. I have the same problem an I don't know how to work around.

Thank you.