*& Insert data to table lt_ztquo2
lt_ztquo2 = VALUE #( ( object_id = 001 process_type = 'AA' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0014' quantity = 100 unii = 'PCS' )
( object_id = 001 process_type = 'AA' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '02' product_id = '0014' quantity = 100 unii = 'PCS' )
( object_id = 002 process_type = 'AE' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0015' quantity = 300 unii = 'PCS' )
( object_id = 002 process_type = 'AP' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '02' product_id = '0013' quantity = 300 unii = 'PCS' )
( object_id = 003 process_type = 'AP' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0014' quantity = 30 unii = 'PCS' )
( object_id = 003 process_type = 'AE' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '02' product_id = '0014' quantity = 45 unii = 'PCS' )
( object_id = 004 process_type = 'AP' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0019' quantity = 45 unii = 'PCS' )
( object_id = 005 process_type = 'TA' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0909' quantity = 12 unii = 'PSC' )
( object_id = 006 process_type = 'TA' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0909' quantity = 13 unii = 'PSC' )
( object_id = 007 process_type = 'TA' created_at = '20230910' created_by = 'lisurangg' description = 'OK' item_id = '01' product_id = '0909' quantity = 100 unii = 'PSC' ) ).
先准备数据
目标:把相同object_id的数据的quantity汇总
使用方法 loop at group
TYPES: BEGIN OF lv_sum,
object_id TYPE ztquoth_lsr-object_id,
quantity TYPE ztquoti_lsr-quantity,
END OF lv_sum.
DATA: lt_sum TYPE TABLE OF lv_sum,
wa_sum LIKE LINE OF lt_sum.
*& Group data by the same object_id
LOOP AT lt_ztquo2 INTO wa_ztquo2 GROUP BY (
object_id = wa_ztquo2-object_id
size = GROUP SIZE
index = GROUP INDEX )
ASCENDING ASSIGNING FIELD-SYMBOL(<group>).
*& Clear the variable
CLEAR gv_su.
*& Calculate the same of quantity by group
LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<wa_ztquo2>).
gv_su = gv_su + <wa_ztquo2>-quantity.
ENDLOOP.
wa_sum-object_id = <group>-object_id.
wa_sum-quantity = gv_su.
APPEND wa_sum TO lt_sum.
CLEAR wa_sum.
*& Output the sum of quantity for each group
WRITE: / | object_id: { <group>-object_id } |.
WRITE: |Quantity Sum: { gv_su }|.
ENDLOOP.
从此博主学习来的方法