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

CORRECT THIS CODE

former_member70391
Contributor
0 Likes
1,571

tables: mara, marc, makt.

TYPES: BEGIN OF TS_MARA,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

MAKTX LIKE MAKT-MAKTX,

END OF TS_MARA.

DATA: LT_MARA TYPE TABLE OF TS_MARA,

LS_MARA LIKE LINE OF LT_MARA.

RANGES: R_MATNR FOR MARA-MANTR.

R_MATNR-LOW = '00000000000060000001'.

R_MATNR-HIGH = '00000000000060000011'.

R_MATNR-OPTION = 'BT'.

R_MATNR-SIGN = 'I'.

APPEND R_MATNR.

SELECT AMATNR BWERKS INTO CORRESPONDING FIELDS OF LT_MARA

FROM MARA AS A INNER JOIN MARC AS B

ON AMATNR = BMATNR

WHERE A~MATNR IN R_MATNR

AND B~WERKS EQ '0001'.

nOW MY REQUIREMENT IS TO POPULATE LT_MARA WITH MATERIAL DESCRIPTION WITH FOR ALL ENTRIES IN LT_MARA.

mY fINAL RESULT SHOULD BE,

LT_MARA SHOULD CONTAIN,

MATNR WERKS MAKTX

1 ACCEPTED SOLUTION
Read only

asik_shameem
Active Contributor
0 Likes
1,454

Hi

Do in this way.

TYPES: BEGIN OF TS_MAKT,
       MATNR TYPE MATNR,
       MAKTX TYPE MAKTX,
       END OF TS_MAKT.
	   
DATA: LT_MAKT TYPE TABLE OF TS_MAKT,
      LS_MAKT TYPE TS_MAKT.	   

SELECT MATNR MAKTX FROM MAKT INTO TABLE LT_MAKT FOR ALL ENTRIES IN LT_MARA WHERE MATNR EQ LT_MARA-MATNR SPRAS EQ 'EN'.

LOOP AT LT_MARA INTO LS_MARA.
  READ TABLE LT_MAKT INTO LS_MAKT WITH KEY MATNR = LS_MARA-MATNR.
  IF SY-SUBRC EQ 0.
    LS-MARA-MAKTX = LS_MAKT-MAKTX.
    MODIFY LT_MARA FROM LS_MARA TRANSPORTING MAKTX.
  ENDIF.
ENDLOOP.

12 REPLIES 12
Read only

former_member156446
Active Contributor
0 Likes
1,454

wrong title to the post... you should have posted write code for me

