FavoriteLoading
0

在loop中Collect语句的使用方法及实例

[隐藏]

1, Collect介绍

ABAP编程中,经常会要求对loop循环中的一些数值类型(类型 I、P 或F)的字段进行合计,也可以直接使用collect语句进行合计,当然也可以自定义一个变量用来保存累加结果,然后使用At...endat语句进行合计,。

简单说来,collect就是在loop循环的内表中非数值类型字段相同的情况下,对数值类型字段的进行合计。

2, 例子程序1

有点拗口,通过一个简单的程序,一看就明白了。

简单说明一下程序实现的功能,需要合计的内表中有8条数据,按照key字段合计V1 V2的值,最后显示出来。

显示结果:collect语句按照key中的A B C 三个不同值分别合计了。

3, 例子程序2

当然也可以在是用collect合计时添加条件,比如说之合计V1 V2值都大于2的,collect部分的代码修改如下:

显示结果:

发现key为A的场合下,V1和V2没有同时大于2的记录,所以在合计结果中就没有A的数据。

4, collect中的错误信息

collect过程中会报出如下错误信息,意思是内表中的非key键有的是非数值。

所以,使用collect时要求内表中所有的非key fields必须是I,P或者F数据类型。

对于standard table 而言,如果不指定key fields那么它的key fields就那些非I, P,F数据类型的字段,

对于sorted table 和 hash table,key fields是需要指定的。

注意:货币类型CURR实际类型是P,所以也可以使用collect累加

以上。