‎2008 Apr 01 3:19 AM
Hello Gurus
I am basically designing the report which shows kunag,name1 sum(fkimg) monthly wise and it is completed but wherever the zero value is coming it is taking the above value and summing it. can you check the coding below and advice me where I did the mistake please
Thanks in advanced
REPORT soldtoparty
line-size 170
line-count 65 no standard page heading.
TABLES : kna1,VBRP,vbrk.
DATA:BEGIN OF itab OCCURS 0,
kunag like VBRK-KUNAG,
name1 like kna1-name1,
werks LIKE vbrp-werks,
vbeln LIKE vbrp-vbeln,
fkdat LIKE VBRK-FKDAT,
vrkme LIKE vbrp-vrkme,
fkimg LIKE vbrp-fkimg,
total like vbrp-fkimg,
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
fkdat(2) TYPE c,
kunag like VBRK-KUNAG,
name1 like kna1-name1,
werks LIKE vbrp-werks,
vbeln LIKE vbrp-vbeln,
vrkme LIKE vbrp-vrkme,
fkimg LIKE vbrp-fkimg,
total like vbrp-fkimg,
END OF itab1.
DATA : BEGIN OF itab2 OCCURS 0 ,
fkdat like VBRK-FKDAT,
fkimg like vbrp-fkimg,
kunag like VBRK-KUNAG,
name1 like kna1-name1,
vrkme like vbrp-vrkme,
jan LIKE vbrp-fkimg,
feb LIKE vbrp-fkimg,
mar LIKE vbrp-fkimg,
apr LIKE vbrp-fkimg,
may LIKE vbrp-fkimg,
jun LIKE vbrp-fkimg,
jul LIKE vbrp-fkimg,
aug LIKE vbrp-fkimg,
sep LIKE vbrp-fkimg,
oct LIKE vbrp-fkimg,
nov LIKE vbrp-fkimg,
dec LIKE vbrp-fkimg,
TOTAL like vbrp-fkimg,
END OF itab2.
TOP-OF-PAGE.
WRITE:/50(40) ' CUSTOMER SOLD BY QUANTITY' CENTERED ,2 'Page', SY-PAGNO.
WRITE:/50(40) '----
' CENTERED .
FORMAT INTENSIFIED on.
WRITE:/2 SY-DATUM COLOR 3, SY-UZEIT .
"WRITE:/1 S903-SPMON ."p_yearf.
ULINE.
"CENTERED.
skip.
"FORMAT COLOR COL_HEADING.
ULINE.
FORMAT COLOR 3.
WRITE:/1 SY-VLINE,
0 'PARTY' ,10 SY-VLINE,
11 'NAME' ,40 SY-VLINE,
41 'JAN' centered , 50 SY-VLINE,
51 'FEB',60 SY-VLINE,
61 'MAR',70 SY-VLINE,
71 'APR',80 SY-VLINE,
81 'MAY',90 SY-VLINE,
91 'JUN',100 SY-VLINE,
101 'JUL',110 SY-VLINE,
111 'AUG',120 SY-VLINE,
121 'SEP',130 SY-VLINE,
131 'OCT',140 SY-VLINE,
141 'NOV',150 SY-VLINE,
151 'DEC',160 SY-VLINE,
161'TOTAL',170 SY-VLINE.
FORMAT COLOR 3 on.
ULINE.
END-OF-PAGE.
data wa_itab1 like itab1.
DATA : mm(2) TYPE c,
value type p decimals 2,
total type p decimals 2,
sum1 type p decimals 1,sum2 type p decimals 1,sum3 type p decimals 1,
sum4 type p decimals 1,sum5 type p decimals 1,sum6 type p decimals 1,
sum7 type p decimals 1,sum8 type p decimals 1,sum9 type p decimals 1,
sum10 type p decimals 1,sum11 type p decimals 1,sum12 type p decimals 1,
sum13 type p decimals 1,
t_s LIKE vbrp-fkimg.
"g_total like vbrp-fkimg.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_yearf TYPE SPMON,
p_yeart type SPMON.
SELECT-options:
p_kunag for VBRK-KUNAG , "no-extension no intervals,
s_werks for vbrp-werks no-extension no intervals obligatory,
s_vrkme for vbrp-vrkme no-extension no intervals obligatory.
"p_matnr for vbrp-matnr no-extension no intervals,
"p_augru for vbrp-augru_auft no-extension no intervals,
"p_vbeln for vbrk-vbeln no-extension no intervals.
RANGES : p_fkdat FOR sy-datum.
RANGES: r_date FOR sy-datum.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
PARAMETERS: NRW RADIOBUTTON GROUP g1,
MWD RADIOBUTTON GROUP g1,
RWS RADIOBUTTON GROUP g1,
EDU RADIOBUTTON GROUP g1,
Standard RADIOBUTTON GROUP g1 default 'X'.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF BLOCK blk.
start-of-selection.
break developer.
case 'X'.
when mwd.
CONCATENATE p_yearf(4) p_yearf+4(2) '01' INTO p_fkdat-low.
concatenate p_yeart(4) p_yeart+4(2) '01' into p_fkdat-high.
p_fkdat-sign = 'I'.
p_fkdat-option = 'BT'.
CALL FUNCTION 'RE_LAST_DAY_OF_MONTH'
EXPORTING
i_datum = p_fkdat-high
IMPORTING
e_tt = p_fkdat-high+6(2).
APPEND p_fkdat.
*start-of-selection.
SELECT *
from VBRK
INNER JOIN vbrp ON vbrk~vbeln = vbrp~vbeln
INNER JOIN kna1 on vbrk~kunag = kna1~kunnr
INTO corresponding fields of TABLE itab
where
vbrp~werks in s_werks and
VBRK~KUNAG in p_kunag and
VBRP~vrkme in s_vrkme and " 'M3' and
VBRK~fkdat in p_fkdat order by KUNAG.
*
*left outer join kna1
**from S903 INNER JOIN kna1
*ON VBRKKUNAG = kna1kunnr
*INTO corresponding fields of TABLE itab
*where
*"vbrp~werks in s_werks and
*VBRK~KUNAG in p_kunag and
*VBRP~vrkme in s_vrkme and " 'M3' and
*VBRK~fkdat in p_fkdat order by KUNAG.
LOOP AT itab.
mm = itab-fkdat+4(2). " Monthly for Ageing
clear itab2.
Read table itab2 with key KUNAG = itab-KUNAG.
*IF SY-SUBRC EQ 0. " Record for Customer exists so modify existing record updating the quantities
*
PERFORM itab2_rec USING 'M' mm.
ELSE. " Record for Cusotmer does not exist so Append a new record for Customer
PERFORM itab2_rec USING 'A' mm.
ENDIF.
itab1-fkdat = itab-fkdat+4(2).
*itab1-vrkme = itab-vrkme.
itab1-KUNAG = itab-KUNAG.
itab1-name1 = itab-name1.
itab1-fkimg = itab-fkimg.
APPEND itab1.
clear itab1.
ENDLOOP.
SORT itab1 BY KUNAG fkdat name1.
"delete adjacent duplicates from itab1.
LOOP AT itab1.
move itab1 to wa_itab1.
AT NEW KUNAG.
t_s = 0 .
ENDAT.
t_s = t_s + itab1-fkimg .
AT END OF KUNAG.
mm = itab1-fkdat.
"break angle.
IF SY-SUBRC = 0. " Record for Customer exists so modify existing record updating the quantities
CASE mm.
" Record for customer does not exit so append a new record for customer
WHEN '01'.
itab2-jan = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum2 = sum2 + itab2-jan.
APPEND itab2.
WHEN '02'.
itab2-feb = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum2 = sum2 + itab2-feb.
APPEND itab2.
WHEN '03'.
itab2-mar = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum3 = sum3 + itab2-mar.
APPEND itab2.
WHEN '04'.
itab2-apr = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum4 = sum4 + itab2-apr.
APPEND itab2.
WHEN '05'.
itab2-may = t_s.
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum5 = sum5 + itab2-may.
APPEND itab2.
WHEN '06'.
itab2-jun = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum6 = sum6 + itab2-jun.
APPEND itab2.
WHEN '07'.
itab2-jul = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum7 = sum7 + itab2-jul.
APPEND itab2.
WHEN '08'.
itab2-aug = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum8 = sum8 + itab2-aug.
APPEND itab2.
WHEN '09'.
itab2-sep = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum9 = sum9 + itab2-sep.
APPEND itab2.
WHEN '10'.
itab2-oct = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum10 = sum10 + itab2-oct.
APPEND itab2.
WHEN '11'.
itab2-nov = t_s .
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum11 = sum11 + itab2-nov.
APPEND itab2.
WHEN '12'.
itab2-dec = t_s.
itab2-KUNAG = wa_itab1-KUNAG.
itab2-name1 = wa_itab1-name1.
itab2-total = wa_itab1-total.
sum12 = sum12 + itab2-dec.
APPEND itab2.
itab2-total = itab2-jan + itab2-feb + itab2-mar + itab2-apr + itab2-may + itab2-jun + itab2-jul + itab2-aug + itab2-sep
+ itab2-oct + itab2-nov + itab2-dec .
total = sum1 + sum2 + sum3 + sum4 + sum5 + sum6 + sum7 + sum8 + sum9 + sum10 + sum11 + sum12.
IF MM = 'A'. " Mode for Append
APPEND itab2.
ELSE. " Mode for Modify
itab2-KUNAG = itab1-KUNAG.
itab2-name1 = itab2-name1.
"MODIFY itab2 WHERE kunag = itab1-kunag.
ENDIF.
"loop at itab2 .
on change of itab2-KUNAG." ,itab2-name1,itab2-jan,itab2-feb,itab2-mar,itab2-apr,itab2-may,itab2-jun,itab2-jul,itab2-aug,itab2-sep,itab2-oct.
WRITE:/1 SY-VLINE,
itab2-KUNAG under 'PARTY' LEFT-JUSTIFIED ,0 SY-VLINE COLOR 2,
itab2-name1 under 'NAME' LEFT-JUSTIFIED ,10 SY-VLINE,
itab2-jan DECIMALS 1 under 'JAN' LEFT-JUSTIFIED,40 SY-VLINE,
itab2-feb DECIMALS 1 under 'FEB' LEFT-JUSTIFIED,50 SY-VLINE,
itab2-mar DECIMALS 1 under 'MAR' LEFT-JUSTIFIED,60 SY-VLINE,
itab2-apr DECIMALS 1 under 'APR' LEFT-JUSTIFIED,70 SY-VLINE,
itab2-may DECIMALS 1 under 'MAY' LEFT-JUSTIFIED,80 SY-VLINE,
itab2-jun DECIMALS 1 under 'JUN' LEFT-JUSTIFIED,90 SY-VLINE,
itab2-jul DECIMALS 1 under 'JUL' LEFT-JUSTIFIED,100 SY-VLINE,
itab2-aug DECIMALS 1 under 'AUG' LEFT-JUSTIFIED,110 SY-VLINE,
itab2-sep DECIMALS 1 under 'SEP' LEFT-JUSTIFIED,120 SY-VLINE,
itab2-oct DECIMALS 1 under 'OCT' LEFT-JUSTIFIED,130 SY-VLINE,
itab2-nov DECIMALS 1 under 'NOV' LEFT-JUSTIFIED,140 SY-VLINE,
itab2-dec DECIMALS 1 under 'DEC' LEFT-JUSTIFIED,150 SY-VLINE,
itab2-Total DECIMALS 1 under 'TOTAL' LEFT-JUSTIFIED,160 SY-VLINE COLOR 3,
170 SY-VLINE COLOR 3.
uline.
"itab2-total = itab2-jan +value itab2-febitab3-maritab2-apritab2-mayitab2-junitab3-julitab2-augitab2-sepitab2-octitab3-nov+itab2-dec).
"itab2-total = sum(itab2-jan) .
endon.
"endloop.
ENDCASE.
ENDIF.
"ENDFORM.
ENDAT.
ENDLOOP.
ENDCASE.
write: sum1 DECIMALS 1 under 'JAN' LEFT-JUSTIFIED,40 SY-VLINE,
sum2 DECIMALS 1 under 'FEB' LEFT-JUSTIFIED,50 SY-VLINE,
sum3 DECIMALS 1 under 'MAR' LEFT-JUSTIFIED,60 SY-VLINE,
sum4 DECIMALS 1 under 'APR' LEFT-JUSTIFIED,70 SY-VLINE,
sum5 DECIMALS 1 under 'MAY' LEFT-JUSTIFIED,80 SY-VLINE,
sum6 DECIMALS 1 under 'JUN' LEFT-JUSTIFIED,90 SY-VLINE,
sum7 DECIMALS 1 under 'JUL' LEFT-JUSTIFIED,100 SY-VLINE,
sum8 DECIMALS 1 under 'AUG' LEFT-JUSTIFIED,110 SY-VLINE,
sum9 DECIMALS 1 under 'SEP' LEFT-JUSTIFIED,120 SY-VLINE,
sum10 DECIMALS 1 under 'OCT' LEFT-JUSTIFIED,130 SY-VLINE,
sum11 DECIMALS 1 under 'NOV' LEFT-JUSTIFIED,140 SY-VLINE,
sum12 DECIMALS 1 under 'DEC' LEFT-JUSTIFIED,150 SY-VLINE,
sum13 DECIMALS 1 under 'TOTAL' LEFT-JUSTIFIED,160 SY-VLINE COLOR 1.
uline.
‎2008 Apr 01 4:57 AM
hi,
dont make the code complex.
declare internal table with the first two fields as KUNAG & MM.
then sort the internal table by KUNAG & MM.
sort itab by KUNAG MM.
now inside the loop.
loop at itab.
at end of MM.
sum.
total = itab2-total. "which will contain sum of monthly total for customer wise.
endat.
endloop.
Reward if useful.......................
‎2008 Apr 01 4:57 AM
hi,
dont make the code complex.
declare internal table with the first two fields as KUNAG & MM.
then sort the internal table by KUNAG & MM.
sort itab by KUNAG MM.
now inside the loop.
loop at itab.
at end of MM.
sum.
total = itab2-total. "which will contain sum of monthly total for customer wise.
endat.
endloop.
Reward if useful.......................
‎2008 Apr 01 5:02 AM
Hi Poorna
I tried will all the possibilities but still the same result
did you able to run my report and see the result
I have pasted my coding if you can correct and send me I will be more appriciated
regards
Piroz