‎2007 Jan 20 6:02 PM
Hi,
I want to write a simple proram for inner join.
tables: are mara, mard.
Select-options: S_MATNR
Data: Define MAT_STR containing MATNR MTART WERKS LGORT LABST
I have written the code in following way...but it is not working.
I am new to this area.
tables: mara.
tables: mard.
data: mat_str type table of mard-mara with header line.
data: p_matnr type c.
data: p_mtart type c.
data: p_werks type c.
data: p_lgort type c.
data: p_labst type c.
select matnr
mtart
werks
lgort
labst
into ( p_matnr, p_mtart, p_werks, p_lgort, p_labst) from mard inner join mara
on mara ~ matnr = mard ~ matnr
end select.
END-OF-SELECTION.
LOOP AT MAT_STR.
WRITE:/ MAT_STR-MATNR, MAT_STR-WERKS, mat_str-mtart, mat_str-lgort, mat_str-labst.
ENDLOOP.
Thanks in advance.
‎2007 Jan 20 6:11 PM
Here is some modified code.
Types: begin of tma,
matnr type mara-matnr,
mtart type mara-mtart,
werks type mard-werks,
lgort type mard-lgort,
labst type mard-labst,
end of tma.
data: ima type table of tma with header line.
select mara~matnr mara~mtart mard~werks mard~lgort mard~labst
into table ima
from mara
inner join mard
on mara~matnr = mard~matnr
up to 10 rows. "<- For testing
LOOP at ima.
WRITE:/ ima-MATNR, ima-WERKS, ima-mtart, ima-lgort, ima-labst.
ENDLOOP.
Regards,
RIch Heilman
‎2007 Jan 20 6:11 PM
Here is some modified code.
Types: begin of tma,
matnr type mara-matnr,
mtart type mara-mtart,
werks type mard-werks,
lgort type mard-lgort,
labst type mard-labst,
end of tma.
data: ima type table of tma with header line.
select mara~matnr mara~mtart mard~werks mard~lgort mard~labst
into table ima
from mara
inner join mard
on mara~matnr = mard~matnr
up to 10 rows. "<- For testing
LOOP at ima.
WRITE:/ ima-MATNR, ima-WERKS, ima-mtart, ima-lgort, ima-labst.
ENDLOOP.
Regards,
RIch Heilman
‎2007 Jan 20 11:23 PM
Hi Rich,
Thanks you so much for your answer.
I have one question. You declare first as "type". Why you write "type" instead of "data"?. And can I take any table name in place of "ima"? Does it indicate any special type of table or any meaning?
Thanks
sulogna
Message was edited by:
sulogna Chatterjee
‎2007 Jan 21 1:13 AM
‎2007 Jan 20 6:35 PM
Hi,
Please try this.
tables: mara,
mard.
select-options: s_matnr for mara-matnr.
data: begin of itab occurs 0,
matnr like mara-matnr,
mtart like mara-mtart,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst.
data: end of itab.
select a~matnr
a~mtart
b~werks
b~lgort
b~labst
into table itab
from mara as a inner join mard as b on a~matnr = b~matnr
where a~matnr in s_matnr.
end-of-selection.
loop at itab.
write: / itab-matnr,
itab-mtart,
itab-werks,
itab-lgort,
itab-labst.
endloop.
Regards,
Ferry Lianto
‎2007 Jan 20 6:37 PM
Use Query,
Select <data you want > into <Internal table>
from Mara as a
inner join
Mard as b
on amatnr = bmatnr.
if sy-subrc = 0.
write: < Data you want to display>.
endif.
‎2007 Jan 20 6:43 PM
Hi sulogna,
Hope this code helps u.
Tables : mara, mard.
Data : begin of itab occurs 0,
matnr like mara-matnr,
mtart like mara-mtart,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
Select-options : s_matnr for mara-matnr.
Start-of-selection.
Select maramatnr maramtart mardwerks mardlgort mardlabst into corresponding fields of table itab from mara inner join mard on maramatnr = mardmatnr where maramatnr in s_matnr.
If sy-subrc ne 0.
Message i001(zmm) with No data exists.
Endif.
Loop at itab.
Write : / itab-matnr, itab-mtart, itab-werks, itab-lgort,
itab-labst.
Endloop.
Regards....
Arun.
‎2007 Jan 20 7:03 PM
tables: mara,
mard.
*declare internal tabel first
data : begin of itab occurs 0,
matnr like mara-matnr,
mtart like mara-mtart,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
*if you want have select-options declare them.
select-options : p_matnr for mara-matnr,
p_werks for mard-werks.
select mara~matnr
mara~mtart
mard~werks
mard~lgort
mard~labst "when u write table u need not to write
"endslect
into table itab
from mara
inner join mard
on maramatnr = mardmatnr.
if sy-subrc = 0.
loop at itab.
write : /1 itab-matnr,
20 itab-mtart,
35 itab-werks,
50 itab-lgort,
80 itab-labst.
endloop.
endif.
try this u will get it. you have to declare your internal table proparly when joining two tables we have to write on condition
‎2007 Jan 20 7:06 PM
tables: mara,
mard.
*declare internal tabel first
data : begin of itab occurs 0,
matnr like mara-matnr,
mtart like mara-mtart,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
*if you want have select-options declare them.
select-options : p_matnr for mara-matnr,
p_werks for mard-werks.
select mara~matnr
mara~mtart
mard~werks
mard~lgort
mard~labst "when u write table u need not to write
"endslect
into table itab
from mara
inner join mard
on maramatnr = mardmatnr
where matnr = p_matnr.
if sy-subrc = 0.
loop at itab.
write : /1 itab-matnr,
20 itab-mtart,
35 itab-werks,
50 itab-lgort,
80 itab-labst.
endloop.
endif.
try this one. you have to declare your itab proparly. while doing join we have to write "ON " CONDITION.