DATA : lr_cust TYPE REF TO cl_gui_custom_container,
lr_tree TYPE REF TO cl_gui_alv_tree,
lt_scarr TYPE TABLE OF scarr,
gt_scarr TYPE TABLE OF scarr,
ls_scarr TYPE scarr,
ls_header TYPE treev_hhdr,
lv_node_key1 TYPE lvc_nkey,
lv_node_key2 TYPE lvc_nkey,
lv_node_text TYPE lvc_value.
START-OF-SELECTION.
CALL SCREEN 0001.
*&———————————————————————*
*& Module STATUS_0001 OUTPUT
*&———————————————————————*
MODULE status_0001 OUTPUT.
SET PF-STATUS ‘STATUS’.
* SET TITLEBAR ‘xxx’.
ENDMODULE. ” STATUS_0001 OUTPUT
*&———————————————————————*
*& Module GET_DATA OUTPUT
*&———————————————————————*
MODULE get_data OUTPUT.
IF lt_scarr IS INITIAL.
SELECT * FROM scarr INTO TABLE lt_scarr.
ENDIF.
ENDMODULE. ” GET_DATA OUTPUT
*&———————————————————————*
*& Module BUILD_TREE OUTPUT
*&———————————————————————*
MODULE build_tree OUTPUT.
IF lr_cust IS NOT BOUND.
CREATE OBJECT lr_cust
EXPORTING
container_name = ‘ALV_TREE’
repid = sy–repid
dynnr = sy–dynnr
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
ENDIF.
IF lr_tree IS NOT BOUND.
CREATE OBJECT lr_tree
EXPORTING
parent = lr_cust
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ‘X’ ” Can Individual Items be Selected?
no_toolbar = ‘ ‘ ” NO_TOOLBAR
no_html_header = ‘X’ ” NO_HTML_HEADER
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.
ENDIF.
* Prepairing Header
ls_header–heading = ‘FLight Information’.
ls_header–tooltip = ‘Flight Data’.
ls_header–width = 40.
ls_header–width_pix = ‘ ‘.
CALL METHOD lr_tree->set_table_for_first_display
EXPORTING
i_structure_name = ‘SCARR’
is_hierarchy_header = ls_header
CHANGING
it_outtab = gt_scarr. ” table must be initial
* Prepairing Root node
lv_node_text = ‘Flight Code’.
CALL METHOD lr_tree->add_node
EXPORTING
i_relat_node_key = ‘ ‘
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = lv_node_text
IMPORTING
e_new_node_key = lv_node_key1 ” get the root node key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
* Create Hierarchy ( nodes )
LOOP AT lt_scarr INTO ls_scarr.
lv_node_text = ls_scarr–carrname.
CALL METHOD lr_tree->add_node
EXPORTING
i_relat_node_key = lv_node_key1 ” pass the root node key
i_relationship = cl_gui_column_tree=>relat_last_child ” How to Insert Node
* is_outtab_line = ls_scarr ” Attributes of Inserted Node
i_node_text = lv_node_text ” Hierarchy Node Text
IMPORTING
e_new_node_key = lv_node_key2 ” Key of New Node Key
EXCEPTIONS
relat_node_not_found = 1
node_not_found = 2
OTHERS = 3.
ENDLOOP.
* Must Call this method to display nodes on the container
CALL METHOD lr_tree->frontend_update.
ENDMODULE. ” BUILD_TREE OUTPUT
*&———————————————————————*
*& Module USER_COMMAND_0001 INPUT
*&———————————————————————*
MODULE user_command_0001 INPUT.
CASE sy–ucomm.
WHEN ‘BACK’ OR ‘EXIT’ OR ‘CANCEL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. ” USER_COMMAND_0001 INPUT
Screen flow Logic.
Screen Layout.
Execute the program.
Here we have the tree.
Now remove the comment line so that we can display all the columns. Execute the program.
Here is how the Tree ALV is displayed.