Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

monthwise report modification

Former Member
0 Likes
484

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
447

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.......................

2 REPLIES 2
Read only

Former Member
0 Likes
448

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.......................

Read only

0 Likes
447

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