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的原创文章,请关注公众号"汪子熙":