Application Development 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: 

select ERR

Former Member
0 Kudos

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.

1 ACCEPTED SOLUTION

JoseMunoz
Active Participant
0 Kudos

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.

3 REPLIES 3

Former Member
0 Kudos

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.

JoseMunoz
Active Participant
0 Kudos

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.

Former Member
0 Kudos

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.