[55876] in SAPr3-news
=?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