Interne Tabellen: Feldinhalte vergleichen

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

Interne Tabellen: Feldinhalte vergleichen

Beitrag von Mario Reum (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

gegeben seien zwei interne Tabellen:

lt_tabelle1 mit Spalte fgst (CHAR18).
lt_tabelle2 mit Spalte wmi (CHAR3).

Gerne möchte ich die neuen Konstrukte im ABAP nutzen um alle Einträge der lt_tabelle1 where fgst(3) = lt_tabelle2-wmi zu finden.

DATA(lt_filter) = FILTER #( lt_tabelle1 IN lt_tabelle2 where fgst(3) = wmi ).

Ist dies ohne Loop at lt_tabelle1 möglich? Vielleicht effizient mit einem CDS?

Vielen Dank im Voraus für Eure Tips!
Mario

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


Re: Interne Tabellen: Feldinhalte vergleichen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Im Prinzip hast Du die Antwort mit deinem filter-Konstrukt ja schon selber gegeben. Was mir an dem filter-Befehl unsympathisch ist (und weswegen ich ihn fast nie verwende), ist die Tatsache, dass er als Zieldatentyp denselben Datentyp verlangt wie die Quelltabelle. Im Prinzip erzeugt man damit also eine Kopie von (möglicherweise großen) Teilen der Quelltabelle. Es fällt mir schwer, das für effizient zu halten, wenn es nur darum geht, bestimmte Zeilen in der Tabelle zu finden.

Am Ende ist aber die Frage, was Du mit Deinen Fundergebnissen im weiteren Verlauf machen möchtest, denn daraus ergibt sich, in welcher Form Du sie brauchst. Eine weitere Möglichkeit, Dein Problem zu lösen, wäre z.B.

Code: Alles auswählen.

TYPES type_table_of_char18 type standard table of CHAR18 with empty key.
DATA(lt_gesuchte_fgsts) = VALUE type_table_of_char18( FOR <zeile> IN lt_tabelle2 where fgst(3) = wmi ( <zeile>-fgst ) ).
Damit hättest Du alle fgst, die in den ersten drei Zeichen identisch mit ihren wmi sind, ohne die wmi als zusätzliche Ballastspalte mitzuschleppen, so wie der filter das macht.

(Hab den obenstehenden Code jetzt nicht getestet, aber so müsste das funktionieren.)

Oder Du machst sogar:

Code: Alles auswählen.

TYPES type_table_of_i type standard table of i with empty key.
DATA(lt_gesuchte_fgsts) = VALUE type_table_of_i( FOR <zeile> IN lt_tabelle2 INDEX INTO idx where fgst(3) = wmi ( idx ) ).
Damit bekämst Du dann eine Tabelle der Zeilennummern von den Zeilen, die Deiner Bedingung entsprechen.

Re: Interne Tabellen: Feldinhalte vergleichen

Beitrag von Mario Reum (ForumUser / 3 / 0 / 0 ) »
Hallo DAP,

zunächst einmal vielen Dank für Deine Antworten.
Das Problem besteht nach wie vor, die where-Bedingung mit fgst(3) passt nicht.

Re: Interne Tabellen: Feldinhalte vergleichen

Beitrag von tm987456 (ForumUser / 72 / 42 / 14 ) »
Filter kann kein Teilfeldzugriff über var(3). substring( ) funktioniert interessanterweise ebenfalls nicht. Dazu kommt, dass beim Filter nur binäre Vergleichsoperatoren erlaubt sind.

Entweder also schon bei der Erstellung der Tabellen mit einer Hilfsspalte arbeiten oder was anderes als Filter nehmen.

Gruss
tm

Seite 1 von 1

Vergleichbare Themen

3
Antw.
411
Views
4
Antw.
3173
Views
2 interne Tabellen vergleichen
von swonny » 06.11.2006 16:12 • Verfasst in ABAP® für Anfänger
2
Antw.
1764
Views
2 interne Tabellen vergleichen
von Klende » 21.11.2005 15:16 • Verfasst in ABAP® für Anfänger
12
Antw.
6755
Views
2 interne Tabellen vergleichen
von Bright4.5 » 28.03.2019 08:56 • Verfasst in ABAP® für Anfänger
10
Antw.
16639
Views
interne tabellen vergleichen
von TobiB » 23.11.2007 13:12 • Verfasst in ABAP® Core

Ü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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 72
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141