‎2007 Sep 10 2:14 PM
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.
‎2007 Sep 10 2:32 PM
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
‎2007 Sep 10 2:33 PM
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
‎2007 Sep 10 3:50 PM
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.