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

ERR in ITAB

Former Member
0 Likes
1,594

LOOP AT imseg_mkpf_e ASSIGNING <ls_imseg_mkpf_e>.

AT END OF matnr.

READ TABLE itab_mbew WITH KEY matnr = <ls_imseg_mkpf_e>-matnr.

if sy-subrc = '0'.

itab_mbew-max_qty = <ls_imseg_mkpf_e>-lbkum.

<ls_imseg_mkpf_e>-s_stock = <ls_imseg_mkpf_e>-lbkum - sum_s + sum_h.

itab_mbew-s_stock = <ls_imseg_mkpf_e>-s_stock.

itab_mbew-e_stock = <ls_imseg_mkpf_e>-e_stock.

modify itab_mbew.

endif.

ENDAT.

ENDLOOP.

<b>i get dump on this line

READ TABLE</b>

why????

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,567

Hi Rani,

Store the SY-TABIX after the READ statement in one variable and then modify using INDEX option in READ.


<b>DATA : indx TYPE sy-tabix.</b>

IF flag = 'X'.
  READ TABLE itab_mbew WITH KEY matnr = imseg_mkpf_e-matnr.

  IF sy-subrc = '0'.

<b>    indx = sy-tabix.</b>

    itab_mbew-max_qty = imseg_mkpf_e-lbkum.
* imseg_mkpf_e-s_stock = imseg_mkpf_e-lbkum - sum_s + sum_h.
    itab_mbew-s_stock = imseg_mkpf_e-e_stock - sum_s + sum_h.
* itab_mbew-e_stock = imseg_mkpf_e-e_stock.

<b>    MODIFY itab_mbew INDEX indx.

    CLEAR indx.</b>

  ENDIF.
ENDIF.

Regards,

Arun Sambargi.

LOOP AT imseg_mkpf_e ASSIGNING <ls_imseg_mkpf_e>.

AT END OF matnr.

READ TABLE itab_mbew WITH KEY matnr = <ls_imseg_mkpf_e>-matnr.

if sy-subrc = '0'.

itab_mbew-max_qty = <ls_imseg_mkpf_e>-lbkum.

<ls_imseg_mkpf_e>-s_stock = <ls_imseg_mkpf_e>-lbkum - sum_s + sum_h.

itab_mbew-s_stock = <ls_imseg_mkpf_e>-s_stock.

itab_mbew-e_stock = <ls_imseg_mkpf_e>-e_stock.

modify itab_mbew.

endif.

ENDAT.

ENDLOOP.

<b>i get dump on this line

READ TABLE</b>

why????

13 REPLIES 13
Read only

naimesh_patel
Active Contributor
0 Likes
1,567

Hello,

What type of dump, do you get ?

Regards,

Naimesh

Read only

0 Likes
1,567

err in abap statement with internal table

Read only

0 Likes
1,567

Do you have any delete statements just before the read? It would help if you could provide the code just before the read statement too.

If there are any delete statements, ensure you give a CONTINUE statement after the same.

Sudha

Read only

0 Likes
1,567

i have this befoer

DELETE ADJACENT DUPLICATES FROM imseg_mkpf_e COMPARING ALL FIELDS.

*

Read only

Former Member
0 Likes
1,567

Hi Rani,

<b> <ls_imseg_mkpf_e>-s_stock = <ls_imseg_mkpf_e>-lbkum - sum_s + sum_h.</b>

Rather than writing the above line of code you pass <b>lbkum - sum_s + sum_h</b> in a variable and passit to as shown below

<b><ls_imseg_mkpf_e>-s_stock = <ls_imseg_mkpf_e>-variablename.</b>

Regards,

Azaz Ali.

Read only

Former Member
0 Likes
1,567

HI,

Error is because of AT END OF Statement.

DOnt use AT END OF if you are looping using fieldsymobls.

Since AT END OF will convert all character field to * and intializes qty field, this will get direclty reflected in your internal table since you are usinn fieldsymbols.

SO if you want to use AT END OF then remove fieldsymbol and use a normal work area.

OR

it can be because of

MODIFY IT_MBEW.

