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

INNER JOIN

Former Member
0 Likes
1,103

HI Frds

I have inner join three tables MARA, MARD, MKPF .In DEV its working correctly ,while going for bulk datas it will work correct.?

Pls check my select statement and give me some tips.

-


SELECT MSEGMBLNR MSEGMJAHR MSEGMATNR MSEGWERKS MSEG~BUKRS

MSEGLGORT MSEGLIFNR MSEGMENGE MSEGMEINS MSEG~EBELN

MSEGEBELP MSEGINSMK

MARDMATNR MARDINSME

MKPFMBLNR MKPFMJAHR MKPF~BUDAT

INTO TABLE IMSEG_MARD FROM MSEG

INNER JOIN MARD ON MARDMATNR = MSEGMATNR

INNER JOIN MKPF ON MKPFMBLNR = MSEGMBLNR

WHERE MSEG~WERKS IN PLANT AND

MSEG~BUKRS IN COMPANY AND

MSEG~LIFNR IN VENDOR AND

BUDAT IN GR_DATE AND

MSEG~INSMK EQ 'X' AND

MARD~INSME <> '0.000'.

CLEAR : IMSEG_MARD.

-


thanks

Pari

7 REPLIES 7
Read only

Former Member
0 Likes
941

hi,

it will work fine even though you have bunch of data in DEV/Quality/Prod.

if you have more than 3 tables then its better to use for all entries with respect to performance point of view.

Chandra

Read only

ak_upadhyay
Contributor
0 Likes
941

Hi,

It will work.

Regards

AK

Read only

Former Member
0 Likes
941

hi,

do

SELECT MSEGMBLNR MSEGMJAHR MSEGMATNR MSEGWERKS MSEG~BUKRS

MSEGLGORT MSEGLIFNR MSEGMENGE MSEGMEINS MSEG~EBELN

MSEGEBELP MSEGINSMK

MARDMATNR MARDINSME

MKPFMBLNR MKPFMJAHR MKPF~BUDAT

INTO TABLE IMSEG_MARD FROM MSEG

INNER JOIN MARD ON MSEGMATNR = MARDMATNR

INNER JOIN MKPF ON MSEGMBLNR = MKPFMBLNR

WHERE MSEG~WERKS IN PLANT AND

MSEG~BUKRS IN COMPANY AND

MSEG~LIFNR IN VENDOR AND

BUDAT IN GR_DATE AND

MSEG~INSMK EQ 'X' AND

MARD~INSME EQ '0.000'.

CLEAR : IMSEG_MARD .

Read only

Former Member
0 Likes
941

HI,

Do avoid Inner Join.please use For all Entries.

Regards,

S.Nehru.

Read only

abapdeveloper20
Contributor
0 Likes
941

Hi,

1.Inorder to improve the performance of your query , make sure that the order of fields in the "WHERE" should follow the order of fields in the DDIC TABLES

2. use SQL trace to point out the performance of your query while executing with data.

reward if helpful.

~Lakshmiraj~

Read only

Former Member
0 Likes
941

Hi RAJA

You havent mwentioned INTO CORRESPONDIN FIELDS OF

and no BRACKETS MENTIONED which i've made BOLD..

SELECT MSEGMBLNR MSEGMJAHR MSEGMATNR MSEGWERKS MSEG~BUKRS

MSEGLGORT MSEGLIFNR MSEGMENGE MSEGMEINS MSEG~EBELN

MSEGEBELP MSEGINSMK

MARDMATNR MARDINSME

MKPFMBLNR MKPFMJAHR MKPF~BUDAT

INTO CORRESPONDING FIELDS OF TABLE IMSEG_MARD FROM ((MSEG

INNER JOIN MARD ON MARDMATNR = MSEGMATNR)

INNER JOIN MKPF ON MKPFMBLNR = MSEGMBLNR)

WHERE MSEG~WERKS IN PLANT AND

MSEG~BUKRS IN COMPANY AND

MSEG~LIFNR IN VENDOR AND

BUDAT IN GR_DATE AND

MSEG~INSMK EQ 'X' AND

MARD~INSME '0.000'.

CLEAR : IMSEG_MARD.

Regards

Lakshman

Read only

dhruv_shah3
Active Contributor
0 Likes
941

Hi,

If you use it like below then it will be more efficient.

SELECT MBLNR MJAHR MATNR WERKS BUKRS

LGORT LIFNR MENGE MEINS EBELN

EBELP INSMK

FROM MSEG INTO CORRESPONDING FIELDS OF TABLE IT_MSEG.

IF IT_MSEG IS NOT INITIAL.

SELECT

MATNR INSME

FROM MARD

INTO CORRESPONDING FIELDS OF TABLE IT_MARD

FOR ALL ENTRIES IN IT_MSEG

WHERE MATNR = IT_MSEG-MATNR.

ENDIF.

IF IT_MSEG_MARD IS NOT INITIAL.

SELECT

MBLNR MJAHR BUDAT

FROM MKPF

INTO CORRESPONDING FIELDS OF TABLE

FOR ALL ENTRIES IN IT_MSEG_MARD

WHERE MBLNR = IT_MSEG_MARD-MBLNR.

AND MATNR = IT_MSEG_MARD-MATNR.

AND

MSEG-WERKS IN PLANT AND

MSEG-BUKRS IN COMPANY AND

MSEG-LIFNR IN VENDOR AND

BUDAT IN GR_DATE AND

MSEG-INSMK EQ 'X' AND

MARD-INSME EQ '0.000'.

ENDIF.

CLEAR : ITMSEG_MARD.

HTH

Regards,

Dhruv Shah