SAP ABAP开发 在Loop循环中写SUM函数

2022年7月6日 24点热度 0人点赞

在查询出的两条记录中,除了数量和金额栏位不同之外,其他都相同,于是想对这两行记录进行合并,其他栏位正常显示,数量、金额则进行汇总

例如:

订单号  物料号  物料凭证号  数量  金额 

10001  100001  400000001  100  1000

10001  100001  400000001  200  2000

这两行记录产生的原因是因为,同一个订单,在发货的时候分批次,这两个批次又同时过账,所以物料凭证号也相同,唯独数量、金额不同,想对此进行合并:

订单号  物料号  物料凭证号  数量  金额 

10001  100001  400000001  300  3000

具体方法如下:

工具/原料

  • SAP

方法/步骤

  1. 1

    像图中显示的那样,假设前面的订单编号、发货单、物料凭证编号、发货过账日期、物料代码、物料描述、业务员都相同,只有数量、金额不同

  2. 2

    先定义表结构,一定要将数量、金额放到最后定义,这样是为了方便后面使用AT END OF 最后字段X.

  3. 3

    在ABAP开发过程中,将查询出的所有数据放到临时表 lt_msegc 中,再对该表中的数据进行排序

    除了数量、金额之外,其它都要写在排序中

    Sort lt_msegc ASCENDING BY 字段1 字段2  字段3 ……

  4. 4

    然后LOOP AT lt_msegc INTO lw_msegc.

  5. 5

    在loop 中写 SUM 函数

    除了数量、金额之外,把其它的赋值先写完

    lw_mseg-budat_mkpf = lw_msegc-budat_mkpf ."过账日期

    lw_mseg-vgbel = lw_msegc-vgbel  ."订单号

    ……

    lw_mseg-auart = lw_msegc-auart  ."订单类型

    AT END OF auart.

       SUM.

       lw_mseg-menge = lw_msegc-menge  ."数量

       lw_mseg-dmbtr = lw_msegc-dmbtr  ."金额

    APPEND lw_mseg TO lt_mseg.

    Clear lw_mseg.

    ENDAT.

    在AT END OF auart时,auart是lw_msegc中除了数量和金额之外的,最后一个栏位

  6. 6

    最后显示就可以了,显示的栏位没有顺序限制

    END

注意事项

  • 除了数量、金额之外,其它栏位的值必须都相同
  • 用AT END OF 后面加的必须是最后一个栏位
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论