REDUCE- SUM in ABAP
Refer - Introduction to REDUCE keyword
Report-Old
REPORT zab_rp_reduce_sum.
TABLES: vbak.
DATA: sum1 TYPE netwr_ak,
sum2 TYPE netwr_ak,
sum3 TYPE netwr_ak.
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.
IF s_vbeln IS NOT INITIAL.
SELECT vbeln,vbtyp,netwr
FROM vbak
INTO TABLE @DATA(lt_vbak)
WHERE vbeln IN @s_vbeln.
ENDIF.
LOOP AT lt_vbak INTO DATA(lr_vbak).
IF lr_vbak-vbtyp = 'A'.
sum1 = sum1 + lr_vbak-netwr.
ENDIF.
IF lr_vbak-vbtyp = 'B'.
sum2 = sum2 + lr_vbak-netwr.
ENDIF.
IF lr_vbak-vbtyp = 'C'.
sum3 = sum3 + lr_vbak-netwr.
ENDIF.
ENDLOOP.
WRITE: / 'Sum of amount for A is ', sum1.
WRITE: / 'Sum of amount for B is ', sum2.
WRITE: / 'Sum of amount for C is ', sum3.
Report-NEW
REPORT zab_rp_reduce_sum.
TABLES: vbak.
DATA: sum1 TYPE netwr_ak,
sum2 TYPE netwr_ak,
sum3 TYPE netwr_ak.
SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.
IF s_vbeln IS NOT INITIAL.
SELECT vbeln,vbtyp,netwr
FROM vbak
INTO TABLE @DATA(lt_vbak)
WHERE vbeln IN @s_vbeln.
ENDIF.
sum1 = REDUCE #( INIT c = 0 FOR lr_vbak in lt_vbak WHERE ( vbtyp = 'A' ) NEXT c = c + lr_vbak-netwr ).
sum2 = REDUCE #( INIT c = 0 FOR lr_vbak in lt_vbak WHERE ( vbtyp = 'B' ) NEXT c = c + lr_vbak-netwr ).
sum3 = REDUCE #( INIT c = 0 FOR lr_vbak in lt_vbak WHERE ( vbtyp = 'C' ) NEXT c = c + lr_vbak-netwr ).
WRITE: / 'Sum of amount for A is ', sum1.
WRITE: / 'Sum of amount for B is ', sum2.
WRITE: / 'Sum of amount for C is ', sum3.
Input
Output
********************************Thank You*****************************
Comments
Post a Comment