user7806296
user7806296

Reputation: 1

Sum values in the same field inside a loop

In the program that i gonna do it's show the info of every company code. for example:

Fiscal Year | 4030   | 4020  | 4040 | 4050 | 4070 | TOTAL
1/2010      | 423.12 | 89.79 ..... | ......|  .... | .....
2/2010      |234.00  | 04.38 ..... | ...... | ....  |.....
3/2010      |432.652 | 98.80 ..... | ...... | .... | .....
.
.
12/2010     |978.687 | 089.787 .... | ...... | .... |  .....

My question is how can I sum all data in the field fkdat for date and dmbtr for amount? because in field fkdat there is a lots of same date. All I want to do is to sum up all same dates and amount so that i can show the info and amount in every plant code. How can i do that in side the loop?

SELECT-OPTIONS:
BUKRS for wa_zfi_vbrp_bseg_1-BUKRS OBLIGATORY NO INTERVALS.
PARAMETERS:
 p_gjahr LIKE zfi_vbrp_bseg-gjahr OBLIGATORY.
SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) text-005.
    SELECTION-SCREEN POSITION 35.
    select-options: p_perde for ce1osgc-perde no-display.
SELECTION-SCREEN END OF LINE.
START-OF-SELECTION.
  SELECT 
        zf~gjahr
        zf~bukrs
        zf~dmbtr
        zf~monat
        zf~vbeln
        zf~hkont
        fi~fkdat
        vb~werks
    INTO CORRESPONDING FIELDS OF TABLE it_zfi_vbrp_bseg_1
    FROM zfi_vbrp_bseg as zf
    INNER JOIN vbrp as vb ON vb~vbeln EQ zf~vbeln
    INNER JOIN zfi_vbrp as fi ON zf~vbeln EQ fi~vbeln
    WHERE zf~bukrs in bukrs
    AND zf~gjahr EQ p_gjahr
    GROUP BY
        zf~gjahr
        zf~bukrs
        zf~dmbtr
        zf~monat
        zf~vbeln
        zf~hkont
        fi~fkdat
        "zf-perio
        vb~werks.
"-------------------------------------------------------------------------------------------------------------
DATA:" l_budat TYPE budat,
        date TYPE string,
        date1 TYPE string,
        date2 TYPE STRING,
        out TYPE string,
        vvdcs TYPE ce1osgc-vvdcs.
DATA: pos TYPE i VALUE 40,
      pos2 TYPE i VALUE 57,
      pos3 TYPE i VALUE 75,
      pos4 TYPE i VALUE 93,
      pos5 TYPE i VALUE 110.
 IF SY-SUBRC EQ 0.
  LOOP AT it_zfi_vbrp_bseg_1 INTO wa_zfi_vbrp_bseg_1.
    AT FIRST.
         WRITE: /01(150) SY-ULINE,
                 /01  SY-VLINE,
                  11  'Fiscal Year',  36  SY-VLINE,
                  40  '4030',         55  SY-VLINE,
                  57  '4020',         73 SY-VLINE,
                  75  '4050',         91 SY-VLINE,
                  93  '4040',         108 SY-VLINE,
                  110 '4070',         127 SY-VLINE,
                  129 'Total',        140 SY-VLINE,
                  (150) SY-ULINE.
     ENDAT.
IF wa_zfi_vbrp_bseg_1-werks  EQ '4030'.
   WRITE AT pos wa_zfi_vbrp_bseg_1-dmbtr.
ENDIF.
IF wa_zfi_vbrp_bseg_1-werks  EQ '4020'.
      WRITE AT pos2 wa_zfi_vbrp_bseg_1-dmbtr.
ENDIF.
IF wa_zfi_vbrp_bseg_1-werks  EQ '4050'.
       WRITE AT pos3 wa_zfi_vbrp_bseg_1-dmbtr.
ENDIF.
IF wa_zfi_vbrp_bseg_1-werks  EQ '4040'.
        WRITE AT pos4 wa_zfi_vbrp_bseg_1-dmbtr.
ENDIF.
IF wa_zfi_vbrp_bseg_1-werks  EQ '4070'.
     WRITE AT pos5 wa_zfi_vbrp_bseg_1-dmbtr.
ENDIF.
ENDLOOP.
ENDIF.

Upvotes: 0

Views: 9854

Answers (1)

terence4444
terence4444

Reputation: 46

Try using COLLECT in a loop.

Check how to use COLLECT statement:

LOOP AT it_zfi_vbrp_bseg_1 INTO wa_zfi_vbrp_bseg_1.
  COLLECT wa_zfi_vbrp_bseg_1 INTO it_zfi_vbrp_bseg_2. " You have to declear a new internal table.
ENDLOOP.

LOOP AT it_zfi_vbrp_bseg_2 INTO wa_zfi_vbrp_bseg_1.
  WRITE Causes......
  .........
ENDLOOP.

Upvotes: 2

Related Questions