货铺QQ群号:834508274
微信群不能扫码进了,可以加我微信SAPliumeng拉进群,申请时请提供您哪个模块顾问,否则是一律不通过的。
进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合
下面开始干货部分……
看到一个不错的demo,原文地址:
https://blog.csdn.net/wengyupeng/article/details/6327794
ALV标准功能汇总,分类汇总,排序,过滤这些功能除了可以直接使用它的标准功能按钮之外,你也可以在程序里设定,让ALV列表第一次显示出来就已经使用了这些功能。
用REUSE_ALV_GRID_DISPLAY实现的ALV不能在程序设定输出字段的平均值,最小值,最大值等标准功能。用OO方式实现ALV输出的就可以,请参考
http://blog.csdn.net/lhx20/archive/2008/08/26/2833234.aspx
一、排序
排序用到类型slis_t_sortinfo_alv,按条件把过滤的字段和规则设置好,添加到一个参考slis_t_sortinfo_alv类型的内表,在调用Function的时候指导内表赋给it_sort参数
二、过滤
过滤用到类型slis_t_filter_alv,按条件把排序的字段和规则设置好,添加到一个参考slis_t_filter_alv类型的内表,在调用Function的时候把内表的值赋给it_fitler参数
三、分类汇总
分类汇总是汇总和排序两个功能来进行分类和汇总的。按照排序的字段的值进行分类,对已经汇总的字段进行分类汇总。在设置排序的时候设置类型slis_t_sortinfo_alv-subtot = ‘X’ 就可以了。
四、汇总
汇总是设置要汇总的字段的Fieldcat属性,设置slis_t_fieldcat_alv-do_sum = ‘X’。
下面是源代码
TYPE-POOLS slis.
TYPES ty_tab_spfli TYPE spfli OCCURS 0.
START-OF-SELECTION.
PERFORM f_display.
*&---------------------------------------------------------------------*
*& Form f_getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_SPFLI text
*----------------------------------------------------------------------*
FORM f_getdata TABLES pt_spfli TYPE ty_tab_spfli.
SELECT * FROM spfli INTO TABLE pt_spfli.
ENDFORM. "f_getdata
*&---------------------------------------------------------------------*
*& Form f_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_display.
DATA: lt_spfli TYPE ty_tab_spfli,
lt_filter TYPE slis_t_filter_alv,
lt_sort TYPE slis_t_sortinfo_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv.
PERFORM f_getdata TABLES lt_spfli.
PERFORM f_filter_build TABLES lt_filter.
PERFORM f_sort_build TABLES lt_sort.
PERFORM f_fieldcat CHANGING lt_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat
it_filter = lt_filter
it_sort = lt_sort
TABLES
t_outtab = lt_spfli.
ENDFORM. "f_display
*&---------------------------------------------------------------------*
*& Form f_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_FIELDCAT text
*----------------------------------------------------------------------*
FORM f_fieldcat CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.
FIELD-SYMBOLS LIKE LINE OF pt_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = pt_fieldcat
EXCEPTIONS
inconsistent_interface = 1