您的位置:首页 > 其它

实战SAP:【总结】ALV TREE

2009-08-07 17:45 162 查看
 SCREEN中定义控制区域:ALV1

 

DATA: wa_container TYPE scrfname VALUE 'ALV1',
          alv_grid TYPE REF TO cl_gui_alv_tree_simple,
          wa_custom_container TYPE REF TO cl_gui_custom_container.       "创建对象

DATA ls_list_comm TYPE slis_t_listheader.                                                "创建表头
    DATA ls_alist_comm TYPE slis_listheader.
    ls_alist_comm-typ = 'H'.
    ls_alist_comm-info = 'ALV TREE演示'.
    APPEND ls_alist_comm TO ls_list_comm.

 

代码如下:

 

*&---------------------------------------------------------------------*
*& Report  ZALV_TREE_WYZ
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zalv_tree_wyz.

DATA: ok_code TYPE sy-ucomm,
save_ok LIKE ok_code.
*ALV字段内表、分类字段内表
DATA: gw_fieldcat TYPE lvc_t_fcat,
gb_sortfield TYPE lvc_t_sort.

DATA wa_spfli TYPE TABLE OF spfli.
*赋值
SELECT * INTO TABLE wa_spfli FROM spfli.

DATA: wa_container TYPE scrfname VALUE 'ALV1',
alv_grid TYPE REF TO cl_gui_alv_tree_simple,   "ALV TREE定义
wa_custom_container TYPE REF TO cl_gui_custom_container.

CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATU100'.
*  SET TITLEBAR 'xxx'.
IF wa_custom_container IS INITIAL.
*ALV表头设定
DATA ls_list_comm TYPE slis_t_listheader.
DATA ls_alist_comm TYPE slis_listheader.
ls_alist_comm-typ = 'H'.
ls_alist_comm-info = 'ALV TREE演示'.
APPEND ls_alist_comm TO ls_list_comm.
*字段清单、字段长度、汇总字段方法调用
PERFORM bldcat.
*创建TREE分类字段清单以及先后顺序
PERFORM bldsortfld.
*显示ALV TREE对象
CREATE OBJECT wa_custom_container
EXPORTING container_name = wa_container.
CREATE OBJECT alv_grid
EXPORTING i_parent = wa_custom_container.
*展开第一层
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
it_list_commentary = ls_list_comm
i_structure_name   = 'SPFLI'
CHANGING
it_sort            = gb_sortfield
it_fieldcatalog    = gw_fieldcat
it_outtab          = wa_spfli.

CALL METHOD alv_grid->expand_tree
EXPORTING
i_level = 1.

ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Form  bldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bldcat .
*将SPFLI所有结构字段到内表
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat      = gw_fieldcat.
*单条记录
DATA ls_fldcat TYPE lvc_s_fcat.
*记录处理
LOOP AT gw_fieldcat INTO ls_fldcat.
CASE ls_fldcat-fieldname.
*定义四段长度
WHEN 'COUNTRYER'
OR 'CITYFROM'
OR 'COUNTRYTO'
OR 'CITYTO'
OR 'DISTANCE'.
ls_fldcat-outputlen = 15.
WHEN OTHERS.
ls_fldcat-no_out = 'X'.
ENDCASE.
*字段汇总
IF ls_fldcat-fieldname = 'DISTANCE'.
ls_fldcat-do_sum = 'X'.
ENDIF.

MODIFY gw_fieldcat FROM ls_fldcat.
ENDLOOP.
ENDFORM.                    " bldcat
*&---------------------------------------------------------------------*
*&      Form  bldsortfld
*&---------------------------------------------------------------------*
*       text  分类 输出先后顺序
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM bldsortfld .
DATA ls_sortfld TYPE lvc_s_sort.

ls_sortfld-spos = 1.
ls_sortfld-fieldname = 'COUNTRYFR'.
ls_sortfld-up = 'X'.
ls_sortfld-subtot = 'X'.
APPEND ls_sortfld TO gb_sortfield.

ls_sortfld-spos = 2.
ls_sortfld-fieldname = 'CARRID'.
ls_sortfld-up = 'X'.
ls_sortfld-subtot = 'X'.
APPEND ls_sortfld TO gb_sortfield.

ls_sortfld-spos = 3.
ls_sortfld-fieldname = 'CONNID'.
ls_sortfld-up = 'X'.
ls_sortfld-subtot = 'X'.
APPEND ls_sortfld TO gb_sortfield.

ENDFORM.                    " bldsortfld


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息