2008 Mar 09 6:43 AM
Hi all,
In a report program i have used a inner join. I am getting error in the where condition. Here I have furnished part of my code for ur reference.
Tables : mara, makt, mard.
data : begin of itab occurs 0,
matnr like mara-matnr,
maktx like makt-maktx,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
parameters : matnr like mara-matnr.
start-of-selection.
select maramatnr maktmaktx mardlgort mardlabst into corresponding fields of iab from mara inner join maktx on maramatnr = maktmatnr inner join mard on maktmatnr = mardmatnr where matnr eq matnr.
in the where condition I am getting the following error message.
matnr has two meanings in data dictionary.
Please help me in sort out this problem and also tell me more abt inner joins.
thanks.
Hi all,
In a report program i have used a inner join. I am getting error in the where condition. Here I have furnished part of my code for ur reference.
Tables : mara, makt, mard.
data : begin of itab occurs 0,
matnr like mara-matnr,
maktx like makt-maktx,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
parameters : matnr like mara-matnr.
start-of-selection.
select maramatnr maktmaktx mardlgort mardlabst into corresponding fields of iab from mara inner join maktx on maramatnr = maktmatnr inner join mard on maktmatnr = mardmatnr where matnr eq matnr.
in the where condition I am getting the following error message.
matnr has two meanings in data dictionary.
Please help me in sort out this problem and also tell me more abt inner joins.
thanks.
2008 Mar 09 8:15 AM
HI,
You can achieve this in two ways:
1st:
into corresponding fields of TABLE itab
2nd:
if you have inner join you don't need where any more at all! you already have connections.
if you still need then use:
tablename~fieldname
for both sides!
if in your example matnr from left side is local or global variable then you have problem with some naming conventions which usually are used in SAP.
try 1st points at the beggining
i'd write your select in this style
Code:
select mara~matnr
makt~maktx
mardlgort mardlabst
into corresponding fields of table itab
from ( mara
inner join makt on maktmatnr = maramatnr
and makt~spras = sy-langu )
inner join mard on mardmatnr = maramatnr.
OR
Code:
select mara~matnr
makt~maktx
mardlgort mardlabst
into corresponding fields of table itab
from ( mara
inner join makt on maktmatnr = maramatnr )
inner join mard on mardmatnr = maramatnr
where
makt~spras = sy-langu.
Cheers,
Chandra Sekhar.
2008 Mar 09 4:50 PM
Like this:
TABLES : mara, makt, mard.
DATA: BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
lgort LIKE mard-lgort,
labst LIKE mard-labst,
END OF itab.
PARAMETERS : matnr LIKE mara-matnr.
START-OF-SELECTION.
SELECT mara~matnr makt~maktx mard~lgort mard~labst
INTO CORRESPONDING FIELDS OF itab
FROM mara
INNER JOIN maktx
ON mara~matnr = makt~matnr
INNER JOIN mard
ON makt~matnr = mard~matnr
WHERE mara~matnr EQ matnr. "<====Rob
2008 Mar 09 4:58 PM
hi frd,
ur code is following
"
Tables : mara, makt, mard.
data : begin of itab occurs 0,
matnr like mara-matnr,
maktx like makt-maktx,
lgort like mard-lgort,
labst like mard-labst,
end of itab.
parameters : matnr like mara-matnr.
start-of-selection.
select maramatnr maktmaktx mardlgort mardlabst into corresponding fields of iab from mara inner join maktx on maramatnr = maktmatnr inner join mard on maktmatnr = mardmatnr where matnr eq matnr. "
since u used the alias name mard for both components lgort and labst, system confused to consider alias names, u change the alias names ,a nd try it one again for the corresponding where condition.
and once again check ur itab instead of iab in select statement.
2008 Mar 09 6:14 PM
Hi,
Use SPRAS(Language key) in your where condition.
Thanks,
Sriram Ponna.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |