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

Doubt in Inner Join.

Former Member
0 Likes
769

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.

4 REPLIES 4
Read only

Former Member
0 Likes
696

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.

Read only

Former Member
0 Likes
696

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

Read only

Former Member
0 Likes
696

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.

Read only

Former Member
0 Likes
696

Hi,

Use SPRAS(Language key) in your where condition.

Thanks,

Sriram Ponna.