SAP ALV tree的一个最简单demo
- 2020 年 1 月 21 日
- 筆記
report zbcalv_tree_01. types: begin of ty_tree_node, id type char18, text type char40, end of ty_tree_node. data: g_alv_tree type ref to cl_gui_alv_tree, g_custom_container type ref to cl_gui_custom_container. data: gt_sflight type sflight occurs 0, "Output-Table gt_scala TYPE STANDARD TABLE OF ty_tree_node, ok_code like sy-ucomm, save_ok like sy-ucomm, "OK-Code g_max type i value 255. end-of-selection. call screen 100. module pbo output. set pf-status 'MAIN100'. set titlebar 'MAINTITLE'. if g_alv_tree is initial. perform init_tree. call method cl_gui_cfw=>flush exceptions cntl_system_error = 1 cntl_error = 2. assert sy-subrc = 0. endif. endmodule. " PBO OUTPUT module pai input. save_ok = ok_code. clear ok_code. case save_ok. when 'EXIT' or 'BACK' or 'CANC'. perform exit_program. when others. call method cl_gui_cfw=>dispatch. endcase. call method cl_gui_cfw=>flush. endmodule. " PAI INPUT form init_tree. data: l_tree_container_name(30) type c. l_tree_container_name = 'CCONTAINER1'. create object g_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. if sy-subrc <> 0. message x208(00) with 'ERROR'(100). endif. create object g_alv_tree exporting parent = g_custom_container node_selection_mode = cl_gui_column_tree=>node_sel_mode_single item_selection = 'X' no_html_header = 'X' 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. if sy-subrc <> 0. message x208(00) with 'ERROR'. "#EC NOTEXT endif. data l_hierarchy_header type treev_hhdr. perform build_hierarchy_header changing l_hierarchy_header. call method g_alv_tree->set_table_for_first_display exporting i_structure_name = 'SFLIGHT' is_hierarchy_header = l_hierarchy_header changing it_outtab = gt_sflight. "table must be empty ! perform jerry_create_tree. call method g_alv_tree->frontend_update. endform. form jerry_create_tree. DATA: p_relat_key type lvc_nkey, p_node_key type lvc_nkey, ls_sflight LIKE LINE OF gt_sflight. call method g_alv_tree->add_node exporting i_relat_node_key = p_relat_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Jerry' is_outtab_line = ls_sflight importing e_new_node_key = p_node_key. call method g_alv_tree->add_node exporting i_relat_node_key = p_node_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Scala' is_outtab_line = ls_sflight importing e_new_node_key = p_node_key. "ls_sflight-id = 'Spring'. "ls_sflight-text = 'SSH Integration'. call method g_alv_tree->add_node exporting i_relat_node_key = p_node_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'i042416' is_outtab_line = ls_sflight importing e_new_node_key = p_node_key. endform. " init_tree form build_hierarchy_header changing p_hierarchy_header type treev_hhdr. p_hierarchy_header-heading = 'Month/Carrier/Date'(300). p_hierarchy_header-tooltip = 'Flights in a month'(400). p_hierarchy_header-width = 30. p_hierarchy_header-width_pix = ' '. endform. " build_hierarchy_header form exit_program. call method g_custom_container->free. leave program. endform. " exit_program # 另一个demo REPORT zbcalv_tree_01. TYPES: BEGIN OF ty_tree_node, id TYPE char18, text TYPE char40, END OF ty_tree_node. DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree, g_custom_container TYPE REF TO cl_gui_custom_container, gt_scala TYPE STANDARD TABLE OF ty_tree_node, ls_sflight LIKE LINE OF gt_scala, ok_code LIKE sy-ucomm, save_ok LIKE sy-ucomm, "OK-Code g_max TYPE i VALUE 255. END-OF-SELECTION. DATA(lo_tool) = NEW zcl_alv_tool( ). DATA(lt_fieldcat) = lo_tool->get_fieldcat_by_data( ls_sflight ). CALL SCREEN 100. MODULE pbo OUTPUT. SET PF-STATUS 'MAIN100'. SET TITLEBAR 'MAINTITLE'. IF g_alv_tree IS INITIAL. PERFORM init_tree. CALL METHOD cl_gui_cfw=>flush EXCEPTIONS cntl_system_error = 1 cntl_error = 2. ASSERT sy-subrc = 0. ENDIF. ENDMODULE. " PBO OUTPUT MODULE pai INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN 'EXIT' OR 'BACK' OR 'CANC'. PERFORM exit_program. WHEN OTHERS. CALL METHOD cl_gui_cfw=>dispatch. ENDCASE. CALL METHOD cl_gui_cfw=>flush. ENDMODULE. " PAI INPUT FORM init_tree. g_custom_container = lo_tool->GET_CONTAINER( 'CCONTAINER1' ). g_alv_tree = lo_tool->get_tree( g_custom_container ). DATA l_hierarchy_header TYPE treev_hhdr. PERFORM build_hierarchy_header CHANGING l_hierarchy_header. CALL METHOD g_alv_tree->set_table_for_first_display EXPORTING is_hierarchy_header = l_hierarchy_header CHANGING it_fieldcatalog = lt_fieldcat it_outtab = gt_scala. PERFORM jerry_create_tree. CALL METHOD g_alv_tree->frontend_update. ENDFORM. FORM jerry_create_tree. DATA: p_relat_key TYPE lvc_nkey, p_node_key TYPE lvc_nkey. CALL METHOD g_alv_tree->add_node EXPORTING i_relat_node_key = p_relat_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Jerry' is_outtab_line = ls_sflight IMPORTING e_new_node_key = p_node_key. CALL METHOD g_alv_tree->add_node EXPORTING i_relat_node_key = p_node_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'Scala' is_outtab_line = ls_sflight IMPORTING e_new_node_key = p_node_key. ls_sflight-id = 'Spring'. ls_sflight-text = 'SSH Integration'. CALL METHOD g_alv_tree->add_node EXPORTING i_relat_node_key = p_node_key i_relationship = cl_gui_column_tree=>relat_last_child i_node_text = 'i042416' is_outtab_line = ls_sflight IMPORTING e_new_node_key = p_node_key. ENDFORM. " init_tree FORM build_hierarchy_header CHANGING p_hierarchy_header TYPE treev_hhdr. p_hierarchy_header-heading = 'Month/Carrier/Date'(300). p_hierarchy_header-tooltip = 'Flights in a month'(400). p_hierarchy_header-width = 30. p_hierarchy_header-width_pix = ' '. ENDFORM. " build_hierarchy_header FORM exit_program. CALL METHOD g_custom_container->free. LEAVE PROGRAM. ENDFORM. " exit_program
要获取更多Jerry的原创文章,请关注公众号"汪子熙":