1. 程式人生 > 其它 >Reduce新語法

Reduce新語法

迴圈分組
按照特定分組最大的值新增到新表 lt_group

TYPES:BEGIN OF ty_alv,
matnr TYPE matnr,
bismt TYPE bismt,
amount TYPE ze_hdqcgj,
END OF ty_alv.
DATA:gs_alv TYPE ty_alv,
gt_alv TYPE TABLE OF ty_alv.
DATA:ls_alv TYPE ty_alv.
TYPES:BEGIN OF ty_group,
matnr TYPE matnr,
amount TYPE ze_hdqcgj,
END OF ty_group.
DATA:lt_group TYPE TABLE OF ty_group.

ls_alv-matnr = 'M1'.
ls_alv-amount = '12.34'.
APPEND ls_alv TO gt_alv.
ls_alv-matnr = 'M2'.
ls_alv-amount = '34.34'.
APPEND ls_alv TO gt_alv.
ls_alv-matnr = 'M2'.
ls_alv-amount = '45.34'.
APPEND ls_alv TO gt_alv.
ls_alv-matnr = 'M3'.
ls_alv-amount = '56.34'.
APPEND ls_alv TO gt_alv.

LOOP AT gt_alv INTO ls_alv GROUP BY ( matnr = ls_alv-matnr
size = GROUP SIZE index = GROUP INDEX ) ASCENDING ASSIGNING FIELD-SYMBOL().

APPEND INITIAL LINE TO lt_group ASSIGNING FIELD-SYMBOL(<fs_group>).

DATA(lv_max) = REDUCE ze_hdqcgj( INIT max TYPE ze_hdqcgj FOR lw_member IN GROUP
NEXT max = nmax( val1 = max val2 = lw_member-amount ) ).

<fs_group>-amount = lv_max.
<fs_group>-matnr = -matnr.
ENDLOOP.

LOOP AT lt_group ASSIGNING FIELD-SYMBOL(<fs_group1>).

ENDLOOP.