[52363] in SAPr3-news
Re: Optimierung eines select Statements
daemon@ATHENA.MIT.EDU (ABAP-Entwickler)
Sat Nov 20 09:19:26 2004
To: sapr3-news@mit.edu
Date: Sat, 20 Nov 2004 15:22:34 +0100
From: "ABAP-Entwickler" <nospam_entwickler@versanet.de>
Message-ID: <419f5251$1@olaf.komtel.net>
"Matthias Lambrecht" <forum@zahnarzt-lambrecht.de> schrieb im Newsbeitrag
news:cnktm0$jmj$05$1@news.t-online.com...
> Hallo NGler,
>
> ich habe bei uns im System ein ABAP gefunden und würde hier gern die
> Select-Anweisung und die Aufnahme der gefundenen Daten in die interne
> Tabelle,
> wenn möglich, optimieren. Leider habe ich nur wenig Ahnung von ABAP.
>
> Könntet Ihr mir da bitte weiterhelfen ? Danke im Voraus.
>
> +++++++++++++++++++++++++++++++++++++++++++++
> data: begin of itab,
> kunnr like kna1-kunnr,
> name1 like kna1-name1,
> name2 like kna1-name2,
> pstlz like kna1-pstlz,
> ort01 like kna1-ort01,
> stras like kna1-stras,
> vkorg like knnn-vkorg,
> vtweg like knvv-vtweg,
> spart like knvv-spart,
> end of itab.
>
> *Hier steht weiteres Zeugs im ABAP
>
> select * from knvv where vkorg in s_vkorg
> and vtweg in s_vtweg
> and spart in s_spart.
>
> select * from kna1 where kunnr = knvv-kunnr
> and pstlz in s_pstlz.
>
> itab-kunnr = kna1-kunnr.
> itab-name1 = kna1-name1.
> itab-name2 = kna1-name2.
> itab-pstlz = kna1-pstlz.
> itab-ort01 = kna1-ort01.
> itab-stras = kna1-stras.
> itab-vkorg = knvv-vkorg.
> itab-vtweg = knvv-vtweg.
> itab-spart = knvv-spart.
> append itab.
>
> endselect.
> endselect.
>
> *Hier steht weiteres Zeugs im ABAP
> +++++++++++++++++++++++++++++++++++++++++++++
>
> Grüße
> Matthias
>
Mein Vorschlag:
data: begin of itab occurs 1,
kunnr like kna1-kunnr,
name1 like kna1-name1,
name2 like kna1-name2,
pstlz like kna1-pstlz,
ort01 like kna1-ort01,
stras like kna1-stras,
vkorg like knnn-vkorg,
vtweg like knvv-vtweg,
spart like knvv-spart,
end of itab.
select a~kunnr a~name1 a~name2 a~pstlz a~ort01 a~stras
v~vkorg v~knnn v~vtweg v~spart
from kna1 as a
join knvv as v on v~kunnr = a~kunnr
into table itab
where a~pstlz in s_pstlz.
amd v~vkorg in s_vkorg
and v~vtweg in s_vtweg
and v~spart in s_spart.
Vorteile:
- Es werden nicht mehr Daten von der Datenbank zum Applikationsserver
transferiert als nötig.
- Der Datenbank-Join ist i.d.R. schneller als ein geschachteltes SELECT
- Durch INTO TABLE wird blockweise von der Datenbank gelesen
Vergiss das OCCURS nicht nach der Deklaration der internen Tabelle.
Gruß, Torsten.