双击ALV中小计(Subtotal),显示明细
概览
最近接到一个用户需求,双击ALV中小计行,显示组成小计的明细。跟踪了标准ALV单击小计事件,找到了几个关键内表、变量:
1、mt_sort–记录了当前哪些排序字段
2、mt_grouplevels_filter --记录了分类汇总的筛选过滤信息
3、es_subtot_options-t_levels–记录了排序字段分类汇总级别
4、slis_selfield-endsum–记录了双击分类汇总中ALV的最后一行小计
5、lvc_t_row–记录双击哪一行,rowtype+0(1) = 'S’代表是双击小计行,index记录mt_grouplevels_filter索引。
6、MT_CT00~MT_CT09–记录了每个分类汇总级别对应的值、金额
实现
1、获取排序信息
获取当前ALV排序字段、小计字段信息
po_grid->get_sort_criteria( IMPORTING et_sort = lt_sort ) .
2、获取分类汇总信息
获取分类汇总级别对应的值、金额、分组过滤信息
po_grid->get_subtotals( IMPORTING
ep_collect00 = lt_ct00
ep_collect01 = lt_ct01
ep_collect02 = lt_ct02
ep_collect03