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

select query

Former Member
0 Likes
579

my actual query is

SELECT BWERKS AVBELN B~MATNR

AFKDAT ASPART AVTWEG AERDAT A~ERZET

BVGBEL BAUBEL

A~FKART "Added by Arun pandey 08/05/2007

BNETWR BFKIMG B~MWSBP

FROM VBRK AS A

JOIN VBRP AS B ON AVBELN = BVBELN INTO TABLE IT_INV

WHERE A~FKART IN S_FKART

AND ( ASPART IN S_SPART AND ASPART <> 'ST' )

AND A~FKDAT IN S_FKDAT

AND ( AVTWEG IN S_VTWEG AND AVTWEG <> 'ST' )

AND A~FKSTO <> 'X'

AND A~KUNAG IN S_CUST

AND B~WERKS = S_WERKS.

when i rewrite like below

SELECT VBELN

FKDAT

SPART

VTWEG

ERDAT

ERZET

FKART FROM VBRK INTO TABLE IT_VBRK WHERE

FKART IN S_FKART

AND SPART IN S_SPART AND SPART <> 'ST'

AND FKDAT IN S_FKDAT

AND VTWEG IN S_VTWEG AND VTWEG <> 'ST'

AND FKSTO <> 'X'

AND KUNAG IN S_CUST.

SELECT VBELN MATNR WERKS VGBEL AUBEL NETWR FKIMG MWSBP FROM VBRP INTO

TABLE IT_VBRP FOR ALL ENTRIES IN IT_VBRK WHERE

VBELN = IT_VBRK-VBELN AND

WERKS = S_WERKS.

LOOP AT IT_VBRP INTO WA_VBRP.

READ TABLE IT_VBRK INTO WA_VBRK WITH KEY VBELN = WA_VBRP-VBELN.

IF SY-SUBRC = 0.

IT_INV-WERKS = WA_VBRP-WERKS.

IT_INV-VBELN = WA_VBRK-VBELN.

IT_INV-MATNR = WA_VBRP-MATNR.

IT_INV-FKDAT = WA_VBRK-FKDAT.

IT_INV-SPART = WA_VBRK-SPART.

IT_INV-VTWEG = WA_VBRK-VTWEG.

IT_INV-ERDAT = WA_VBRK-ERDAT.

IT_INV-ERZET = WA_VBRK-ERZET.

IT_INV-VGBEL = WA_VBRP-VGBEL.

IT_INV-AUBEL = WA_VBRP-AUBEL.

IT_INV-FKART = WA_VBRK-FKART.

IT_INV-NETWR = WA_VBRP-NETWR.

IT_INV-FKIMG = WA_VBRP-FKIMG.

IT_INV-MWSBP = WA_VBRP-MWSBP.

APPEND IT_INV.

ENDIF.

ENDLOOP.

it gives me different result.. in actual it suppose to give same.. i m getting less record in VBRP ..table

3 REPLIES 3
Read only

Former Member
0 Likes
544

May we know why you wanted to rewrite while Join is recommended to give more performance?

Regards

Karthik D

Read only

Former Member
0 Likes
544

Hi:

You are right and it would happen, Please try like this

SELECT AVBELN BWERKS B~MATNR

AFKDAT ASPART AVTWEG AERDAT A~ERZET

BVGBEL BAUBEL

A~FKART "Added by Arun pandey 08/05/2007

BNETWR BFKIMG B~MWSBP

FROM VBRK AS A

JOIN VBRP AS B ON AVBELN = BVBELN INTO TABLE IT_INV

WHERE A~FKART IN S_FKART

AND ( ASPART IN S_SPART AND ASPART 'ST' )

AND A~FKDAT IN S_FKDAT

AND ( AVTWEG IN S_VTWEG AND AVTWEG 'ST' )

AND A~FKSTO 'X'

AND A~KUNAG IN S_CUST

AND B~WERKS = S_WERKS.

Another points try to maintain the field sequence as in table which effects its performance.

Regards

Shashi

Read only

Former Member
0 Likes
544

malay gal ,

your join condition contains some mistake.

See the following...


 SELECT   B~WERKS 
         A~VBELN 
         B~MATNR
         A~FKDAT 
         A~SPART
         A~VTWEG 
         A~ERDAT 
         A~ERZET
         B~VGBEL 
         B~AUBEL
         A~FKART "Added by Arun pandey 08/05/2007
         B~NETWR 
         B~FKIMG 
         B~MWSBP
  FROM  ( VBRK AS A
  JOIN   VBRP AS B ON A~VBELN = B~VBELN 
                  and B~WERKS = S_WERKS )    " Here is the mistake..
  INTO  TABLE IT_INV
 WHERE  A~FKART IN S_FKART
   AND  ( A~SPART IN S_SPART AND A~SPART 'ST' )
   AND  A~FKDAT IN S_FKDAT
   AND  ( A~VTWEG IN S_VTWEG AND A~VTWEG 'ST' )
   AND  A~FKSTO 'X'
   AND  A~KUNAG IN S_CUST. 

Regards,

Mahi.