[55876] in SAPr3-news

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

=?iso-8859-1?q?Interne_Tabelle_-_Werte_in_einem_Select_erg=E4nzen?=

daemon@ATHENA.MIT.EDU (mackrus)
Thu Nov 3 11:36:03 2005

To: sapr3-news@mit.edu
Date: 3 Nov 2005 08:35:54 -0800
From: "mackrus" <mackrus@gmx.net>
Message-ID: <1131035754.650967.217070@g44g2000cwa.googlegroups.com>

Hallo!

Habe folgendes Problem:

Ich habe eine interne Tabelle die schon teilweise mit werten gef=FCllt
ist. Jetzt m=F6chte ich durch ein Select die  Werte in der internen
Tabelle erg=E4nzen.

=DCber einen Loop habe ich es schon hinbekommen.

Der gro=DFe Nachteil dabei ist aber, das ich f=FCr jeden durchlauf der
loop schleife ein Select auf mehrere tabellen machen muss. darunter
leidet die performance nat=FCrlich bei einer h=F6heren anzahl von
Datens=E4tzen in meiner internen Tabelle.

Hier mein bisheriger Code mit dem Loop:

LOOP AT it_ext into wa_ext.

    MOVE-CORRESPONDING wa_ext TO wa_alv.

    SELECT SINGLE MARA~MTART
                  MARA~MEINS
                  MARA~BISMT
                  MARC~KZECH
                  MAKT~MAKTX
                  MCHA~VFDAT
      INTO CORRESPONDING FIELDS OF wa_alv
      FROM MARA
      INNER JOIN MARC
      ON    ( MARC~MATNR EQ MARA~MATNR )
      AND   ( MARC~WERKS EQ wa_ext-WERKS )
      INNER JOIN MAKT
      ON    ( MAKT~MATNR EQ MARA~MATNR )
      INNER JOIN MCHA
      ON    ( MCHA~MATNR EQ MARA~MATNR )
      AND   ( MCHA~CHARG EQ wa_ext-CHARG )
      WHERE ( MARA~MATNR EQ wa_ext-MATNR ).

*       Ampel auf gelb setzten
    wa_alv-AMPEL =3D 2.

*       Zeile in itab einf=FCgen
    INSERT wa_alv INTO TABLE it_alv_tmp.

  ENDLOOP.

Und ich w=FCrde es gerne so machen:

  LOOP AT it_ext INTO wa_ext.

    MOVE-CORRESPONDING wa_ext TO wa_alv.

    wa_alv-AMPEL =3D 2.

    INSERT wa_alv INTO TABLE it_alv_tmp.

  ENDLOOP.


  SELECT MARA~MTART
         MARA~MEINS
         MARA~BISMT
         MARC~KZECH
         MAKT~MAKTX
         MCHA~VFDAT
  INTO CORRESPONDING FIELDS OF TABLE it_alv_tmp
  FROM MARA
  INNER JOIN MARC
     ON    ( MARC~MATNR EQ MARA~MATNR )
     AND   ( MARC~WERKS EQ it_alv_tmp-WERKS )
     INNER JOIN MAKT
     ON    ( MAKT~MATNR EQ MARA~MATNR )
     INNER JOIN MCHA
     ON    ( MCHA~MATNR EQ MARA~MATNR )
     AND   ( MCHA~CHARG EQ it_alv_tmp-CHARG )
     WHERE ( MARA~MATNR EQ it_alv_tmp-MATNR ).



.=2E.so das ich nur ein Select auf die DB machen muss.


Danke im vorraus!!

Gru=DF

Mackrus


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