2006 Jul 03 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.
2006 Jul 03 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.
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.
2006 Jul 03 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.
2006 Jul 03 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.
2006 Jul 03 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.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |