07-03-2006 9:01 AM
i made this select and get err
23 when acsesing table<b> mardh</b>
LOOP AT imard ASSIGNING <ls_mard>.
*
IF <ls_mard>-lfgja < year.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
CONCATENATE <ls_mard>-lfmon <ls_mard>-lfgja INTO zmon_year.
current period in mard is smaller then s.screen period
IF zmon_year < z_period.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
SELECT lgort
matnr
lfgja
lfmon
labst
FROM mardh
INTO TABLE imardh
WHERE matnr = <ls_mard>-matnr
AND werks = <ls_mard>-werks
AND lgort = <ls_mard>-lgort.
07-03-2006 9:13 AM
Try that:
LOOP AT imard ASSIGNING <ls_mard>.
*
IF <ls_mard>-lfgja < year.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
CONCATENATE <ls_mard>-lfmon <ls_mard>-lfgja INTO zmon_year.
current period in mard is smaller then s.screen period
IF zmon_year < z_period.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
SELECT lgort
matnr
lfgja
lfmon
labst
FROM mardh
<b>INTO CORRESPONDING FIELDS OF TABLE imardh</b>
WHERE matnr = <ls_mard>-matnr
AND werks = <ls_mard>-werks
AND lgort = <ls_mard>-lgort.
07-03-2006 9:05 AM
LOOP AT <b>imard</b> ASSIGNING <ls_mard>.
*
IF <ls_mard>-lfgja < year.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
CONCATENATE <ls_mard>-lfmon <ls_mard>-lfgja INTO zmon_year.
current period in mard is smaller then s.screen period
IF zmon_year < z_period.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
SELECT lgort
matnr
lfgja
lfmon
labst
FROM mardh
INTO TABLE <b>imardh</b>
WHERE matnr = <ls_mard>-matnr
AND werks = <ls_mard>-werks
AND lgort = <ls_mard>-lgort.
in ur code loop and after select opration used same table how it is updated ...
better to use diffrent internal tables.
07-03-2006 9:13 AM
Try that:
LOOP AT imard ASSIGNING <ls_mard>.
*
IF <ls_mard>-lfgja < year.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
CONCATENATE <ls_mard>-lfmon <ls_mard>-lfgja INTO zmon_year.
current period in mard is smaller then s.screen period
IF zmon_year < z_period.
<ls_mard>-s_stock = <ls_mard>-labst.
<ls_mard>-e_stock = <ls_mard>-labst.
ELSE.
SELECT lgort
matnr
lfgja
lfmon
labst
FROM mardh
<b>INTO CORRESPONDING FIELDS OF TABLE imardh</b>
WHERE matnr = <ls_mard>-matnr
AND werks = <ls_mard>-werks
AND lgort = <ls_mard>-lgort.
07-03-2006 9:18 AM
Can you check into the decaration of the internal table <b>imardh</b>. Declare the internal table in the below order and also use the same order in the select statement.
<b>matnr
lgort
lfgja
lfmon
labst</b>
I suggest you to always select the fields in the order in which there are in the table. One way it always increase the performance of your selection.
rgds,
TM.