[click here for the table of Material Management.|http://sap.niraj.tripod.com/id42.html]

Read only

0 Likes
1,454

Hi Jayam,

My question is after populating lt_mara with matnr and werks how to modify the content of lt_mara with matnr werks and maktx using for all entries in lt_mara.

For example: I have popultaed the matnr and werks in lt_mara from inner join. Now i want to use select maktx from makt into lt_mara-maktx for all entries in lt_mara where matnr eq lt_mara-matnr.

if I use this code it doesnot work becoz it does not contain work area.

If i replace lt_mara-maktx to ls_mara-maktx in the above code then it wont work.

Using only these tables I need to populate lt_mara with matnr, werks and maktx.

Thanks & Regards,

Nagaraj Kalbavi

Read only

Former Member
0 Likes
1,454

Hi,

tables: mara, marc, makt.

TYPES: BEGIN OF TS_MARA,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

MAKTX LIKE MAKT-MAKTX,

END OF TS_MARA.

DATA: LT_MARA TYPE TABLE OF TS_MARA,

LS_MARA LIKE LINE OF LT_MARA.

RANGES: R_MATNR FOR MARA-MANTR.

R_MATNR-LOW = '00000000000060000001'.

R_MATNR-HIGH = '00000000000060000011'.

R_MATNR-OPTION = 'BT'.

R_MATNR-SIGN = 'I'.

APPEND R_MATNR.

SELECT AMATNR BWERKS INTO CORRESPONDING FIELDS OF TABLE LT_MARA

FROM MARA AS A INNER JOIN MARC AS B

ON AMATNR = BMATNR

WHERE A~MATNR IN R_MATNR

AND B~WERKS EQ '0001'.

LOOP AT LT_MARA.

SELECT SINGLE MAKTX FROM MAKT INTO MAKT-MAKTX WHERE MATNR EQ LT_MARA-MATNR.

IF SY-SUBRC EQ 0.

MOVE MAKT-MAKTX TO LT_MARA-MAKTX.

MODIFY LT_MARA.

ENDIF.

CLEAR : MAKT,LT_MARA.

ENDLOOP.

Edited by: prabhu p on Jul 15, 2008 6:51 AM

Read only

0 Likes
1,454

Hi Prabhu,

If I use loop at LT-mara then performance will be bad, i need to use FOR ALL ENTRIES

Thanks & Regards,

Nagaraj Kalbavi

Read only

Former Member
0 Likes
1,454

hi,

you want to have maktx also into the same table rt....

tables: mara, marc, makt.

TYPES: BEGIN OF TS_MARA,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

MAKTX LIKE MAKT-MAKTX,

END OF TS_MARA.

DATA: LT_MARA TYPE TABLE OF TS_MARA,

LS_MARA LIKE LINE OF LT_MARA.

RANGES: R_MATNR FOR MARA-MANTR.

R_MATNR-LOW = '00000000000060000001'.

R_MATNR-HIGH = '00000000000060000011'.

R_MATNR-OPTION = 'BT'.

R_MATNR-SIGN = 'I'.

APPEND R_MATNR.

SELECT A~MATNR

B~WERKS

C~MAKTX

NTO CORRESPONDING FIELDS OF LT_MARA

FROM MARA AS A INNER JOIN MARC AS B

ON AMATNR = BMATNR

inner join maktx as c

on amatnr = cmatnr

WHERE A~MATNR IN R_MATNR

and c~spras = 'EN'.

AND B~WERKS EQ '0001'.

REWARD POINTS IF USEFUL...

Read only

0 Likes
1,454

Hi Shailaja Ainala ,

I do not want to use 3 tables in one select query.

I select matnr werks using inner join to lt_mara.

Now I need to use FOR ALL ENTRIES in LT_mara to get data from makt and populate lt_mara with matnr werks and maktx.

Read only

0 Likes
1,454

Hi,

have a look

TYPES: BEGIN OF TS_MARA,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MAKT-MAKTX,

plants LIKE MARC-WERKS,

END OF TS_MARA,

tt_mara type standard table of ts_mara.

DATA: lw_mara type ts_mara,

lt_mara type tt_mara.

select-options : s_MATNR FOR MARA-MANTR.

s_MATNR-LOW = '00000000000060000001'.

s_MATNR-HIGH = '00000000000060000011'.

s_MATNR-OPTION = 'BT'.

s_MATNR-SIGN = 'I'.

APPEND s_MATNR.

select amatnr bmaktx into table lt_mara

from mara as a inner join makt

ON amatnr = bmatnr

where matnr in s_matnr.

if sy-subrc = 0.

sort lt_mara by matnr.

endif.

if not lt_mara[] is initial.

select werks into table i_marc from marc

for all entries in lt_mara

where matnr = lt_mara-matnr.

endif.

loop at lt_mara into lw_mara.

read table i_marc with key matnr = lw_mara-matnr.

lw_mara-plants = i_marc-werks.

modify lt_mara from lw_mara transporting plants.

endloop.

loop at lt_mara into lw_mara.

write:/ lw_mara-matnr,

lw_mara-plants,

lw_mara-werks.

endloop.

Read only

Former Member
0 Likes
1,454

Hi Nagaraju,

I didnu2019t understand why your writing join to get the matnr and werks, Because both fields are there in MARC.

I hope this snippet will do:


SELECT A~MATNR 
A~MAKTX 
B~WERKS FROM MARA AS A INNER JOIN MARC AS B
ON A~MATNR = B~MATNR
INTO CORRESPONDING FIELDS OF LT_MARA 
WHERE A~MATNR IN R_MATNR
AND C~SPRAS = 'EN'.
AND B~WERKS EQ '0001'.  

Rgds,

Raghu

Read only

Former Member
0 Likes
1,454

Hi Nagaraj,

try it like this:

tables: mara, marc, makt.

TYPES: BEGIN OF TS_MARA,
MATNR LIKE MARA-MATNR,
WERKS LIKE MARC-WERKS,
MAKTX LIKE MAKT-MAKTX,
END OF TS_MARA.

DATA: LT_MARA TYPE TABLE OF TS_MARA,
LS_MARA LIKE LINE OF LT_MARA.

RANGES: R_MATNR FOR MARA-MATNR.

R_MATNR-LOW = '00000000000060000001'.
R_MATNR-HIGH = '00000000000060000011'.
R_MATNR-OPTION = 'BT'.
R_MATNR-SIGN = 'I'.
APPEND R_MATNR.

SELECT A~MATNR B~WERKS c~MAKTX INTO table LT_MARA
FROM MARA AS A INNER JOIN MARC AS B
ON A~MATNR EQ B~MATNR INNER join MAKT AS C
ON B~MATNR EQ C~MATNR
WHERE A~MATNR IN R_MATNR
AND B~WERKS EQ '0001'.

With luck,

Pritam.

Read only

Former Member
0 Likes
1,454

Hi Nagaraj,

Check the value of matnr you are passing to ranges.... the size of matnr is 18 and you are passing 20

regards

padma

Read only

Former Member
0 Likes
1,454

sort Lt_MARA .

select matnr maktx

from makt

into table i_maktx

for all entries in lt_mara

where matnr eq lt_mara-matnr

and spars eq sy-langu.

if sy-subrc eq 0.

sort lt_maktx by matnr.

loop at lt_mara into ls_mara.

read table lt_maktx with key matnr = lt_mara-manr

binary seach.

if sy-subrc eq 0.

ls_mara-maktx = ls_maktx-maktx.

modify lt_mara from ls_mara transporting maktx.

endif.

endloop.

endif.

Read only

asik_shameem
Active Contributor
0 Likes
1,455

Hi

Do in this way.

TYPES: BEGIN OF TS_MAKT,
       MATNR TYPE MATNR,
       MAKTX TYPE MAKTX,
       END OF TS_MAKT.
	   
DATA: LT_MAKT TYPE TABLE OF TS_MAKT,
      LS_MAKT TYPE TS_MAKT.	   

SELECT MATNR MAKTX FROM MAKT INTO TABLE LT_MAKT FOR ALL ENTRIES IN LT_MARA WHERE MATNR EQ LT_MARA-MATNR SPRAS EQ 'EN'.

LOOP AT LT_MARA INTO LS_MARA.
  READ TABLE LT_MAKT INTO LS_MAKT WITH KEY MATNR = LS_MARA-MATNR.
  IF SY-SUBRC EQ 0.
    LS-MARA-MAKTX = LS_MAKT-MAKTX.
    MODIFY LT_MARA FROM LS_MARA TRANSPORTING MAKTX.
  ENDIF.
ENDLOOP.