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

Popular posts from this blog

Custom entity/Action dialog in RAP using Unmanaged scenario

New syntax for append- VALUE (new syntax 7.4+) in ABAP

Read statement new syntax in ABAP. (7.4+).