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.
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 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.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |