‎2008 May 13 5:20 PM
Hello All,
I am trying to update rate, price unit, unit of measure in the conditions table using the MODIFY statement as showm below. But the values in the internal table are not getting updated. The work area ls_crcond has the new values but why does the modify statement is failing to update that row in the internal table. Here is the code:-
READ TABLE ct_crcon INTO ls_crcond
WITH KEY vbeln = lw_item-vbeln
kposn = lw_item-posnr
kschl = lv_ts_agr.
IF ls_crcond-kmein NE lv_kmein.
* MOVE lv_kpein TO ls_crcond-kpein.
* MOVE lv_kmein TO ls_crcond-kmein.
* MOVE lv_kumza TO ls_crcond-kumza.
* MOVE lv_kumne TO ls_crcond-kumne.
CALL FUNCTION 'MARM_SINGLE_READ'
EXPORTING
* KZRFB = ' '
* MAXTZ = 0
matnr = lw_item-matid
meinh = ls_crcond-kmein
IMPORTING
wmarm = ls_marm
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
IF ls_marm-umrez GT 1.
MOVE ls_marm-umrez TO ls_crcond-kpein.
MOVE ls_mara-meins TO ls_crcond-kmein.
MODIFY ct_crcon FROM ls_crcond INDEX sy-tabix TRANSPORTING kpein kmein.
ELSEIF ls_marm-umren GT 1.
ls_crcond-kbetr = ls_crcond-kbetr * ls_marm-umren.
MOVE ls_mara-meins TO ls_crcond-kmein.
MODIFY ct_crcon FROM ls_crcond INDEX sy-tabix TRANSPORTING kbetr kmein.
ENDIF.
ENDIF.Thanks,
‎2008 May 13 5:25 PM
Try to use
MODIFY TABLE ct_crcon FROM ls_crcond TRANSPORTING kpein kmein.
sy-tabix is probably getting updated by 'MARM_SINGLE_READ' so you are missing the right index
‎2008 May 13 5:25 PM
Try to use
MODIFY TABLE ct_crcon FROM ls_crcond TRANSPORTING kpein kmein.
sy-tabix is probably getting updated by 'MARM_SINGLE_READ' so you are missing the right index
‎2008 May 13 5:27 PM
it may be known in the debugging ..whether the data is populating or not..into the workarea and whether the read statement is working fine or not....
regards,
venkat
‎2008 May 13 5:29 PM
Check this
READ TABLE ct_crcon INTO ls_crcond
WITH KEY vbeln = lw_item-vbeln
kposn = lw_item-posnr
kschl = lv_ts_agr.
IF ls_crcond-kmein NE lv_kmein.
v_tabix = sy-tabix. " <<<<<<<< store sy-tabix
* MOVE lv_kpein TO ls_crcond-kpein.
* MOVE lv_kmein TO ls_crcond-kmein.
* MOVE lv_kumza TO ls_crcond-kumza.
* MOVE lv_kumne TO ls_crcond-kumne.
CALL FUNCTION 'MARM_SINGLE_READ'
EXPORTING
* KZRFB = ' '
* MAXTZ = 0
matnr = lw_item-matid
meinh = ls_crcond-kmein
IMPORTING
wmarm = ls_marm
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
IF ls_marm-umrez GT 1.
MOVE ls_marm-umrez TO ls_crcond-kpein.
MOVE ls_mara-meins TO ls_crcond-kmein.
" Use v_tabix instead of sy-tabix
MODIFY ct_crcon FROM ls_crcond INDEX v_tabix TRANSPORTING kpein kmein.
ELSEIF ls_marm-umren GT 1.
ls_crcond-kbetr = ls_crcond-kbetr * ls_marm-umren.
MOVE ls_mara-meins TO ls_crcond-kmein.
" Use v_tabix instead of sy-tabix
MODIFY ct_crcon FROM ls_crcond INDEX v_tabix TRANSPORTING kbetr kmein.
ENDIF.
ENDIF.
a®
‎2008 May 13 5:32 PM
hi,
do this way ...
data : lv_tabix like sy-tabix.
READ TABLE ct_crcon INTO ls_crcond
WITH KEY vbeln = lw_item-vbeln
kposn = lw_item-posnr
kschl = lv_ts_agr.
if sy-subrc = 0.
lv_tabix = sy-tabix.
IF ls_crcond-kmein NE lv_kmein.
MOVE lv_kpein TO ls_crcond-kpein.
MOVE lv_kmein TO ls_crcond-kmein.
MOVE lv_kumza TO ls_crcond-kumza.
MOVE lv_kumne TO ls_crcond-kumne.
CALL FUNCTION 'MARM_SINGLE_READ'
EXPORTING
KZRFB = ' '
MAXTZ = 0
matnr = lw_item-matid
meinh = ls_crcond-kmein
IMPORTING
wmarm = ls_marm
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
IF ls_marm-umrez GT 1.
MOVE ls_marm-umrez TO ls_crcond-kpein.
MOVE ls_mara-meins TO ls_crcond-kmein.
MODIFY ct_crcon FROM ls_crcond INDEX lv_tabix TRANSPORTING kpein kmein.
ELSEIF ls_marm-umren GT 1.
ls_crcond-kbetr = ls_crcond-kbetr * ls_marm-umren.
MOVE ls_mara-meins TO ls_crcond-kmein.
MODIFY ct_crcon FROM ls_crcond INDEX lv_tabix TRANSPORTING kbetr kmein.
ENDIF.
ENDIF.
endif.