汇总内表数据:at end of方法和collect方法
来源:互联网 发布:mac草莓红试色cockney 编辑:程序博客网 时间:2024/06/05 02:33
ABAP开发中经常会遇到需要汇总内表中数据的情况,下面介绍两种方法:at end of和collect。 在使用loop循环读取已排序的内表时,可以访问两个自动生成的字段 CNT(<f>) 和SUM(<g>) ,系统在循环到不同值之前以及读取内表最后一个纪录后填充这两个字段。 CNT(<f>) :如果 <f> 是非数字字段,并且系统是根据 <f> 给内表排序的,则 CNT(<f>) 包含了不同值<f>的序号。 SUM(<g>) :如果 <g> 是内表的数字字段, SUM(<g>) 将包含 <g> 的值的合计。 b、使用at end of,需要另外定义内表的工作区,否则直接使用表头,得到的数据会变成一串*。 collect [<wa> into] <itab>.使用该语句,系统会检查内表条目的标准关键字(所有非数字字段)是否相同,如果不同,collect语句的作用与append语句相似,将新行添至内表中;如果相同,collect语句不附加新航,但将工作区中的数字字段内容添加到现有条目中数字字段的内容中。使用该语句前,同样需要先对内表进行排序。
*根据物料号汇总工单总量/总入库量/总欠工单数 SORT w_data BY matnr. LOOP AT w_data.
MOVE-CORRESPONDING w_data TO i_data.
COLLECT i_data.
CLEAR w_data. CLEAR i_data.
ENDLOOP.
内表w_data中包含matnr/maktx/zlabst/zpsmng/zwemng/zqty六个字段,其中前两个为非数字字段,后四个为数字字段,需要汇总的字段为最后三个。 at end of <f>方法,只汇总内表中f字段之后的字段,因此定义内表时要把不需要汇总的数字字段以及非数字字段(此处为zlabst/ maktx)放在f字段(此处为matnr)前面,需要汇总的字段放在后面。 collect会把内表中所有数字字段汇总起来,所以此例中的zlabst字段也会被汇总,需要另行处理,另外还需注意内表标准关键字的问题。
1、at end of方法
注意:a、只能在给内表排序后才能访问以上两个字段,否则会产生运行时错误。
2、collect方法
以下面的例子来说明具体用法:
DATA: BEGIN OF i_data OCCURS 0,
zlabst LIKE mard-labst,"汇总的良品库存
maktx LIKE makt-maktx,"物料描述
matnr LIKE afpo-matnr,"物料号
zpsmng LIKE afpo-psmng,"总的工单数量
zwemng LIKE afpo-wemng,"总的已交货数量
zqty LIKE afpo-psmng,"总的欠单数量
END OF i_data.
DATA: w_data LIKE TABLE OF i_data WITH HEADER LINE.
DATA: w_line LIKE LINE OF i_data.
END
DATA:
DATA:
*根据物料号汇总工单总量/总入库量/总欠工单数
* AT END OF 方法:
LOOP AT w_data INTO w_line.
AT END OF matnr.
SUM.
i_data-matnr = w_line-matnr.
i_data-maktx = w_line-maktx.
i_data-zlabst = w_line-zlabst.
i_data-zpsmng = w_line-zpsmng.
i_data-zwemng = w_line-zwemng.
i_data-zqty = w_line-zqty.
APPEND i_data.
CLEAR i_data.
CLEAR w_line.
ENDAT.
ENDLOOP.
*collect 方法
1 0
- 汇总内表数据:at end of方法和collect方法
- at end of col1 求和方法
- 【ABAP】AT NEW和AT END OF
- at end of和at last是使用
- SAP ABAP AT NEW 和AT END OF的用法
- 关于at end of
- at end of不起作用
- at new at end of at last
- AT END OF 的使用
- collect接口方法
- 常用数据加密和解密方法汇总
- 数据挖掘方法汇总
- 数据分析方法汇总
- SAP ABAP AT NEW 和AT END OF的用法[转]
- Such Summarize at the end of University .
- warning: no newline at end of file
- 关于no newline at end of file
- warning: no newline at end of file
- Android ColorStateList使用的坑:透明度的问题
- x264 参数详解【很强大、很细致,不再为不懂啥意思很烦恼】
- 用mysql表分区来优化大数据量的表
- 从一个队列中取出一个元素再放回去同时保持原来的顺序,不申请非必需的空间存储队列中的元素
- 人生不如意十之八九
- 汇总内表数据:at end of方法和collect方法
- LeetCode 016 3Sum Closest
- 理论加实践,谈谈我对memcached的学习感悟!
- PHP Warning之max_input_vars
- 【转】CSS FLOAT 学习笔记
- I/O文件流之二
- 大数据圈 15个新技术
- 虚拟键码对照表
- 关于GCC编译