2006 Jul 18 6:19 AM
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????
2006 Jul 18 7:16 AM
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????
2006 Jul 18 6:23 AM
2006 Jul 18 6:29 AM
2006 Jul 18 6:36 AM
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
2006 Jul 18 6:38 AM
i have this befoer
DELETE ADJACENT DUPLICATES FROM imseg_mkpf_e COMPARING ALL FIELDS.
*
2006 Jul 18 6:39 AM
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.
2006 Jul 18 6:42 AM
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
2006 Jul 18 6:48 AM
Can u plz give the Declarations of itab and Field symbols..
also let me know what is the Dump statement u are getting???
2006 Jul 18 6:54 AM
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.
2006 Jul 18 6:56 AM
2006 Jul 18 6:59 AM
Hi rani,
You declare itab_mbew as work area.
Then modify itab from wa would work.
Azaz.
2006 Jul 18 7:03 AM
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
2006 Jul 18 6:58 AM
then you should use.
MODIFY IT_MBEW.
<b>instead MODIFY IT_MBEW INDEX SY-TABIX.</b>
2006 Jul 18 7:16 AM
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.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |