Zwei (FOR ALL ENTRIES) in einem Select?

Getting started ... Alles für einen gelungenen Start.
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Hallo...

Ich habe folgendes Problem:
Eine DB-Tabelle mit Spalten A, B und C
Zwei interne Tabellen A und B mit jeweils einem Feld A bzw. B.

Ich möchte gern aus der DB alle Werte der Spalte A lesen, wo der Wert von Spalte A in der internen Tabelle A und der Wert der Spalte B in der internen Spalte B vorkommt.

Code: Alles auswählen.

select A from db_table into table lt_a_new
         for all entries in lt_taba
         where a = lt_taba-a
         for all entries in lt_tabb
         where b = lt_tabb-b.
Ich weiss, dass das nicht geht, mit den zwei "for all entries", aber wie dann?

So habe ich es gelöst bekommen, aber: Wie sieht es mit der Performance aus?

Code: Alles auswählen.

select A from db_table into table lt_a_new
         for all entries in lt_tabb
         where b = lt_tabb-b.
loop at lt_a_new assigning <fs_a_new>.
  read table lt_tab transporting no fields
                    with key a = <fs_a_new>-a.
  if sy-subrc <> 0.
    delete table lt_a_new from <fs_a_new>.
  endif.
endloop.
Hat jemand eine zündende Idee??

Schönen Dank
Tobias
Zuletzt geändert von TobiasL am 12.12.2013 15:15, insgesamt 2-mal geändert.

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


Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
schon einmal versucht aus den beiden internen Tabellen eine interne Tabelle zu machen? z.B. lt_tabz

Code: Alles auswählen.

 select A into table lt_a_new
             for all entries in lt_tabz
             where a = lt_tabz-a
             and  b = lt_tabz-b.
     

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Da die beiden internen Tabellen nichts miteinander zu tun haben (z.B. Personalnummer und Gebäudenummer), kann ich die nicht so ohne weiteres zusammen bringen.
Ich müsste in der internen Tabelle dann für jeden der beispielsweise 5 Einträge in Tabelle A eine Zeile mit jedem der 10 Einträge aus Tabelle B haben => 50 Eintrage...

darum habe ich die Idee verworfen...

Tobias

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Dann frage ich mich allerdings, welche Tabelle Du selektierst, wenn die beiden Felder nichts miteinander zu tun haben.

Ein FROM finde ich in Deinem Beispiel nicht.

Ist das eine "Hausaufgabe"?

Wieso kannst Du die beiden Felder nicht in eine interne Tabelle schieben?
Die Tabelle mit den meisten Eintraegen in das 1. Feld und die der anderen Tabelle einfach in das zweite Feld.

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Sorry, das FROM hab ich "nachgereicht"...

Beispiel:
Ich habe eine Liste von Personalnummern, die einen Brief bekommen (lt_taba)
und ich ab eine Liste vom Gebäuden, die per Hauspost erreichbar sind (lt_tabb)
Jetzt möchte ich aus allen Personalnummern (db_tab) nur die haben, die per Hauspost einen Brief bekommen.
Wenn ich eine kombinierte Tabelle mit folgendem Inhalt erstelle:

Code: Alles auswählen.

PNR   GEBÄUDE
0001  G01
0002  G03
0003  H17
0004
0005
findet der "for all entries" nicht, wenn PNR 0001 in H17 arbeitet...

Tobias

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
OK, ich verstehe das Dilemma.

Wenn Du aber: "Jetzt möchte ich aus allen Personalnummern (db_tab) nur die haben, die per Hauspost einen Brief bekommen."
brauchst Du zu jeder Personalnr. eine Gebaeudenummer.
Also muesste PNR 0001 das Gebaeude H17 haben:

Code: Alles auswählen.

PNR   GEBÄUDE
0001  H17
0002  G03
0003  H17
0004
0005
Bei uns wurde die Hauspost (Mailstop) unter pa0006-locat abgelegt.

Dein "from db_table" ist ziemlich nichtsaussagend.

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Das war ja nur ein Beispiel mit der Hauspost an die Mitarbeiter.
Ich bin an irgendwlechen Prozessen und Rechnungen zu Gange, die DB-Tabelle hat 50 Felder, die ich nicht alle listen wollte.

Es geht hier darum, ob ich irgendwie mehrere "FOR ALL ENTRIES" hinbekomme bzw. wie ich etwas ähnliches fabrizieren kann. Es geht nicht darum, wo in diesem konkreten Beispiel die Felder evtl. liegen könnten.

