Application Development 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: 

ABAP AT END OF Statement issue

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

5 REPLIES 5

Former Member
0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

Resolved Had to modify the code.

thank you avinash

0 Kudos

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.