Vergleiche Struktureintrag mit Tabelleneintrag

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von burggartenkind (ForumUser / 33 / 4 / 0 ) »
Hallo Kollegen,

also ich habe eine Select auf deine DB Tabelle gemacht in eine LT. Bekomme auch in meiner LT die gewünschten Felder. So nun folgendes Ich loopt über die LT in meine WA. Wenn eine bestimmtes Feld meiner WA befüllt ist. Soll ich dieses Feld mit einem Feld auß einer anderen Tabelle vergleichen. Hab ich einen Treffer dann ist alles gut, sollte ich keinen Treffer haben soll es weiter gehen.

Ich hänge jetzt an dem Punkt wo ich mein Feld aus der WA mit einem anderen Feld aus einer anderen LT vergleichen soll.

Select Infnr, ekorg, werks, ebeln, ebelp, datlb from eine INTO CORRESPONDING FIELDS OF TABLE @lt_eine.

Select ebeln, lifnr, ekorg from ekko INTO CORRESPONDING FIELDS OF Table @lt_ekko.


*Loop über Tabelle EINE(Einkaufsinfosätze)

LOOP AT lt_eine INTO wa_eine.
IF wa_eine-ebeln IS NOT INITIAL.
*wenn EINE-Ebeln gefüllt dann Check in Tabelle EKKO ob EINE-Ebeln = EKKO-Ebeln, wenn JA dann passts.
wa_eine-ebeln = wa_ekko-ebeln.
ELSE.

ENDIF.
ENDLOOP.

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


Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von A6272 (Specialist / 231 / 6 / 36 ) »
Hallo,

z.B. per Read Table... wenn sy-surc = 0, dann hat er was gefunden.

oder mal den FILTER Befehl ansehen. Alle Einträge aus EINE Filtern, für die EINE-Ebeln = EKKO-Ebeln ist und dann mit der Teilmenge was machen.

Grüße
Alex

Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
burggartenkind, Deine Anforderung macht so noch keinen Sinn, und ich glaube, dass das auch der Grund ist, weshalb Du noch keine Lösung hast. Erst musst Du das Problem richtig in Geiste modellieren, dann kannst Du versuchen, es zu lösen.
Ich hänge jetzt an dem Punkt wo ich mein Feld aus der WA mit einem anderen Feld aus einer anderen LT vergleichen soll.
Mit welchem denn? Mein Verständnis: Du hast eine Zeile mit einem Feld und willst das jetzt mit einer Spalte einer anderen Tabelle vergleichen. Da man aber Felder nur mit Feldern vergleichen kann und nicht mit Tabellen, geht das nicht.

A6272's Interpretation, derzufolge Du in Wahrheit wissen möchtest, ob es in der zweiten Tabelle eine Zeile gibt, bei der dieses Feld den gleichen Wert hat, klingt plausibel, muss aber nicht stimmen. Das müsstest Du bitte erst mal klarstellen.

Auch Dein Coding macht an der Stelle bislang keinen Sinn:

Code: Alles auswählen.

LOOP AT lt_eine INTO wa_eine.
IF wa_eine-ebeln IS NOT INITIAL.
  *wenn EINE-Ebeln gefüllt dann Check in Tabelle EKKO ob EINE-Ebeln = EKKO-Ebeln, wenn JA dann passts.
  wa_eine-ebeln = wa_ekko-ebeln.
Wenn der EBELN aus der EINE gleich dem EBELN aus der EKKO ist, dann willst Du eine Zuweisung wa_eine-ebeln = wa_ekko-ebeln. machen? Was soll die dann noch bringen; die Felder sind doch schon gleich?!

Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von burggartenkind (ForumUser / 33 / 4 / 0 ) »
Hallo Leute, danke für eure Tipps, hab mittlerweile schon von einem Kollegen einen Tipp bekommen gehabt mit dem ich es gelöst habe

Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
hallo burggartenkind, das ist schön. Falls jemand anderes ein ähnliches Problem hat: verrätst du uns auch, wie du es gelöst hast?

Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von burggartenkind (ForumUser / 33 / 4 / 0 ) »
khb hat geschrieben:hallo burggartenkind, das ist schön. Falls jemand anderes ein ähnliches Problem hat: verrätst du uns auch, wie du es gelöst hast?
SELECT infnr ekorg werks ebeln ebelp datlb FROM eine INTO CORRESPONDING FIELDS OF TABLE lt_eine.
LOOP AT lt_eine INTO ls_eine.
SELECT COUNT(*) FROM ekko WHERE ebeln = ls_eine-ebeln.

IF sy-subrc = 0.
CONTINUE.
ELSE.

Re: Vergleiche Struktureintrag mit Tabelleneintrag

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Danke. Statt

Code: Alles auswählen.

IF sy-subrc = 0.
CONTINUE.
ELSE.
könntest Du auch einfach schreiben:

Code: Alles auswählen.

CHECK sy-subrc <> 0.
mit exakt derselben Wirkung (an dieser Programmstelle).

Ansonsten funktioniert Dein Code, ist aber nicht sonderlich performant, weil Du für jeden Tabelleneintrag einen Datenbankzugriff machst. Besser wäre eine Pufferung:

Code: Alles auswählen.

DATA lt_buffer TYPE SORTED TABLE OF ekko-ebeln WITH UNIQUE KEY table_line.
SELECT ebeln INTO lt_buffer FROM EKKO. " ohne WHERE

* ...

LOOP AT lt_eine INTO ls_eine.
  READ TABLE lt_buffer WITH KEY table_line = ls_eine-ebeln TRANSPORTING NO FIELDS.
  CHECK sy-subrc <> 0.
Dann hast Du für die EKKO nur einen einzigen Datenbankzugriff am Anfang Deines Programms. Das ist erheblich schneller.


Seite 1 von 1

Vergleichbare Themen

3
Antw.
2816
Views
Vergleiche (<, >, <>, etc.) bei CASE
von kl » 28.02.2005 22:31 • Verfasst in ABAP® für Anfänger
2
Antw.
1353
Views
Zwei Vergleiche
von Elcin » 30.09.2016 15:17 • Verfasst in ABAP® für Anfänger
6
Antw.
2009
Views
2 interne Tabellen mit unterschiedlicher Struktur vergleiche
von Chriz » 24.11.2005 14:45 • Verfasst in ABAP® für Anfänger
9
Antw.
4997
Views
Tabelleneintrag
von Mueller.D » 18.09.2017 13:31 • Verfasst in ABAP® für Anfänger
11
Antw.
2542
Views
aktueller Tabelleneintrag
von mamba » 06.03.2006 11:13 • 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.