Select bei interner Tabelle

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

Select bei interner Tabelle

Beitrag von Buetzy (ForumUser / 35 / 0 / 0 ) » 09.07.2007 13:58
Hallo,

folgendes Problem:
Ich habe Datensätze in einer internen Tabelle. Hier gibt es Feld_1 und Feld_2. Es kann sein das im Feld_1 eines Datensatzes die gleiche Nr. steht wie im Feld_2 eines anderen. Diese möchte ich haben. Also die Nr. aus Feld_2 nehmen und in der internen Tabelle in Feld_1 suchen.

LOOP AT it_intern into wa_intern.

Select Single From it_intern
where feld_2 EQ wa_intern_feld1.
ENDLOOP.
Hier kommt folgenden Fehlermeldung

Programm XXX
"it_intern" ist im ABAP-Dictionary nicht als Tabelle, Projektions- oder
Datenbank-View deklariert.

Wie gehts richtig, Danke
Stefan


Beitrag von khb (Specialist / 181 / 5 / 1 ) » 09.07.2007 14:11
Hallo Buetzy,

select-statements funktionieren nicht bei internen Tabellen.

Hierzu nimmst Du read table .... with key ... und am besten mit binary search.

Die F1-Hilfe ist hier recht gut.

VLG khb

Es wird nur ein Datensatz gelesen

Beitrag von Buetzy (ForumUser / 35 / 0 / 0 ) » 10.07.2007 08:33
Hallo,
erstmal Danke für die schnelle Antwort. Mit der Read Anweisung klappt es erstmal. Allerdings wird nur ein Datensatz gefunden, es müssten aber mehrere sein. Folgenden Code habe ich verwendet:

WHILE sy-subrc = 0.
READ TABLE it_intern
WITH KEY feld_1 = it_intern_1-Feld_2.
if sy-subrc = 0.
MOVE-CORRESPONDING: it_intern TO it_intern_3.
APPEND it_intern_3.
Else.
exit.
endif.
CLEAR: it_intern_1-Feld_2.
ENDWHILE.

Wo liegt mein Fehler, Danke
Stefan

Beitrag von khb (Specialist / 181 / 5 / 1 ) » 10.07.2007 09:17
Stehen die gesuchten Datensätze hintereinander?

Dann: Sy-Tabix in Variable schreiben, variable um 1 erhöhen, intern_3 füllen und lesen mit read table ... index ... .

stehen sie nicht hintereinander, die interne Tabelle mit loop at ... where ... lesen.

Schau Dir mal die F!-Hilfe zum loop an.

GL khb

Beitrag von SkyHobbit (Specialist / 170 / 0 / 1 ) » 10.07.2007 09:20
Hallo Buetzy,

in der Doku zu Read steht, dass nur ein Satz gelesen wird ... eigentlich sollten Schlüssel auch eindeutig sein.

Wenn Du mehrere Treffer erwartest, loope doch mit ' LOOP AT itab' über Deine Tabelle.

Gruß.
Ulf

Beitrag von Buetzy (ForumUser / 35 / 0 / 0 ) » 11.07.2007 11:06
Vielen Dank für Eure Hinweise,

ich habe es jetzt folgendermassen gelöst:

LOOP AT it_intern.
MOVE-CORRESPONDING: it_inter TO it_intern2.
append it_intern2.
ENDLOOP.

Loop At it_intern.
if feld_S = '1'
Loop At it_intern2
where feld_1 EQ it_intern-feld_2.
if sy-subrc = 0.
MOVE-CORRESPONDING: it_intern2 TO it_intern3.
APPEND it_intern3..
endif.
ENDLOOP.
endif.
endloop.
Stefan

Beitrag von khb (Specialist / 181 / 5 / 1 ) » 11.07.2007 11:19
Hallo Buetzy,

innerhalb des loop at ... where .. brauchst Du keine Abfrage auf SY-SUBRC = 0. Wenn es nicht geklappt hätte, wärts Du ja nicht im Loop, oder :wink: .

VLG khb

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Last erzeugen im SAPGui?
vor 20 Stunden von black_adept 21 / 275
IDoc-Segmente löschen
vor 2 Tagen von littleJohn 2 / 82
Shortdump wegen Speicherüberlauf
vor 2 Tagen von chhe001 8 / 149

Vergleichbare Themen

Select mit interner Tabelle
von Kenny » 13.11.2013 12:17
Move-Corresponding mit interner Tabelle
von Dele » 13.10.2015 13:53
Key Felder von interner Tabelle auf dem ALV
von thesaint » 14.07.2005 16:32
Problem mit interner Tabelle
von Troilus » 17.11.2007 23:09
Types mit interner Tabelle?
von Gast » 19.07.2005 17:43