[52358] in SAPr3-news

home help back first fref pref prev next nref lref last post

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
>
>



home help back first fref pref prev next nref lref last post