ABAP 关键字:COLLECT

关键字COLLECT可将工作区的内容作为单个行添加到内表中,如果内表存在相同主表键的行,则将数值类型字段的值累加到现有的行中。主表键是指非数值类型的字段。函数模块ABL_TABLE_HASH_STATE可用于检查标准表是否适合使用COLLECT进行编辑。COLLECT关键字用于创建唯一的或压缩的数据集。若唯一性或压缩不重要,可以选择使用APPEND关键字。
语法:

COLLECT wa INTO itab [result]. 

简单实例一:

TYPES:BEGIN OF TYP_TAB,
        V1  TYPE I,
        V2  TYPE I,
        KEY TYPE STRING, " 主表键 非数值类型
      END OF TYP_TAB.
DATA GT_TAB TYPE TABLE OF TYP_TAB WITH HEADER LINE.
DATA GT_TMP TYPE TABLE OF TYP_TAB WITH HEADER LINE.

" 内表数据的初始化
DO  8  TIMES .
  IF  SY-INDEX  MOD 3  = 0.
    GT_TAB-KEY  = 'A' .
    GT_TAB-V1  = SY-INDEX .
    GT_TAB-V2  = SY-INDEX  + 1 .
  ELSEIF  SY-INDEX  MOD 3 = 1 .
    GT_TAB-KEY  = 'B' .
    GT_TAB-V1  = SY-INDEX .
    GT_TAB-V2  = SY-INDEX  - 1 .
  ELSE .
    GT_TAB-KEY  = 'C' .
    GT_TAB-V1  = SY-INDEX  - 1 .
    GT_TAB-V2  = SY-INDEX  - 2 .
  ENDIF .
  APPEND  GT_TAB.
ENDDO .

1、内表GT_TAB的数据初始化。
在这里插入图片描述
2、使用关键字COLLECT对具有相同主表键的数值类型字段进行合并。结果如下:

LOOP AT GT_TAB.
  COLLECT GT_TAB INTO GT_TMP.   " 
ENDLOOP.

在这里插入图片描述
3、如果内表没有主表键,换句话说也就是内表的全部字段都为数值类型。那么所有的值将在第一行进行相加。结果如下面的图片所示。
简单示例二:

TYPES:BEGIN OF TYP_TAB,
        V1 TYPE I,
        V2 TYPE I,
      END OF TYP_TAB.

DATA GT_TAB TYPE TABLE OF TYP_TAB WITH HEADER LINE.
DATA GT_TMP TYPE TABLE OF TYP_TAB .

" 内表数据的初始化
DO  4  TIMES .
  GT_TAB-V1  = SY-INDEX .
  GT_TAB-V2  = SY-INDEX ** 2 .
  APPEND  GT_TAB.
ENDDO .

LOOP AT GT_TAB.
  COLLECT GT_TAB INTO GT_TMP.
ENDLOOP.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值