instead MODIFY IT_MBEW INDEX SY-TABIX.

Message was edited by: Sharath kumar R

Read only

Former Member
0 Likes
1,567

Can u plz give the Declarations of itab and Field symbols..

also let me know what is the Dump statement u are getting???

Read only

0 Likes
1,567

here is the all code

declaration.

DATA : BEGIN OF imseg_mkpf OCCURS 0,

werks like mseg-werks,

matnr like mseg-matnr,

lbkum like mseg-lbkum,

shkzg like mseg-SHKZG,

menge like mseg-menge,

s_stock like mardh-labst,

e_stock like mardh-labst,

min_qty like mardh-labst,

max_qty like mardh-labst,

END OF imseg_mkpf.

DATA : cl_itab LIKE m_itab OCCURS 0 WITH HEADER LINE.

DATA : itab_mseg LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : imseg_mkpf_e LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : itab_mseg_e LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : itab_mseg_li LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : itab_merge LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : itab_mbew LIKE imseg_mkpf OCCURS 0 WITH HEADER LINE.

DATA : xsum(1).

LOOP AT imseg_mkpf_e. " ASSIGNING <ls_imseg_mkpf_e>.

clear flag.

AT NEW matnr.

READ TABLE itab_mbew WITH KEY matnr = imseg_mkpf_e-matnr.

IF sy-subrc = '0'.

itab_mbew-min_qty = imseg_mkpf_e-lbkum.

ENDIF.

ENDAT.

IF imseg_mkpf_e-shkzg = 'S'.

sum_s = sum_s + imseg_mkpf_e-menge.

ELSEIF imseg_mkpf_e-shkzg = 'H'.

sum_h = sum_h + imseg_mkpf_e-menge.

ENDIF.

AT END OF matnr.

imseg_mkpf_e-s_stock = imseg_mkpf_e-lbkum - sum_s + sum_h.

flag = 'X'.

ENDAT.

IF flag = 'X'.

READ TABLE itab_mbew WITH KEY matnr = imseg_mkpf_e-matnr.

IF sy-subrc = '0'.

itab_mbew-max_qty = imseg_mkpf_e-lbkum.

  • imseg_mkpf_e-s_stock = imseg_mkpf_e-lbkum - sum_s + sum_h.

itab_mbew-s_stock = imseg_mkpf_e-e_stock - sum_s + sum_h.

  • itab_mbew-e_stock = imseg_mkpf_e-e_stock.

MODIFY itab_mbew.

ENDIF.

ENDIF.

ENDLOOP.

Read only

0 Likes
1,567

i get dump on modify itab_mbew

Read only

0 Likes
1,567

Hi rani,

You declare itab_mbew as work area.

Then modify itab from wa would work.

Azaz.

Read only

0 Likes
1,567

Hello,

Use Modify statement with some where condition. like <b>modify itab_mbew where matnr = l_matnr.</b>

Because you are not using workarea of itab_mbew anywhere in the loop.

Regards,

Naimesh

Read only

Former Member
0 Likes
1,567

then you should use.

MODIFY IT_MBEW.

<b>instead MODIFY IT_MBEW INDEX SY-TABIX.</b>

Read only

Former Member
0 Likes
1,568

Hi Rani,

Store the SY-TABIX after the READ statement in one variable and then modify using INDEX option in READ.


<b>DATA : indx TYPE sy-tabix.</b>

IF flag = 'X'.
  READ TABLE itab_mbew WITH KEY matnr = imseg_mkpf_e-matnr.

  IF sy-subrc = '0'.

<b>    indx = sy-tabix.</b>

    itab_mbew-max_qty = imseg_mkpf_e-lbkum.
* imseg_mkpf_e-s_stock = imseg_mkpf_e-lbkum - sum_s + sum_h.
    itab_mbew-s_stock = imseg_mkpf_e-e_stock - sum_s + sum_h.
* itab_mbew-e_stock = imseg_mkpf_e-e_stock.

<b>    MODIFY itab_mbew INDEX indx.

    CLEAR indx.</b>

  ENDIF.
ENDIF.

Regards,

Arun Sambargi.