Interne Tabelle + Zusatzinformationen selektieren

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo zusammen,

ich habe ein Performanceproblem bei der Selektion von Daten und zwar folgendes....

Vorgehen:

-> Ich lese Daten aus der DB-Tabelle "VTTK" mit den angegebenen Parametern aus der Selektion. Nun enthält die Itab "IT_VTTK" x Tabelleneinträge. Soweit so gut.
-> Im nächsten Schritt soll für jede Zeile aus der "IT_VTTK" Zusatzinformationen aus drei weiteren DB-Tabellen gelesen werden.

Problem:

-> Aktuell mache ich einen "LOOP" über die "IT_VTTK" und lese für jede Zeile die entsprechenden Zusatzinformation aus den 3 DB-Tabellen
Was mir aktuell nicht gefällt, dass ich so viele DB-Zugriffe habe.
-> Hinzufügen sollte ich vielleicht noch, dass zwischen den Daten aus der "IT_VTTK" und der ersten DB-Tabelle die ich lese, keine Verbindung besteht.
Erst nach dem ich die dritte DB-Tabelle gelesen habe, kann ich einen check gehen die Daten aus "IT_VTTK" machen.

Ich hoffe ich konnte mein Problem einigermaßen verständlich erklären.... Gibt es eine Möglichkeit die DB-Zugriffe zu reduzieren und damit perfomanter zu sein? Da ich aktuell extreme Performanceprobleme habe...

Vielen Dank im Voraus für die Hilfe.

Viele Grüße

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Johnny11 hat geschrieben:Ich hoffe ich konnte mein Problem einigermaßen verständlich erklären.... Gibt es eine Möglichkeit die DB-Zugriffe zu reduzieren und damit perfomanter zu sein? Da ich aktuell extreme Performanceprobleme habe...
Schau mal in der Hilfe für FOR ALL ENTRIES in WHERE Bedingung. Ließ aber bitte die Hinweise dazu genau, da gibt es einige Besonderheiten. Das könnte die Anzahl der DB-Zugriffe reduzieren.

Evtl. könnte auch ein JOIN oder geschickter SubSelect deine Anforderung lösen, dafür musst du aber ein wenig mehr deiner Anforderung preisgeben.
Gruß Hendrik

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

je nachdem ob und wie gut du die Schlüssel der anderen DB-Tabellen kennst, könntest du auch noch vorselektieren und dann nur noch über interne Tabellen zuordnen, dann hast du nur 4 DB-Zugriffe und der Rest läuft intern ab. Aber wie gesagt, das geht nur, wenn du die Schlüssel kennst und nicht einfach deine komplette DB-Tabelle selektierst.
Gruß,
der Matze

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo zusammen,

vielen Dank für Eure Rückmeldung.

In Kurzform der Ablauf der beschriebenen Selektion:

Loop at "IT_VTTK" into...

>> Als nächstes wird die "NAST" gelesen - Besonderheit der Selektion ist, dass innerhalb eines Zeitbereichs gesucht wird, also "ERUHR aus IT_VTTK + 60 Min" über eine Range-Tabelle

>> Mit den Treffern aus der "NAST" geht es dann in die Tabelle "CMFP"

>> Mit den Treffern aus der "CMFP" geht es dann in die Tabelle "EDID4" - hier wird der Check gegen die Werte aus der "IT_VTTK" vorgenommen.

Endloop.

Eine Selektion auf die "NAST" mit FOR ALL ENTRIES würde zwar funktionieren, aber dann könnte ich die Daten nicht mehr eindeutig zu ordnen.

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Deinen Beschreibungen nach würde ich einen Select über die NAST mit einem JOIN auf die CMFP über schlüssel nast~cmfp und einem JOIN auf die edid4 über Schlüssel cmfp~edid4 machen. Dann entfallen vielleicht sogar ein paar Check-Routinen.
Gruß,
der Matze

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Johnny11 hat geschrieben:In Kurzform der Ablauf der beschriebenen Selektion:
Du willst also das Idoc zu einem Transport auslesen?

Schon mal versucht über die Objektverknüpfungen zu lesen? (vgl. GOS - Verknüpfungen).
Hier: http://www.dv-treff.de/yaf_postsm19848_ ... #post19848 eine Beschreibung für Faktura.
Sollte aber für Transporte genauso funktionieren (OBJKEY = Transportnummer, OBJTYPE = VTTK), vorausgesetzt die Objektverknüpfung wird geschrieben/ist aktiviert.
Das kann man auch schick per JOIN hinbekommen und man spart sich das Parsen des Nachrichtenprotokolls nach der IDoc-Nr. Nur die Zeitprüfung muss man dann noch per Loop im Nachgang lösen.
Gruß Hendrik

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
Hallo,

ja genau. Nur lese ich ja mit einer Zeitspanne, um zu prüfen, ob der Transport in den IDocs vorkommt oder nicht.
Je nach dem, ob der Transport vorhanden ist oder nicht, sammel ich die Transporte, für weitere Aktionen.

Aktuell, ist mir nicht ganz klar, was das mit der GOS-Verknüpfung zu tun hat?

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Johnny11 hat geschrieben:ja genau. Nur lese ich ja mit einer Zeitspanne, um zu prüfen, ob der Transport in den IDocs vorkommt oder nicht.
Aktuell, ist mir nicht ganz klar, was das mit der GOS-Verknüpfung zu tun hat?
SAP verknüpft die meisten IDocs mit dem Anwendungsobjekt (hier Transport). Das hat den Vorteil, dass man im IDoc bzw. im Anwendungsobjekt über den Punkt Verknüpfung im GOS-Menü alle Paare von Idoc/Anwendungsobjekt bekommt. Es erscheint ein PopUp, der alle Verknüpfungen anzeigt und per Doppelklicknavigation anbietet.

Der gepostete Link zeigt, wie man diese Verknüpfungen ausliest. Die Zeitprüfung könnte auch gegen die Erstellungszeit des IDocs gehen (da sollten zwischen NAST-Verarbeitungszeitpunk und EDIDC-Erstellungszeitpunkt nur Sekunden zwischen liegen).

Ich würde:

VTTK nach SelScreen lesen
LOOP über it_vttk um das Feld BIS_Zeit zu füllen
SELECT mittels Join incl. FOR ALL ENTRIES it_vttk um die Idocs zu den Transporten zu lesen, das Ergebnis kann dann für weitere Aktionen verwendet werden.
Gruß Hendrik

Re: Interne Tabelle + Zusatzinformationen selektieren

Beitrag von Johnny11 (ForumUser / 32 / 1 / 0 ) »
JHM hat geschrieben:[SELECT mittels Join incl. FOR ALL ENTRIES it_vttk um die Idocs zu den Transporten zu lesen, das Ergebnis kann dann für weitere Aktionen verwendet werden.
Meinst Du damit, das beschriebene Vorgehen aus Deinem Link?

Seite 1 von 1

Vergleichbare Themen

14
Antw.
3446
Views
Interne Tabelle selektieren
von flo1304 » 14.03.2019 09:04 • Verfasst in ABAP® für Anfänger
4
Antw.
239
Views
2
Antw.
2371
Views
Einträge aus DB-Tabelle paketweise selektieren
von euro2008 » 28.08.2008 17:00 • Verfasst in ABAP® für Anfänger
5
Antw.
1274
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
1
Antw.
1747
Views
alle Währungen selektieren mit Range-Tabelle
von Bright4.5 » 24.06.2020 09:23 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.