SAP ABAP - Collect into table with new 740 syntax
Updated: Aug 29, 2022
Instead of "loop at" and "Collect" code,
LOOP AT gt_Report REFERENCE INTO DATA(lr_report).
CREATE DATA lr_report_c.
lr_report_c->werks = lr_report->werks.
lr_report_c->matnr = lr_report->matnr.
lr_report_c->vbeln = lr_report->vbeln.
lr_report_c->posnr = lr_report->posnr.
lr_report_c->tob_kapan = lr_report->tob_kapan.
COLLECT lr_report_c INTO gt_report_c.
ENDLOOP.
you can use new syntax of ABAP 740 and above.
gt_report_c[] = VALUE #( FOR wa IN gt_report
(
werks = wa-werks
matnr = wa-matnr
vbeln = wa-vbeln
posnr = wa-posnr
tob_kapan = REDUCE #( INIT lv_top =
lv_top_init
FOR wa2 IN gt_report
WHERE
( werks = wa-werks AND
matnr = wa-matnr AND
vbeln = wa-vbeln AND
posnr = wa-posnr
)
NEXT lv_top = lv_top + wa2-tob_kapan
)
)
).
It will be much much much faster.