[52363] in SAPr3-news

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

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.



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