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
1,200

Hi,

In my program i am using the following select query :

  • Read sales order header data

select vbak~vbeln

vbap~posnr

vbak~kokrs

vbak~vkorg

vbak~vtweg

vbak~vkbur

vbak~ernam

vbak~erdat

vbak~vbtyp

vbak~auart

vbap~pstyv

vbup~gbsta

vbak~augru

vbak~audat

vbak~vdatu

vbak~kunnr

vbak~kvgr4

vbpa_ag~land1

vbpa_ag~adrnr

vbpa_we_1~kunnr

vbpa_we_1~land1

vbpa_we_1~adrnr

vbpa_we_2~kunnr

vbpa_we_2~land1

vbpa_we_2~adrnr

vbpa_re_1~kunnr

vbpa_re_1~land1

vbpa_re_1~adrnr

vbpa_re_2~kunnr

vbpa_re_2~land1

vbpa_re_2~adrnr

vbpa_rg_1~kunnr

vbpa_rg_1~land1

vbpa_rg_1~adrnr

vbpa_rg_2~kunnr

vbpa_rg_2~land1

vbpa_rg_2~adrnr

vbap~matnr

vbap~kdmat

vbap~werks

marc~dispo

mbew~bklas

vbap~prctr

vbap~spart

vbak~xblnr

vbak~zzbrsch

tvap~prsfd

tvap~evrwr

vbap~lfrel

tvap~eterl

vbap~fkrel

vbap~abgru

vbkd_1~bstkd

vbkd_2~bstkd

vbkd_1~bstdk

vbkd_2~bstdk

vbkd_1~fkdat

vbkd_2~fkdat

vbkd_1~ktgrd

vbkd_2~ktgrd

vbkd_1~kursk

vbkd_2~kursk

vbkd_1~kdgrp

vbkd_2~kdgrp

vbap~kwmeng

vbap~zmeng

vbap~netwr

vbap~wavwr

vbap~kpein

vbap~vrkme

vbap~meins

vbak~waerk

t001~waers

tvkbt~bezei

tvakt~bezei

tvapt~vtext

tvaut~bezei

tvagt~bezei

makt~maktx

t001w~name1

t024d~dsnam

into table ct_order

from vbap

join vbak

on vbakvbeln eq vbapvbeln

join vbup

on vbupvbeln eq vbapvbeln and

vbupposnr eq vbapposnr

join tvap on tvappstyv eq vbappstyv

left outer join mbew

on mbewmatnr eq vbapmatnr and

mbewbwkey eq vbapwerks

join marc on marcmatnr eq vbapmatnr and

marcwerks eq vbapwerks

join t001 on t001bukrs eq vbakbukrs_vf

left outer join vbpa as vbpa_ag

on vbpa_agvbeln eq vbapvbeln and

vbpa_ag~posnr eq c_posnr_init and

vbpa_ag~parvw eq c_parvw_ag

left outer join vbpa as vbpa_we_1

on vbpa_we_1vbeln eq vbapvbeln and

vbpa_we_1posnr eq vbapposnr and

vbpa_we_1~parvw eq c_parvw_we

left outer join vbpa as vbpa_we_2

on vbpa_we_2vbeln eq vbapvbeln and

vbpa_we_2~posnr eq c_posnr_init and

vbpa_we_2~parvw eq c_parvw_we

left outer join vbpa as vbpa_re_1

on vbpa_re_1vbeln eq vbapvbeln and

vbpa_re_1posnr eq vbapposnr and

vbpa_re_1~parvw eq c_parvw_re

left outer join vbpa as vbpa_re_2

on vbpa_re_2vbeln eq vbapvbeln and

vbpa_re_2~posnr eq c_posnr_init and

vbpa_re_2~parvw eq c_parvw_re

left outer join vbpa as vbpa_rg_1

on vbpa_rg_1vbeln eq vbapvbeln and

vbpa_rg_1posnr eq vbapposnr and

vbpa_rg_1~parvw eq c_parvw_rg

