Application Development and Automation 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: 
Read only

Modify statement not working!

Former Member
0 Likes
1,681

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,

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
950

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

4 REPLIES 4
Read only

Former Member
0 Likes
951

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

Read only

Former Member
0 Likes
950

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

Read only

former_member194669
Active Contributor
0 Likes
950

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®

Read only

Former Member
0 Likes
950

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.