尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

078、ALV排序、过滤与汇总

078、ALV排序、过滤与汇总 078、ALV排序、过滤与汇总那天半夜被电话叫醒,客户说报表里的合计金额对不上,少了一多半。远程一看,ALV输出的汇总行还在,但数据明显被过滤掉了两笔大额订单。查了半天,问题出在用户操作了ALV自带的过滤功能,而我代码里用SUM汇总的是全表数据,显示却是过滤后的——这俩根本不在一个频道上。打那以后,我见着ALV的排序、过滤、汇总这三个功能就条件反射,先问一句:你处理的是内表全量,还是用户当前看到的那部分?先说说排序。ALV的排序有两种玩法:一种是你在代码里写SORT,把内表排好再传给ALV;另一种是在ALV的工具栏上让用户自己点列头排序。前者简单粗暴,但有个隐藏的坑——如果你用REUSE_ALV_GRID_DISPLAY,并且没有设置SORT_TAB参数,那么即使内表排好了,ALV显示的时候可能还会按它自己的默认逻辑来一遍,尤其是当你的表里有重复值或者未排序字段时,显示顺序会“顽固不化”。后来我学乖了,直接填SORT_TAB,格式是:字段名、排序方式('A’升序/'D’降序)、是否高亮行什么的。举个例子:DATA: lt_sort TYPE lvc_t_sort. CLEAR lt_sort. ls_sort-fieldname = 'ZORDER'. ls_sort-up = 'A'. "升序,别填'X',那是别的意思 ls_sort-subtot = 'X'. "这个字段要出小计,后面汇总会用到 APPEND ls_sort TO lt_sort.
返回列表