*&---------------------------------------------------------------------* *& Report BCALV_TREE_SIMPLE_DEMO * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------*
report bcalv_tree_simple_demo.
class cl_gui_column_tree definition load. class cl_gui_cfw definition load.
data tree1 type ref to cl_gui_alv_tree_simple.
include <icon>. include bcalv_simple_event_receiver.
data: gt_sflight type sflight occurs 0, "Output-Table gt_fieldcatalog type lvc_t_fcat, "Fieldcatalog gt_sort type lvc_t_sort, "Sortiertabelle ok_code like sy-ucomm. "OK-Code
start-of-selection.
end-of-selection.
call screen 100.
*&---------------------------------------------------------------------* *& Form BUILD_FIELDCATALOG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* form build_fieldcatalog. * get fieldcatalog call function 'LVC_FIELDCATALOG_MERGE' exporting i_structure_name = 'SFLIGHT' changing ct_fieldcat = gt_fieldcatalog.
* change fieldcatalog data: ls_fieldcatalog type lvc_s_fcat. loop at gt_fieldcatalog into ls_fieldcatalog. case ls_fieldcatalog-fieldname. when 'CARRID' or 'CONNID' or 'FLDATE'. ls_fieldcatalog-no_out = 'X'. ls_fieldcatalog-key = ''. when 'PRICE' or 'SEATSOCC' or 'SEATSMAX' or 'PAYMENTSUM'. ls_fieldcatalog-do_sum = 'X'. endcase. modify gt_fieldcatalog from ls_fieldcatalog. endloop.
endform. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form BUILD_OUTTAB *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form build_outtab.
select * from sflight into table gt_sflight. * up to 1 rows.
endform. " BUILD_OUTTAB
*&---------------------------------------------------------------------* *& Form BUILD_SORT_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form build_sort_table.
data ls_sort_wa type lvc_s_sort.
* create sort-table ls_sort_wa-spos = 1. ls_sort_wa-fieldname = 'CARRID'. ls_sort_wa-up = 'X'. ls_sort_wa-subtot = 'X'. append ls_sort_wa to gt_sort.
ls_sort_wa-spos = 2. ls_sort_wa-fieldname = 'CONNID'. ls_sort_wa-up = 'X'. ls_sort_wa-subtot = 'X'. append ls_sort_wa to gt_sort.
ls_sort_wa-spos = 3. ls_sort_wa-fieldname = 'FLDATE'. ls_sort_wa-up = 'X'. append ls_sort_wa to gt_sort.
endform. " BUILD_SORT_TABLE *&---------------------------------------------------------------------* *& Module PBO OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* module pbo output. if tree1 is initial. perform init_tree. endif. set pf-status 'MAIN100'.
endmodule. " PBO OUTPUT *&---------------------------------------------------------------------* *& Module PAI INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* module pai input.
case ok_code. when 'EXIT' or 'BACK' or 'CANC'. perform exit_program.
when others. call method cl_gui_cfw=>dispatch. endcase. clear ok_code. endmodule. " PAI INPUT *&---------------------------------------------------------------------* *& Form exit_program *&---------------------------------------------------------------------* * free object and leave program *----------------------------------------------------------------------* form exit_program.
call method tree1->free. leave program.
endform. " exit_program *&---------------------------------------------------------------------* *& Form register_events *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form 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_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_header_context_men_req. append l_event to lt_events. 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_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 tree1->set_registered_events exporting events = lt_events exceptions cntl_error = 1 cntl_system_error = 2 illegal_event_combination = 3.
* set Handler data: l_event_receiver type ref to lcl_tree_event_receiver. create object l_event_receiver. set handler l_event_receiver->on_add_hierarchy_node for tree1. endform. " register_events *&---------------------------------------------------------------------* *& Form build_header *&---------------------------------------------------------------------* * build table for html_header *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form build_comment using pt_list_commentary type slis_t_listheader p_logo type sdydo_value.
data: ls_line type slis_listheader. * * LIST HEADING LINE: TYPE H clear ls_line. ls_line-typ = 'H'. * LS_LINE-KEY: NOT USED FOR THIS TYPE ls_line-info = 'ALV-tree-simple-Demo: flight-overview'. "#EC NOTEXT append ls_line to pt_list_commentary. * STATUS LINE: TYPE S clear ls_line. ls_line-typ = 'S'. ls_line-key = 'valid to'. "#EC NOTEXT ls_line-info = 'January 29 1999'. "#EC NOTEXT append ls_line to pt_list_commentary. ls_line-key = 'time'. ls_line-info = '2.00 pm'. "#EC NOTEXT append ls_line to pt_list_commentary. * ACTION LINE: TYPE A clear ls_line. ls_line-typ = 'A'. * LS_LINE-KEY: NOT USED FOR THIS TYPE ls_line-info = 'up-to-date data'. "#EC NOTEXT append ls_line to pt_list_commentary.
p_logo = 'ENJOYSAP_LOGO'. endform. *&---------------------------------------------------------------------* *& Form init_tree *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM init_tree. perform build_fieldcatalog.
perform build_outtab.
perform build_sort_table.
* create container for alv-tree data: l_tree_container_name(30) type c, l_custom_container type ref to cl_gui_custom_container. l_tree_container_name = 'TREE1'.
create object l_custom_container exporting container_name = l_tree_container_name exceptions cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5.
* create tree control create object tree1 exporting i_parent = l_custom_container i_node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple i_item_selection = 'X' i_no_html_header = '' i_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.
* create info-table for html-header data: lt_list_commentary type slis_t_listheader, l_logo type sdydo_value. perform build_comment using lt_list_commentary l_logo.
* repid for saving variants data: ls_variant type disvariant. ls_variant-report = sy-repid.
* register events perform register_events.
* create hierarchy call method tree1->set_table_for_first_display exporting it_list_commentary = lt_list_commentary i_logo = l_logo i_background_id = 'ALV_BACKGROUND' i_save = 'A' is_variant = ls_variant changing it_sort = gt_sort it_outtab = gt_sflight it_fieldcatalog = gt_fieldcatalog.
* expand first level call method tree1->expand_Tree exporting i_level = 1.
* optimize column-width call method tree1->column_optimize exporting i_start_column = tree1->c_hierarchy_column_name i_end_column = tree1->c_hierarchy_column_name.
ENDFORM. " init_tree