‎2008 Jul 15 5:45 AM
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
‎2008 Jul 15 6:15 AM
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.
‎2008 Jul 15 5:48 AM
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]
‎2008 Jul 15 5:52 AM
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
‎2008 Jul 15 5:50 AM
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
‎2008 Jul 15 5:58 AM
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
‎2008 Jul 15 5:51 AM
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...
‎2008 Jul 15 5:56 AM
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.
‎2008 Jul 15 5:59 AM
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.
‎2008 Jul 15 6:00 AM
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
‎2008 Jul 15 6:01 AM
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.
‎2008 Jul 15 6:03 AM
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
‎2008 Jul 15 6:14 AM
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.
‎2008 Jul 15 6:15 AM
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.