Collect语句镶嵌在select---endselect之中使用,在报表开发中经常用到,作用是根据table的unique key,把表中其他的字段进行自动的累加,一般用在对某些数据进行总数统计的时候.
举例如下:
data:begin of mytable,
keyfield like XXX,
fliedl1 like XXX,
field2 like XXX,
end of mytable.
Data: mytable_col like hashed table of mytable
With unique key keyfield with headline.
select keyfield fliedl1 field2 from table_system
into (mytable- keyfield, mytable-fliedl1, mytable- field2).
Collect mytable into mytable_col.
Endselect.
这个例子的作用是以keyfield为主键,把fliedl1和fliedl2的数据进行累加,计算属于每个keyfield的fliedl1和fliedl1的总和.
Collect使用有两个条件:
<!--[if !supportLists]-->1. <!--[endif]-->累加时送入的表必须时hashed table或者 sorted table,即必须拥有唯一的key.
<!--[if !supportLists]-->2. <!--[endif]-->除了key之外的其他属性必须时数字型的,才能进行累加计算.
当然 mytable 和mytable_col.的表的类型必须完全一致.
一般的报表在生成时都需要对大量的数据进行计算,这时使用collect语句的好处就是不用在把数据取到本地后再loop进行累加,降低报表对系统的压力.
come form: http://blog.csdn.net/nodreamer/archive/2007/02/25/1514272.aspx
从内部表中抽取唯一记录的方法测试
三种方法简单介绍:
方法一: 内部表循环赋值,使用COLLECT语句追加记录
方法二: 内部表循环赋值,使用AT NEW和APPEND语句追加记录
方法三: 整个内部表赋值,使用DELETE ADJACENT DUPLICATES语句删除重复记录.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/132884/viewspace-1004288/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/132884/viewspace-1004288/