使用Reduce语法ABAP求和

使用Reduce语法ABAP求和,abap,Abap,我遇到了一个我想用REDUCE语法解决的问题 我有这张内桌 我需要对“数量”列的值求和,并更新名为“总量”的列 “总价”一栏中的“价格”一栏也是如此。 这适用于每个采购订单 我现在有这个密码 Loop at it_numpos Into Data(ls_numpos). lv_valort = lv_valort + ls_numpos-netpr. " Purchase Order Total Price lv_cantt = lv_cantt +

我遇到了一个我想用REDUCE语法解决的问题

我有这张内桌

我需要对“数量”列的值求和,并更新名为“总量”的列

“总价”一栏中的“价格”一栏也是如此。 这适用于每个采购订单

我现在有这个密码

    Loop at it_numpos Into Data(ls_numpos).
     lv_valort = lv_valort + ls_numpos-netpr. " Purchase Order Total Price 
     lv_cantt  = lv_cantt  + ls_numpos-menge. " Purchase Total Quantity
    At end of ebeln.
     ls_numpos-zmenge3 = lv_cantt.
     ls_numpos-znetpr6 = lv_valort.
     Modify it_numpos From ls_numpos Transporting zmenge3 znetpr6 Where ebeln = ls_numpos-ebeln.
     Clear:  lv_cantt, ls_numpos, lv_valort.
    Endat.
EndLoop.

是否可以将此代码转换为abap新语法?

我认为
REDUCE
不是适合此工作的工具,因为它旨在将表的值减少为一个值。在您的情况下,没有一个单一的值,因为您正在为每个销售订单计算新的值。因此,您需要以某种方式在表上循环,将项目分组在一起,然后使用reduce,然后再次循环将值分配回表中。这会使代码复杂化,仅仅为了使用新的synax可能不值得费心。我认为在这里使用
循环是更好的选择,尽管我会在。。。按
分组,然后在组循环处进行两次循环,这使得整个处理过程非常可读:

LOOP AT order_items ASSIGNING FIELD-SYMBOL(<order_item>) GROUP BY <order_item>-id INTO DATA(order).
  DATA(total_price) = 0.

  LOOP AT GROUP order ASSIGNING <order_item>.
    total_price = total_price + <order_item>-price.
  ENDLOOP.

  LOOP AT GROUP order ASSIGNING <order_item>.
    <order_item>-total_price = total_price.
  ENDLOOP.
ENDLOOP.
按顺序循环\u将字段-SYMBOL()按-id分组到数据(顺序)中的项目。
数据(总价)=0。
在组顺序分配时循环。
总价=总价+价格。
结束循环。
在组顺序分配时循环。
-总价=总价。
结束循环。
结束循环。

但是,这是否优于集团级处理取决于您。

此外,请提供最小可重复代码、实际结果和预期结果。没有人会花时间在手动键入输入数据的情况下提出解决方案。我编辑了问题。。谢谢你的回复