ALV_TREE 一:cl_gui_alv_tree_simple

网友投稿 240 2022-11-28

ALV_TREE 一:cl_gui_alv_tree_simple

先看效果图:

用cl_gui_alv_tree_simple 这个类

下面直接上干货:

首先

建一个屏幕 9001

画一个容器,取名:TREE

定义数据:

*功能码返回值DATA: ok_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.

DATA: gb_fieldcat TYPE lvc_t_fcat.                                DATA: gb_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_CLICKENDCLASS.                    "CL_TREE_EVENT_RECEIVER IMPLEMENTATION

下面是创建树的过程:

FORM zform_create_tree.  IF wa_custom_container_tree IS INITIAL.

"事件相关    DATA: tree_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'              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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Acess 数据库 查询数据表结构等问题小记
下一篇:Java如何利用Socket进行数据读写
相关文章

 发表评论

暂时没有评论,来抢沙发吧~