Reputation: 1
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
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