05-13-2014 2:24 PM
Hey guys,
I have an uncommon problem with cl_gui_alv_tree.
My tree has 2 layers, Root and child. Both of them have layout-class cl_gui_column_tree=>item_class_checkbox.
Everithing works fine! (without_events.jpg)
But if I register event "checkbox_change" with method SET_REGISTERED_EVENTS the childnodes disapear! (with_events.jpg)
Does anyone know a solution?
here's some code:
data; gr_alv_0200 type ref to cl_gui_alv_tree.
METHOD init_dynpro_0200.
DATA: ls_hierarchy_header TYPE treev_hhdr.
IF gr_cont_0200 IS INITIAL.
CREATE OBJECT gr_cont_0200
EXPORTING
container_name = 'CC200'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
IF gr_alv_0200 IS INITIAL.
CREATE OBJECT gr_alv_0200
EXPORTING
* lifetime =
parent = gr_cont_0200
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_toolbar = 'X'
no_html_header = 'X'
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
OTHERS = 8.
CHECK sy-subrc EQ 0.
ls_hierarchy_header-heading = 'Hierarchy Header'. "#EC NOTEXT
ls_hierarchy_header-tooltip =
'This is the Hierarchy Header !'. "#EC NOTEXT
ls_hierarchy_header-width = 100.
ls_hierarchy_header-width_pix = ''.
tree_create_fcat( ).
CALL METHOD gr_alv_0200->set_table_for_first_display
EXPORTING
is_hierarchy_header = ls_hierarchy_header
i_background_id = 'ALV_BACKGROUND'
CHANGING
it_outtab = gt_treenodes
it_fieldcatalog = gt_fcat_0200.
DATA: lt_events TYPE cntl_simple_events,
ls_event LIKE LINE OF lt_events.
ls_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
APPEND ls_event TO lt_events.
CALL METHOD gr_alv_0200->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
SET HANDLER me->on_tree_checkbox_change FOR gr_alv_0200.
ENDIF.
ENDMETHOD.
METHOD tree_add_node.
DATA: ls_node_text TYPE lvc_value.
* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = gr_alv_0200->c_hierarchy_column_name.
ls_item_layout-style = cl_gui_column_tree=>style_intensifd_critical.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
ls_item_layout-editable = 'X'.
APPEND ls_item_layout TO lt_item_layout.
* add node
ls_node_text = is_data-name.
DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.
CALL METHOD gr_alv_0200->add_node
EXPORTING
i_relat_node_key = iv_parent
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = ls_node_text
is_outtab_line = is_data
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = ev_node_id.
ENDMETHOD.
in my current class I've method on_tree_checkbox_change to handle the event. If the event is registered, the method gets called.
05-22-2014 7:43 AM
Solved by my own:
I had to implement method get_registered_events( ), append the new event to the table and call set_registered_events( ).
The table from get_registered_events( ) is already filled with events.
05-22-2014 7:43 AM
Solved by my own:
I had to implement method get_registered_events( ), append the new event to the table and call set_registered_events( ).
The table from get_registered_events( ) is already filled with events.