[52358] in SAPr3-news
Re: Optimierung eines select Statements
daemon@ATHENA.MIT.EDU (Falk Gottschalk)
Sat Nov 20 02:02:56 2004
To: sapr3-news@mit.edu
Date: Sat, 20 Nov 2004 08:07:17 +0100
From: "Falk Gottschalk" <falk_news02@ultraperfekt.de>
Message-ID: <cnmq6s$mgl$1@online.de>
Moin!
Danke für das Beispiel - genau so soll ein ABAP NICHT aussehen...
Hier meine Version
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.
Das ist "original" und man kann das notfalls so lassen; ich hätte ein TYPES
und ein "TYPE SORTED TABLE OF" draus gebaut...
>
select
v~kunnr
k~name1
k~name2
k~pstlz
k~ort01
k~stras
v~vkorg
v~vtweg
v~spart
from knvv as v
inner join kna1 as k
on v~kunnr eq k~kunnr
into corresponding fields of table itab
where vkorg in s_vkorg
and vtweg in s_vtweg
and spart in s_spart.
Zum Auswerten dann noch:
DATA : wa like line of itab.
loop at itab into wa.
* egal was
endloop.
das ist aber nur die zweitschnellste Version; performanter geht es mit
field´-symbols;
dafür braucht man aber den Type von ITAB.
etwa so:
types : begin of tt_itab,
kunnr like kna1-kunnr,
name1 like kna1-name1,
* ... paar mehr Felder.
end of tt_itab.
data: itab type sorted table of tt_itab
with unique key kunnr.
field-symbols : <fs_itab> type tt_itab.
select ... into table....
loop at itab assigning <fs_itab>.
write :/ <fs_itab>-kunnr.
endloop.
Insbesondere dann,wenn man innerhalb der itab etwas verändern möchte, sind
die <FS> unschlagbar schnell weil man das MODIFY spart indem man mit dem
Pointer gleich in der Zeile der Tabelle arbeitet.
Have fun!
"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
>
>