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: 

regarding reports

Former Member
0 Kudos

hi experts,

i am trying to execute a report but it is givin runtime error ie &include incl_installation_error..m sending u full code..make changes whereever required

REPORT ZFI_R_RAMAN .

DATA: BEGIN OF ITAB OCCURS 0,

ORDER(3) TYPE C,

MAT(5) TYPE C,

CD TYPE C,

QTY(5) TYPE C,

CQUAN(8) TYPE P DECIMALS 2,

DQUAN(8) TYPE P DECIMALS 2,

CRATE(8) TYPE P DECIMALS 2,

DRATE(8) TYPE P DECIMALS 2,

SUM(16) TYPE P DECIMALS 2,

RATE(8) TYPE P DECIMALS 3,

VALUE(13) TYPE P DECIMALS 3,

END OF ITAB.

DATA: WCREDIT LIKE ITAB-QTY,

WDEBIT LIKE ITAB-QTY,

WACREDIT LIKE ITAB-VALUE,

WADEBIT LIKE ITAB-VALUE,

DATA: WCREDIT1(15) type c,

WDEBIT1(15) type c,

WACREDIT1(15) type c,

WADEBIT1(15) type c,

wasum(15) type c.

ITAB-ORDER = '01'.

ITAB-MAT = 'MA'.

ITAB-CD = 'H'.

ITAB-QTY = '2'.

ITAB-RATE = '1.8'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '02'.

ITAB-MAT = 'MA'.

ITAB-CD = 'S'.

ITAB-QTY = '1'.

ITAB-RATE = '1.7'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '03'.

ITAB-MAT = 'MA'.

ITAB-CD = 'H'.

ITAB-QTY = '3'.

ITAB-RATE = '1.8'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '04'.

ITAB-MAT = 'SA'.

ITAB-CD = 'H'.

ITAB-QTY = '4'.

ITAB-RATE = '1.9'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '05'.

ITAB-MAT = 'SA'.

ITAB-CD = 'S'.

ITAB-QTY = '4'.

ITAB-RATE = '20.0'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '06'.

ITAB-MAT = 'MA'.

ITAB-CD = 'S'.

ITAB-QTY = '2'.

ITAB-RATE = '4.0'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '07'.

ITAB-MAT = 'SA'.

ITAB-CD = 'H'.

ITAB-QTY = '3'.

ITAB-RATE = '5.0'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '08'.

ITAB-MAT = 'JA'.

ITAB-CD = 'H'.

ITAB-QTY = '2'.

ITAB-RATE = '1.8'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

ITAB-ORDER = '09'.

ITAB-MAT = 'JA'.

ITAB-CD = 'S'.

ITAB-QTY = '2'.

ITAB-RATE = '1.8'.

ITAB-VALUE = ITAB-QTY * ITAB-RATE.

APPEND ITAB.

SORT ITAB BY MAT.

LOOP AT ITAB.

IF ITAB-CD = 'H'.

WCREDIT = WCREDIT + ITAB-QTY.

WACREDIT = WACREDIT + ITAB-VALUE.

ELSEIF ITAB-CD = 'S'.

WDEBIT = WDEBIT + ITAB-QTY.

WADEBIT = WADEBIT + ITAB-VALUE.

ENDIF.

ITAB-CQUAN = WCREDIT.

ITAB-DQUAN = WDEBIT.

ITAB-CRATE = WACREDIT.

ITAB-DRATE = WADEBIT.

ITAB-SUM = ITAB-CRATE - ITAB-DRATE.

AT END OF MAT.

APPEND ITAB.

CLEAR: WACREDIT,WADEBIT,WCREDIT,WDEBIT.

ENDAT.

ENDLOOP.

WRITE:/ 'matno', SPACE,SPACE,SPACE, 'crqty',32 'dbqty',50 'crvalue',65'dbvalue', 74 'sum'.

LOOP AT ITAB.

*on change of itab-mat.

WCREDIT = ITAB-CQUAN.

WDEBIT = ITAB-DQUAN.

WACREDIT = ITAB-CRATE.

WADEBIT = ITAB-DRATE.

WASUM = ITAB-SUM.

WRITE:/ ITAB-MAT,WCREDIT,WDEBIT,WACREDIT,WADEBIT,WASUM.

AT LAST.

SUM.

SKIP 2.

WRITE:/65 'total sum', 74 ITAB-SUM.

ENDAT.

CLEAR WASUM.

ENDLOOP.

3 REPLIES 3

Former Member
0 Kudos

Hi Prakash,

there's an error in the algorithm: you do a LOOP AT ITAB and then inside the LOOP you perform an APPEND ITAB, so this loop never ends!!!

I hope it helps. Best regards,

Alvaro

Former Member
0 Kudos

Use clear itab after append itab

it may solve your problem

And as Alvaro says try to remove append itab with in the same internal table loop

in this case for u modify will work out

<b>Reward if useful</b>

Message was edited by:

Anjaneyulu Gude

Message was edited by:

Anjaneyulu Gude

Message was edited by:

Anjaneyulu Gude

Former Member
0 Kudos

The run time error is occuring due to insufficient memory space. This insufficiency can be caused either due to an unterminated loop or variables storing bulk amount of data keeps on adding data to themselves. Here the case is related to unterminated loop. The APPEND statement is causing the loop execute infinitely.

Also a point to be noted is, when you use AT END OF field F statement, Within the AT ... ENDAT processing blocks, all argument fields following f are filled with "". Hence the calculated values that are stored after MAT field in the headerline are cleared off or stored with '' depending on the datatype of its fields.

Please see the below piece of code to be added. I hope it is helpful

*----


data : itab1 like table of itab with header line.

*----


SORT ITAB BY MAT.

LOOP AT ITAB.

IF ITAB-CD = 'H'.

WCREDIT = WCREDIT + ITAB-QTY.

WACREDIT = WACREDIT + ITAB-VALUE.

ELSEIF ITAB-CD = 'S'.

WDEBIT = WDEBIT + ITAB-QTY.

WADEBIT = WADEBIT + ITAB-VALUE.

ENDIF.

ITAB-CQUAN = WCREDIT.

ITAB-DQUAN = WDEBIT.

ITAB-CRATE = WACREDIT.

ITAB-DRATE = WADEBIT.

ITAB-SUM = ITAB-CRATE - ITAB-DRATE.

*----


on change of itab-mat.

append itab to itab1.

endon.

*----


*AT END OF MAT.

*APPEND itab.

*CLEAR: WACREDIT,WADEBIT,WCREDIT,WDEBIT.

*ENDAT.

ENDLOOP.