report r_sum_by_one_key.
data: begin of itab occurs 0 ,
matnr like a901-matnr,
text(20),
mount1 like lips-lfimg,
mount2 like lips-lfimg,
end of itab.
data: itab_temp like table of itab with header line,
wa_temp like itab.
itab-matnr = '00001'.
itab-text = 'aaaaa'.
itab-mount1 = '1.1'.
itab-mount2 = '1.2'.
append itab.
itab-matnr = '00001'.
itab-text = 'aaaaa'.
itab-mount1 = '2.1'.
itab-mount2 = '2.2'.
append itab.
itab-matnr = '00002'.
itab-text = 'bbbbb'.
itab-mount1 = '4.1'.
itab-mount2 = '4.2'.
append itab.
itab-matnr = '00001'.
itab-text = 'aaaaa'.
itab-mount1 = '3.1'.
itab-mount2 = '3.2'.
append itab.
itab-matnr = '00002'.
itab-text = 'bbbbb'.
itab-mount1 = '4.1'.
itab-mount2 = '4.2'.
append itab.
loop at itab.
write:/ itab-matnr,itab-text,itab-mount1,itab-mount2.
endloop.
uline.
sort itab by matnr.
loop at itab.
if itab-matnr = wa_temp-matnr.
wa_temp-mount1 = wa_temp-mount1 + itab-mount1.
wa_temp-mount2 = wa_temp-mount2 + itab-mount2.
else.
if sy-tabix <> 1.
append wa_temp to itab_temp.
endif.
move-corresponding itab to wa_temp.
endif.
endloop.
append wa_temp to itab_temp."最后一条数据
loop at itab_temp.
write:/ itab_temp-matnr,itab_temp-text,itab_temp-mount1,itab_temp-mount2.
endloop.
自己实现的方法实在不爽,还是用ABAP的collect吧。
评论