zoukankan      html  css  js  c++  java
  • ALV_TREE(一:cl_gui_alv_tree_si…

    最近一直在做一个树形展示的东西。
    开始的时候一直用cl_gui_alv_tree_simple 这个类

    首先
    建一个屏幕 9001
    画一个容器,取名:TREE

    定义数据:
    *功能码返回值
    DATAok_code TYPE sy-ucomm,
          save_ok TYPE sy-ucomm.

    DATA:
          wa_container_tree        TYPE        scrfname VALUE 'TREE' 
          wa_custom_container_tree TYPE REF TO cl_gui_custom_container,
          tree_grid                TYPE REF TO cl_gui_alv_tree_simple.

    DATAgb_fieldcat TYPE lvc_t_fcat.                                 "控制输出列
    DATAgb_sortfld  TYPE lvc_t_sort.                                 "控制节点


    "定义事件注册类(使用双击事件)
    *----------------------------------------------------------------------*
      INCLUDE BCALV_TREE_EVENT_REC_DRAGDROP                              *
    *----------------------------------------------------------------------*
    CLASS cl_tree_event_receiver DEFINITION.

      PUBLIC SECTION.
      double click item
        METHODS handle_double_click
          FOR EVENT node_double_click OF cl_gui_alv_tree_simple
          IMPORTING index_outtab
                    grouplevel.
    ENDCLASS                   "CL_TREE_EVENT_RECEIVER DEFINITION
    *---------------------------------------------------------------------*
          CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION
    *---------------------------------------------------------------------*
    CLASS cl_tree_event_receiver IMPLEMENTATION.
      METHOD handle_double_click.
        CHECK NOT index_outtab IS INITIAL.
        "获取当前行
        READ TABLE gt_show(数据内表) INTO l_wa_data INDEX index_outtab.
        if sy-subrc  = 0.
        "事件操作
        endif.
      ENDMETHOD                   "HANDLE_DOUBLE_CLICK
    ENDCLASS                   "CL_TREE_EVENT_RECEIVER IMPLEMENTATION



    下面是创建树的过程:
    FORM zform_create_tree.
      IF wa_custom_container_tree IS INITIAL.
       "事件相关
        DATAtree_event_receiver TYPE REF TO cl_tree_event_receiver.
        CREATE OBJECT tree_event_receiver.
       
       "报表头
        DATA ls_list_comm  TYPE slis_t_listheader.
        DATA ls_alist_comm TYPE slis_listheader.

        ls_alist_comm-typ 'H'.
        ls_alist_comm-info '报表'.
        APPEND ls_alist_comm TO ls_list_comm.

        "填充输出结构
        PERFORM zform_fieldcat.
        "控制输出层次
        PERFORM zform_field_level.

        CREATE OBJECT wa_custom_container_tree
          EXPORTING
            container_name wa_container_tree.

        CREATE OBJECT tree_grid
          EXPORTING
            i_parent wa_custom_container_tree.

        CALL METHOD tree_grid->set_table_for_first_display
          EXPORTING
            it_list_commentary ls_list_comm
          i_structure_name   'ZTEST_SHOW'         "se11建的想要展示的结构
          CHANGING
            it_sort            gb_sortfld
            it_fieldcatalog    gb_fieldcat
            it_outtab          gt_show[].           "数据表

        CALL METHOD tree_grid->expand_tree
          EXPORTING
            i_level 1.


     "调用事件
    ** register events
        PERFORM register_events.
    ** set handler for tree1
        SET HANDLER tree_event_receiver->handle_double_click FOR tree_grid.
      ENDIF.
    ENDFORM.      


    控制输出字段

    FORM zform_fieldcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name 'ZTEST_BJH_CHECK_SHOW1'
        CHANGING
          ct_fieldcat      gb_fieldcat.

      DATA ls_fldcat TYPE lvc_s_fcat.

      LOOP AT gb_fieldcat INTO ls_fldcat.
         ls_fldcat-hotspot 'X'.
        CASE ls_fldcat-fieldname.
          WHEN
            字段某某
            ls_fldcat-outputlen 15. "设置长度是15
          WHEN OTHERS.
            ls_fldcat-no_out 'X'.   "不需要显示的设置为不输出
        ENDCASE.

        IF ls_fldcat-fieldname 'TSLVT'. "对TSLVT(金额)字段进行求和
         ls_fldcat-do_sum 'X'.
        ENDIF.
        MODIFY gb_fieldcat FROM ls_fldcat.
      ENDLOOP.
    ENDFORM                   "zform_fieldcat


    "控制展现层次(第一层是地区,第二层是上级科目,第三层是目标科目
    FORM zform_field_level.
      DATA:
          l_index TYPE int4 VALUE '1'.
      DATA ls_sortfld TYPE lvc_s_sort.


      ls_sortfld-spos         l_index.
      ls_sortfld-fieldname    'QYDM'           "区域           "
      ls_sortfld-up           'X'.
      ls_sortfld-subtot       'X'.
      APPEND ls_sortfld TO gb_sortfld.
      l_index l_index 1.

      ls_sortfld-spos         l_index.
      ls_sortfld-fieldname    'HKONT_PREV' "上级科目编号              "
      ls_sortfld-up           'X'.
      ls_sortfld-subtot       'X'.
      APPEND ls_sortfld TO gb_sortfld.
      l_index l_index 1.


      ls_sortfld-spos         l_index.
      ls_sortfld-fieldname    'HKONT'       "科目编号              "
      ls_sortfld-up           'X'.
      ls_sortfld-subtot       'X'.
      APPEND ls_sortfld TO gb_sortfld.
      l_index l_index 1.
    ENDFORM                   "zform_field_level

    最后类似这样的结果
    ALV_TREE(一:cl_gui_alv_tree_simple)

    http://blog.sina.com.cn/sapliumeng
  • 相关阅读:
    awk
    Python自动化开发之python的常用模块
    sed
    python自动化开发-8
    正则表达式-2-正则表达式实战1
    linux之sort和uniq
    SSH免密登录
    Docker下安装Mongodb
    Docker下安装Elasticsearch
    Docker下安装RabbitMQ
  • 原文地址:https://www.cnblogs.com/senlinmu110/p/3802205.html
Copyright © 2011-2022 走看看