0
点赞
收藏
分享

微信扫一扫

ALV_TREE(一:cl_gui_alv_tree_simple)_SAP刘梦

最近一直在做一个树形展示的东西。

开始的时候一直用 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_CLICK

ENDCLASS.                    "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'         "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)_SAP刘梦_java

欢迎关注订阅号:SAP学习记录 (SAPlearning )

PO <wbr><wbr><wbr>text <wbr><wbr><wbr>copy <wbr><wbr><wbr>rules <wbr><wbr><wbr>:copy <wbr><wbr><wbr>PR <wbr><wbr><wbr>item <wbr><wbr><wbr>text <wbr><wbr><wbr>to <wbr><wbr><wbr>PO



举报

相关推荐

0 条评论