03-05-2009 5:44 PM
Hi,
I have a report with selection screen year(ls_nd_year) & period (ls_nd_period)
internal table it_cosp has following values
costelemnt year period1 period2 period3....... period 12
0000540000 2009 6 7 80 9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0000540000 2009 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 77.00
0000541000 2009 10 20 30 40 80 0.00 0.00 0.00 0.00 0.00 0.00 0.00
0000541000 2008 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 77.00
My requirement is whenever user enters current year say for eg: 2009 it should also add per costcenter previuos years values
for eg:
if user enters: year: 2009 & period : 05 ---it should add 2009 -1020304080+ 2008 -77
if user enters : year :2008 & period :12 ---it should just add 2008 period 12- value : 77.00
As of now this is truncating 2008 values.. how do i handle this? also Each costelment may have single entry for year or multiple years
I am using following code to sum it up.
SORT it_cosp by KSTAR.
LOOP AT it_cosp INTO wa_cosp .
wa1_cosp-wtg001 = wa1_cosp-wtg001 + wa_cosp-wtg001 .
wa1_cosp-wtg002 = wa1_cosp-wtg002 + wa_cosp-wtg002 .
wa1_cosp-wtg003 = wa1_cosp-wtg003 + wa_cosp-wtg003 .
wa1_cosp-wtg004 = wa1_cosp-wtg004 + wa_cosp-wtg004 .
wa1_cosp-wtg005 = wa1_cosp-wtg005 + wa_cosp-wtg005 .
wa1_cosp-wtg006 = wa1_cosp-wtg006 + wa_cosp-wtg006 .
wa1_cosp-wtg007 = wa1_cosp-wtg007 + wa_cosp-wtg007 .
wa1_cosp-wtg008 = wa1_cosp-wtg008 + wa_cosp-wtg008 .
wa1_cosp-wtg009 = wa1_cosp-wtg009 + wa_cosp-wtg009 .
wa1_cosp-wtg010 = wa1_cosp-wtg010 + wa_cosp-wtg010 .
wa1_cosp-wtg011 = wa1_cosp-wtg011 + wa_cosp-wtg011 .
wa1_cosp-wtg012 = wa1_cosp-wtg012 + wa_cosp-wtg012 .
AT END OF kstar.
ULINE.
WRITE: / wa1_cosp-wtg001,
wa1_cosp-wtg002,
wa1_cosp-wtg003,
wa1_cosp-wtg004,
wa1_cosp-wtg005,
wa1_cosp-wtg006,
wa1_cosp-wtg007,
wa1_cosp-wtg008,
wa1_cosp-wtg009,
wa1_cosp-wtg010,
wa1_cosp-wtg011,
wa1_cosp-wtg012.
IF ls_nd_perio = '005'.
IF wa1_cosp-gjahr < ls_nd_year.
v_calc = 'X'.
ENDIF.
IF v_calc = ' '.
wa_item-cjtdat = wa1_cosp-wtg001 + wa_cosp-wtg001 + wa1_cosp-wtg002 + wa_cosp-wtg002 + wa1_cosp-wtg003 + wa_cosp-wtg003 + wa1_cosp-wtg004 + wa_cosp-wtg004 + wa1_cosp-wtg005 + wa_cosp-wtg005 .
ELSE.
wa_item-cjtdat = wa1_cosp-wtg001 + wa_cosp-wtg001 + wa1_cosp-wtg002 + wa_cosp-wtg002 + wa1_cosp-wtg003 + wa_cosp-wtg003 + wa1_cosp-wtg004 + wa_cosp-wtg004 + wa1_cosp-wtg005 + wa_cosp-wtg005 + wa1_cosp-wtg006 + wa_cosp-wtg006 + wa1_cosp-wtg007 +
wa_cosp-wtg007 +
wa1_cosp-wtg008 + wa_cosp-wtg008 + wa1_cosp-wtg009 + wa_cosp-wtg009 + wa1_cosp-wtg010 + wa_cosp-wtg010 + wa1_cosp-wtg011 + wa_cosp-wtg011 + wa1_cosp-wtg012 + wa_cosp-wtg012.
ENDIF.
.
.
.
....... conituning with remaining periods...
MODIFY final internal table
Clear wa1_cosp
ENDAT.
Edited by: Vara K on Mar 5, 2009 6:45 PM
Edited by: Vara K on Mar 5, 2009 6:50 PM
03-05-2009 5:54 PM
HI,
DATA PERIOD TYPE IT_COSP-PERIOD1.
SORT it_cosp by KSTAR.
LOOP AT it_cosp INTO wa_cosp WHERE YEAR LE P_YEAR.
DO 12 TIMES VARYING period FROM PERiOD1 NEXT PERIOD2.
IF SY-INDEX LE P_PERIOD.
TOT_PER = TOT_PER + period.
ELSe.
exit.
ENSIF.
ENDDO.
AT END OF kstar.
WRITE 😕 TOT_PER.
CLEAR TOT_PER.
ENDOF.
ENDLOOP.
Edited by: Avinash Kodarapu on Mar 5, 2009 11:25 PM
03-05-2009 5:54 PM
HI,
DATA PERIOD TYPE IT_COSP-PERIOD1.
SORT it_cosp by KSTAR.
LOOP AT it_cosp INTO wa_cosp WHERE YEAR LE P_YEAR.
DO 12 TIMES VARYING period FROM PERiOD1 NEXT PERIOD2.
IF SY-INDEX LE P_PERIOD.
TOT_PER = TOT_PER + period.
ELSe.
exit.
ENSIF.
ENDDO.
AT END OF kstar.
WRITE 😕 TOT_PER.
CLEAR TOT_PER.
ENDOF.
ENDLOOP.
Edited by: Avinash Kodarapu on Mar 5, 2009 11:25 PM
03-05-2009 6:25 PM
Avinash,
I have modified my code accordingly and I am getting a dump
Legal range exceeded for DO...VARYING or WHILE...VARY
SORT it_cosp BY kstar.
LOOP AT it_cosp INTO wa_cosp WHERE gjahr LE ls_nd_year .
DO 12 TIMES VARYING period FROM wa_cosp-wtg001 NEXT wa_cosp-wtg012.
IF sy-index LE ls_nd_perio.
wa1_cosp-total = wa1_cosp-total + period .
ELSE.
EXIT.
ENDIF.
ENDDO.
AT END OF kstar.
ULINE.
WRITE: / wa1_cosp-total.
also,
FYI..below is my internal table declaration.
TYPES: BEGIN OF t_cosp ,
kstar TYPE cosp-kstar,
wtg001 TYPE cosp-wtg001,
wtg002 TYPE cosp-wtg002,
wtg003 TYPE cosp-wtg003,
wtg004 TYPE cosp-wtg004,
wtg005 TYPE cosp-wtg005,
wtg006 TYPE cosp-wtg006,
wtg007 TYPE cosp-wtg007,
wtg008 TYPE cosp-wtg008,
wtg009 TYPE cosp-wtg009,
wtg010 TYPE cosp-wtg010,
wtg011 TYPE cosp-wtg011,
wtg012 TYPE cosp-wtg012,
objnr TYPE coep-objnr,
pos1(2) TYPE c,
gjahr TYPE cosp-gjahr,
total TYPE cosp-wtg001,
END OF t_cosp.
DATA: it_cosp TYPE STANDARD TABLE OF t_cosp.
DATA: it_cosp1 TYPE STANDARD TABLE OF t_cosp.
DATA : wa_cosp TYPE t_cosp.
DATA : wa1_cosp TYPE t_cosp.
Anyidea what went wrong?
Rgds
Vara
Edited by: Vara K on Mar 5, 2009 7:27 PM
03-05-2009 6:34 PM
Avinash,
I have noticed my mistake and corrected to folowing.
DO 12 TIMES VARYING period FROM wa_cosp-wtg001 NEXT wa_cosp-wtg002
this is still not adding up 2008 values..
SORT it_cosp BY kstar.
LOOP AT it_cosp INTO wa_cosp WHERE gjahr LE ls_nd_year AND kstar = wa_items-kstar.
DO 12 TIMES VARYING period FROM wa_cosp-wtg001 NEXT wa_cosp-wtg002.
IF sy-index LE ls_nd_perio.
wa1_cosp-total = wa1_cosp-total + period .
ELSE.
EXIT.
ENDIF.
ENDDO.
AT END OF kstar.
ULINE.
WRITE: / wa1_cosp-total.
I have debugged it .. when I pass 05 for period and 2009 for year..
It is reading row which has 12th period value first and since our period is restircting total is not picking up 12th period value.
second time all values are before 5th and they are getting totalled.
Rgds
Vara
Edited by: Vara K on Mar 5, 2009 7:37 PM
03-05-2009 9:45 PM
01-24-2014 7:00 AM
hi Vara ,
thanks for your prompt respone we to do sum on case syntax.
READ TABLE payroll-inter-rt INTO wa_rt WITH KEY lgart = '/560' .
v_mon = wa_rgdir-fpend+4(2).
CASE v_mon .
WHEN '01' .
ls_salary-jan = wa_rt-betrg + ls_salary-jan.
MOVE ls_salary-jan TO lv_rename.
CONCATENATE lv_rename lv_count INTO ls_salary-jan1.
lv_count1 = lv_count.
lv_tot1 = ls_salary-jan.
endcase.
please guide to sum on case syntax.