Tobias

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
TobiasL


Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
ewx, die skalaren Subqueries sind mir völlig neu, aber die werde ich mir mal ansehen.

In meinem Fall helfen sie mir nur nicht, weil die Daten der internen Tabellen geliefert werden, und ich darauf dann kein select machen kann.

Tobias

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von JHM (Top Expert / 1189 / 1 / 195 ) »
TobiasL hat geschrieben:weil die Daten der internen Tabellen geliefert werden, und ich darauf dann kein select machen kann.
Wie kommen die Daten in die itabs? Evtl. kann man hier schon das Einlesen bedingen.

Je nach Datenmenge der itabs könnte man auch Ranges verwenden.
Gruß Hendrik

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
TobiasL hat geschrieben:Das war ja nur ein Beispiel mit der Hauspost an die Mitarbeiter.
Ich bin an irgendwlechen Prozessen und Rechnungen zu Gange, die DB-Tabelle hat 50 Felder, die ich nicht alle listen wollte.

Es geht hier darum, ob ich irgendwie mehrere "FOR ALL ENTRIES" hinbekomme bzw. wie ich etwas ähnliches fabrizieren kann. Es geht nicht darum, wo in diesem konkreten Beispiel die Felder evtl. liegen könnten.

Tobias
Na DAS ist doch mal eine klar Anforderung.

Handelt es sich hier wieder nur um ein Beispiel? Diesmal um ein konkretes Beispiel aber immer noch nur ein Beispiel? Solllte man vielleicht diesmal vorher klaeren.

Mir ist nicht ganz klar, was die 50 Felder der Tabelle mit "For all Entries' zu tun haben. Oder willst Du die alle im "For all entries" unterbringen?

Mit einer konkreten Frage und Anfoderung, koennte man Dir vielliecht eher weiterhelfen.
Mit "irgendwelchen" Prozessen und Rechnungen klingt nicht danach.

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Ich glaube, ich bin hier falsch...

Eine DB-Tabelle, zwei interne Tabellen. Ich möchte aus der DB alle Sätze, die in einem Feld einen Wert der ersten und in einem anderen Feld die Werte der zweiten internen Tabelle haben.
Egal, ob HR, FI, MM, Prozess oder sonstiger Schnickschnack..
Keine zweite DB-Tabelle....

Aber vielleicht sollte ich nicht zu viel erwarten.... :(

Sorry, ich bin von den Antworten hier gerade ziemlich genervt... :?

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von black_adept (Top Expert / 3944 / 105 / 886 ) »
Hallo Tobias,

wandle deine internen Tabellen in Range-Tabellen um. Fertig.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
TobiasL

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Moin black_adapt,

aus jedem Wert der intenen Tabellen mache ich eine Tabellenzeile mit SIGN "I", OPTION "EQ" und LOW "Wert"?
Geht da irgendwann die Performance in den Keller? Wenn ich mehrere hundert Zeilen in jeder Tabelle habe?
Auf jeden Fall ist das einen Versuch wert :up: , schönen Dank für die Idee...

Tobias

Re: Zwei (FOR ALL ENTRIES) in einem Select?

Beitrag von TobiasL (ForumUser / 9 / 2 / 0 ) »
Hallo JHM, Deinen Post hatte ich ja fast übersehen...

die internen Tabellen werden über FuBa's geliefert, da habe ich kaum eine Chance ranzukommen.
Je nach Daten können sie auch vorab noch reduziert werden..

TObias

Vergleichbare Themen

1
Antw.
1821
Views
SELECT mit FOR ALL ENTRIES
von Marduk » 30.09.2005 12:55 • Verfasst in ABAP® Core
1
Antw.
2227
Views
Select mit all entries !!!!!
von Apabtalker » 01.04.2010 12:55 • Verfasst in ABAP® für Anfänger
7
Antw.
5299
Views
select all entries in itab
von spot » 23.11.2004 17:15 • Verfasst in ABAP® für Anfänger
4
Antw.
6907
Views
Select for all entries in itab_suchwerte
von Anfänger » 12.07.2010 23:13 • Verfasst in ABAP® für Anfänger
3
Antw.
2764
Views
Select Abfrage - For all Entries
von Cargo2 » 09.12.2016 10:56 • Verfasst in ABAP® Core

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168