READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

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

READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
Hallo,

ich möchte alle Zeilen auslesen, die bzgl. einer Suchschlüssel-Komponente innerhalb eines Wertebereichs liegen, also in etwa wie folgt:
READ TABLE itab INTO wa
WITH KEY comp1 = '20' OR comp1 = '21' ...
was ja syntaktisch falsch ist.
Wie ließe sich das trotzdem bewerkstelligen?

Vielen Dank für eure Hilfe!


Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von Niels (ForumUser / 77 / 18 / 9 ) »
This statement reads a row from the internal table itab. The row must be specified by naming values for either table_key for a table key, a free condition free_key, or an index index. The latter is possible only for index tables and when using a sorted secondary key. The output response result determines how and to where the row contents are read.
Da steht es ja das dort eine Zeile gelesen wird.
Du kannst ja auch in eine Workarea nur eine Zeile einlesen.

willist du mehrere Zeilen auslesen musst du das mit ienem LOOP itab INTO wa WHERE ...

Gruß

Niels

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
Danke erst mal für den Hinweis!
Hätte mal den Code davor noch angeben sollen:
LOOP AT quelle ASSIGNING <quell_felder>.
READ TABLE itab INTO wa
WITH KEY comp1 = '20' OR comp1 = '21'...

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ralf.wenzel (Top Expert / 3580 / 168 / 245 ) »
Welchen ABAP-Releasestand hast du? Unter neueren Releases kommst du mit "if line_exists..." weiter.

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
mmh, hab für die Abfrage der release-infos keine Berechtigung
Dachte, dass wär ne noob-sache, die ziemlich simpel zu lösen wäre

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ralf.wenzel (Top Expert / 3580 / 168 / 245 ) »
sapjob hat geschrieben:mmh, hab für die Abfrage der release-infos keine Berechtigung
Dachte, dass wär ne noob-sache, die ziemlich simpel zu lösen wäre
Du hast für System -> Status keine Berechtigung????

Wie soll sich READ TABLE denn verhalten, wenn du mit OR mehrere Sätze findest?
Zuletzt geändert von ralf.wenzel am 18.11.2015 13:48, insgesamt 1-mal geändert.

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
Ah ok, hatte woanders gesucht.
7.4 ist der Stand.
Hab mir den Befehl angeschaut, würde das lieber mit read table machen, da der code für die Abfrage eines Schlüsselwerts bereits realisiert worden ist. Müsste das nur auf 2 Werte erweitern.
Die Workarea sollte den Datensatz eingelesen bekommen, sobald er in Komponente K den Wert x oder y enthält

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ralf.wenzel (Top Expert / 3580 / 168 / 245 ) »
sapjob hat geschrieben:Ah ok, hatte woanders gesucht.
netweaver 7.4
Eigentlich hätte ich auf eine Angabe SAP_ABA = ... gehofft. Aber 7.4 lässt zumindest den Versuch zu, folgendes zu versuchen:

TRY.
wa = VALUE #( itab[ comp = '20' ] ).
CATCH cx_sy_itab_line_not_found.
TRY.
wa = VALUE #( itab[ comp = '21' ] ).
CATCH cx_sy_itab_line_not_found.
*** Weitere Alternativen nach gleichen Muster
*** bzw. kein Satz gefunden nach der letzten Alternative
ENDTRY.
ENDTRY.

Aber wenn deine Lösungsmenge mehr als einen Satz enthält, fährst du mit einem LOOP wirklich besser.

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
sapjob


Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
Ja, wollte den Code jetzt nicht an allen Stellen groß umbauen. Werd mal weiterschauen, obs ne einfachere Lösung gibt. Vielen Dank erst mal!

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ralf.wenzel (Top Expert / 3580 / 168 / 245 ) »
Die Frage kann ich dir beantworten: Nein. ;)

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ewx (Top Expert / 4439 / 227 / 497 ) »
Wie wäre es, wenn du den entsprechenden Tabelleneintrag einfach liest und dann prüfst, ob COMP1 = 20 oder 21 ist...?!

/edit: Bzw. wenn du erst mit COMP1 = 20 liest und bei Misserfolg mit COMP1 = 21...?

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


Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ralf.wenzel (Top Expert / 3580 / 168 / 245 ) »
ewx hat geschrieben:/edit: Bzw. wenn du erst mit COMP1 = 20 liest und bei Misserfolg mit COMP1 = 21...?
Das ist doch genau das Codingstück, das ich ihm vorgeschlagen habe ;)

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von sapjob (ForumUser / 12 / 5 / 0 ) »
ewx hat geschrieben:Wie wäre es, wenn du den entsprechenden Tabelleneintrag einfach liest und dann prüfst, ob COMP1 = 20 oder 21 ist...?!

/edit: Bzw. wenn du erst mit COMP1 = 20 liest und bei Misserfolg mit COMP1 = 21...?
Das Problem ist dann, dass der identische Code doppelt, also jeweils hinter dem Fall für erfolgreiches Laden von COMP1 = 20 und noch mal hinter COMP1 = 21 stehen müsste. Das ist eigentlich auch ne schlechte Lösung oder nicht?

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von Niels (ForumUser / 77 / 18 / 9 ) »
Aber Anders komsmt du sonst nicht an die Daten

Re: READ TABLE ... WITH KEY [logische Verknüpfung mögl?]

Beitrag von ewx (Top Expert / 4439 / 227 / 497 ) »
ralf.wenzel hat geschrieben:Das ist doch genau das Codingstück, das ich ihm vorgeschlagen habe ;)
Das stimmt. Da war ich wohl vom 740er Code geblendet... :)


Über diesen Beitrag


ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Knobelaufgabe ( Oktober 2021 )
vor einer Stunde von black_adept 5 / 85
Button einbinden
vor 12 Stunden von black_adept 17 / 146

Vergleichbare Themen

Read mit OR Verknüpfung?
von fcmfanswr » 18.11.2010 09:24
read table
von kostonstyle » 27.03.2008 15:38
read table liefert sy-subrc = 4
von c oco » 04.04.2011 17:09
Read Table mit MAX Datum und Zeit
von autohandel7 » 23.08.2018 10:54
READ TABLE dynamisch aufrufen
von RiffRaff » 27.12.2004 12:04