‎2007 Sep 10 7:32 AM
hi experts,
m sendin u the code...its not workin..plz help me out.
REPORT ZFI_R_RAMAN .
DATA: BEGIN OF ITAB OCCURS 0,
ORDER TYPE C,
MAT TYPE C,
CD TYPE C,
QTY TYPE C,
CQUAN TYPE C,
DQUAN TYPE C,
CRATE TYPE C,
DRATE TYPE C,
SUM TYPE P DECIMALS 2,
RATE TYPE P DECIMALS 3,
END OF ITAB.
DATA: WCREDIT LIKE ITAB-QTY,
WDEBIT LIKE ITAB-QTY,
WACREDIT LIKE ITAB-RATE,
WADEBIT LIKE ITAB-RATE.
ITAB-ORDER = '01'.
ITAB-MAT = 'MA'.
ITAB-CD = 'H'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '02'.
ITAB-MAT = 'MA'.
ITAB-CD = 'S'.
ITAB-QTY = '1'.
ITAB-RATE = '1.7'.
APPEND ITAB.
ITAB-ORDER = '03'.
ITAB-MAT = 'MA'.
ITAB-CD = 'H'.
ITAB-QTY = '3'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '04'.
ITAB-MAT = 'SA'.
ITAB-CD = 'H'.
ITAB-QTY = '4'.
ITAB-RATE = '1.9'.
APPEND ITAB.
ITAB-ORDER = '05'.
ITAB-MAT = 'SA'.
ITAB-CD = 'S'.
ITAB-QTY = '4'.
ITAB-RATE = '20.0'.
APPEND ITAB.
ITAB-ORDER = '06'.
ITAB-MAT = 'MA'.
ITAB-CD = 'S'.
ITAB-QTY = '2'.
ITAB-RATE = '4.0'.
APPEND ITAB.
ITAB-ORDER = '07'.
ITAB-MAT = 'SA'.
ITAB-CD = 'H'.
ITAB-QTY = '3'.
ITAB-RATE = '5.0'.
APPEND ITAB.
ITAB-ORDER = '08'.
ITAB-MAT = 'JA'.
ITAB-CD = 'H'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '09'.
ITAB-MAT = 'JA'.
ITAB-CD = 'S'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
LOOP AT ITAB.
IF ITAB-CD = 'H'.
WCREDIT = WCREDIT + ITAB-QTY.
WACREDIT = WACREDIT + ITAB-RATE.
ELSEIF ITAB-CD = 'S'.
WDEBIT = WDEBIT + ITAB-QTY.
WADEBIT = WADEBIT + ITAB-RATE.
ENDIF.
ITAB-CQUAN = WCREDIT.
ITAB-DQUAN = WDEBIT.
ITAB-CRATE = WACREDIT.
ITAB-DRATE = WADEBIT.
ITAB-SUM = ITAB-CRATE - ITAB-DRATE.
APPEND ITAB.
CLEAR: WACREDIT,WADEBIT,WCREDIT,WDEBIT.
ENDLOOP.
LOOP AT ITAB.
WRITE:/ ITAB-ORDER,ITAB-CQUAN,ITAB-DQUAN,ITAB-CRATE,ITAB-DRATE,ITAB-SUM.
‎2007 Sep 10 7:40 AM
Hi,
your definition CRATE TYPE C,
DRATE TYPE C,
is wrong. Both must be a p decimals 2 or like ITAB-RATE
Regards
Nicole
‎2007 Sep 10 7:38 AM
hi.
please tell me what is the problem, r u getting error or wrong ANS.
use this code.
LOOP AT ITAB.
IF ITAB-CD = 'H'.
WCREDIT = WCREDIT + ITAB-QTY.
WACREDIT = WACREDIT + ITAB-RATE.
ELSEIF ITAB-CD = 'S'.
WDEBIT = WDEBIT + ITAB-QTY.
WADEBIT = WADEBIT + ITAB-RATE.
ENDIF.
ITAB-CQUAN = WCREDIT.
ITAB-DQUAN = WDEBIT.
ITAB-CRATE = WACREDIT.
ITAB-DRATE = WADEBIT.
ITAB-SUM = ITAB-CRATE - ITAB-DRATE.
<b>modify ITAB.</b>
CLEAR: WACREDIT,WADEBIT,WCREDIT,WDEBIT.
ENDLOOP.
‎2007 Sep 10 7:40 AM
‎2007 Sep 10 7:43 AM
‎2007 Sep 10 7:52 AM
Hi Prakash ,
Make the following changes in the IT decleration
<b>CRATE TYPE P DECIMALS 2,
DRATE TYPE P DECIMALS 2,</b>
you have declared the varaibles as char 1 , and are trying to assign a numeric value to it and hence it is taking the value as * and the program dumps.
And in the loop replace the APPEND ITAB , with MODIFY ITAB. beacuse in this case the append statement will result in an infinite loop.
For your ref i am pasing the modified code for you
DATA: BEGIN OF ITAB OCCURS 0,
ORDER TYPE C,
MAT TYPE C,
CD TYPE C,
QTY TYPE C,
CQUAN TYPE C,
DQUAN TYPE C,
CRATE TYPE P DECIMALS 2,
DRATE TYPE P DECIMALS 2,
SUM TYPE P DECIMALS 2,
RATE TYPE P DECIMALS 3,
END OF ITAB.
DATA: WCREDIT LIKE ITAB-QTY,
WDEBIT LIKE ITAB-QTY,
WACREDIT LIKE ITAB-RATE,
WADEBIT LIKE ITAB-RATE.
ITAB-ORDER = '01'.
ITAB-MAT = 'MA'.
ITAB-CD = 'H'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '02'.
ITAB-MAT = 'MA'.
ITAB-CD = 'S'.
ITAB-QTY = '1'.
ITAB-RATE = '1.7'.
APPEND ITAB.
ITAB-ORDER = '03'.
ITAB-MAT = 'MA'.
ITAB-CD = 'H'.
ITAB-QTY = '3'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '04'.
ITAB-MAT = 'SA'.
ITAB-CD = 'H'.
ITAB-QTY = '4'.
ITAB-RATE = '1.9'.
APPEND ITAB.
ITAB-ORDER = '05'.
ITAB-MAT = 'SA'.
ITAB-CD = 'S'.
ITAB-QTY = '4'.
ITAB-RATE = '20.0'.
APPEND ITAB.
ITAB-ORDER = '06'.
ITAB-MAT = 'MA'.
ITAB-CD = 'S'.
ITAB-QTY = '2'.
ITAB-RATE = '4.0'.
APPEND ITAB.
ITAB-ORDER = '07'.
ITAB-MAT = 'SA'.
ITAB-CD = 'H'.
ITAB-QTY = '3'.
ITAB-RATE = '5.0'.
APPEND ITAB.
ITAB-ORDER = '08'.
ITAB-MAT = 'JA'.
ITAB-CD = 'H'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
ITAB-ORDER = '09'.
ITAB-MAT = 'JA'.
ITAB-CD = 'S'.
ITAB-QTY = '2'.
ITAB-RATE = '1.8'.
APPEND ITAB.
LOOP AT ITAB.
IF ITAB-CD = 'H'.
WCREDIT = WCREDIT + ITAB-QTY.
WACREDIT = WACREDIT + ITAB-RATE.
ELSEIF ITAB-CD = 'S'.
WDEBIT = WDEBIT + ITAB-QTY.
WADEBIT = WADEBIT + ITAB-RATE.
ENDIF.
ITAB-CQUAN = WCREDIT.
ITAB-DQUAN = WDEBIT.
ITAB-CRATE = WACREDIT.
ITAB-DRATE = WADEBIT.
ITAB-SUM = ITAB-CRATE - ITAB-DRATE.
MODIFY ITAB.
CLEAR: WACREDIT,WADEBIT,WCREDIT,WDEBIT.
ENDLOOP.
LOOP AT ITAB.
WRITE:/ ITAB-ORDER,ITAB-CQUAN,ITAB-DQUAN,ITAB-CRATE,ITAB-DRATE,ITAB-SUM.
endloop.Reward points if helpful and feel free to revert back in case of further queries,
Regards
Arun
‎2007 Sep 10 7:39 AM
hi,
use MODIFY STATEMENT in place of append as ur changing some values. if u use APPEND then it will add that changes as new records at last.
ITAB-CQUAN = WCREDIT.
ITAB-DQUAN = WDEBIT.
ITAB-CRATE = WACREDIT.
ITAB-DRATE = WADEBIT.
ITAB-SUM = ITAB-CRATE - ITAB-DRATE.
MODIFY ITAB. ////////// NOT APPEND ITAB.
IF HELPFUL REWARD SOME POINTS.
with regards,
Suresh Aluri.
‎2007 Sep 10 7:40 AM
Hi,
your definition CRATE TYPE C,
DRATE TYPE C,
is wrong. Both must be a p decimals 2 or like ITAB-RATE
Regards
Nicole