left outer join vbpa as vbpa_rg_2

on vbpa_rg_2vbeln eq vbapvbeln and

vbpa_rg_2~posnr eq c_posnr_init and

vbpa_rg_2~parvw eq c_parvw_rg

left outer join vbkd as vbkd_1

on vbkd_1vbeln eq vbapvbeln and

vbkd_1posnr eq vbapposnr

left outer join vbkd as vbkd_2

on vbkd_2vbeln eq vbapvbeln and

vbkd_2~posnr eq c_posnr_init

left outer join makt

on makt~spras eq syst-langu and

maktmatnr eq vbapmatnr

left outer join tvkbt

on tvkbt~spras eq syst-langu and

tvkbtvkbur eq vbakvkbur

left outer join tvakt

on tvakt~spras eq syst-langu and

tvaktauart eq vbakauart

left outer join tvapt

on tvapt~spras eq syst-langu and

tvaptpstyv eq vbappstyv

left outer join tvaut

on tvaut~spras eq syst-langu and

tvautaugru eq vbakaugru

left outer join tvagt

on tvagt~spras eq syst-langu and

tvagtabgru eq vbapabgru

left outer join t001w

on t001wwerks eq vbapwerks

left outer join t024d

on t024dwerks eq marcwerks and

t024ddispo eq marcdispo

where vbak~zzbrsch in st_brsch and

vbak~kunnr in st_kunag and

vbak~vbeln in st_vbeln and

vbak~vkorg in st_vkorg and

vbak~vtweg in st_vtweg and

vbap~spart in st_spart and

vbak~vkbur in st_vkbur and

vbap~werks in st_werks and

marc~dispo in st_dispo and

vbak~vbtyp in st_vbtyp and

vbap~pstyv in st_pstyv and

vbup~gbsta in st_gbsta and

vbak~auart in st_auart and

vbak~augru in st_augru and

vbak~audat in st_audat and

vbak~vdatu in st_vdatu and

vbak~ernam in st_ernam and

vbak~erdat in st_erdat and

vbap~abgru in st_abgru and

vbap~matnr in st_matnr and

vbap~prctr in st_prctr and

vbak~trvog eq c_trvog_0.

By using this query, I am getting correct output.

But because of so many JOIN conditions performance wise it is too bad.So I want to split it into different queries.

Can I replace Left outer join by For all Entries?

How can I split it? Please help me...Its very urgent

Edited by: Tintu Rose on May 24, 2008 8:31 AM

7 REPLIES 7
Read only

Former Member
0 Likes
865

hi, first get the values from vbak into a table with structure

begin of int_vbak occurs 0,

vbeln

posnr

okrs

vkorg

vtweg

vkbur

ernam

erdat

vbtyp

auart

end of int_vbak

and then for all entries in int_vbak get the values from VBAP in where cause vbeln = int_vbak-vbeln into int_VBAP......

so on so forth......... for all table

reward points if useful......

Read only

Former Member
0 Likes
865

Hi Tinu,

According to SAP performance recomendation you should not join more then 3 tables at a time ie, max of two join statments should be used.

You can Use FOR ALL ENTRIES instead of writing such join statments.

Should you have any issues in using For all entries get back to us.

Regards

Bikas

Read only

0 Likes
865

Hi Bikas,

Can I replace Left outer join with for all entries ?

Regards,

Tintu

Read only

0 Likes
865

yes u can do .......

Read only

0 Likes
865

How is it possible? Can you explain this with an example?

Read only

0 Likes
865

VBAK is the header table so first retrieve values from it and for all SO whose values u got from VBAK ,get other info for those SOs its logical and i sure it will give u same results

but for this u need to up lots of checks

like the sy-subrc after each select query to make sure the result is right

coz ur next select query shd only execute when ur 1st select query in successful with soem values in the internal table , otherwise the 2nd select query will give u wrong results .....

Read only

0 Likes
865

Can u give me a simple example for replacing LEFT OUTER JOIN with FOR ALL ENTRIES ?