Code: Alles auswählen.
SELECT *
FROM tabelle1
JOIN tabelle2 On tabelle1~schl = tabelle2~schl
INTO CORRESPONDING FIELDS OF TABLE <it_tab2>
FOR ALL ENTRIES IN <it_tab1>
WHERE tabelle1~schl = <it_tab1>-schl.
<it_tab1> definiere ich hier:black_adept hat geschrieben: ↑22.04.2021 16:39Zeig mal die Programmzeile, wo du das Feldsymbol <it_tab1> definierst.
Der Fehler mit der falschen Tilde ist mir wohl beim erstellen dieses Beitrages passiert. Auch mit deiner korrigierten Variante kommt der selbe Fehler.fr-g hat geschrieben: ↑22.04.2021 18:05Der Syntaxfehler, dass das Feld unbekannt ist, kommt von der falschen Tilde in der WHERE-Bedingung:
Alles weitere kann man ohne die Typisierung des Feldsymbols schlecht sagen :)Code: Alles auswählen.
SELECT * FROM tabelle1 JOIN tabelle2 On tabelle1~schl = tabelle2~schl INTO CORRESPONDING FIELDS OF TABLE <it_tab2> FOR ALL ENTRIES IN <it_tab1> WHERE tabelle1~schl = <it_tab1>-schl.
Danke für den Hinweis, aber da das Programm sehr dynamisch auf mehrere Tabellen und Felder zugreifen soll und ich immer noch ein ABAP Anfänger bin, ist mir bis jetzt noch keine andere Lösung bekannt um das zu machen.babap hat geschrieben: ↑22.04.2021 22:51Hi,m
Mal aus Sicht der Performance und der Klarheit dieses Statements ...
sieht aus wie der worseste Worst-Case, den ich jeh gesehen habe ...
Wenn ich mir das endlose SQL Statement vorstelle, was an die Datenbank geht ... ohne Chance auf Cache ...
den arbeitslosen Compiler da ist nix was man vorher kompilieren könnte ... das frustrierte Laufzeitsystem, was dieses Statement immer und immer wieder interpretieren muss.
Mal gleich in der Cloud nen Prozessor dazubuchen.
Sorry und Grüße
babap
Wie soll das System das wissen, wenn du die Tabelle mit TYPE TABLE, also ohne Strukturinformationen definierst?
Deswegen frage ich ja nach einem Weg wie ich das machen kann, später weise ich dem Field-Symbol mit einem ASSIGN die Tabellenstruktur zu.
Kannst du näher erläutern, was du meinst?
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain
Wenn du die Tabelle <itab1> dynamisch zuweist, woher weißt du dann, welche Felder enthalten sind?
Ja, aber so geht das leider nicht.
Danke für deine Antwort.a-dead-trousers hat geschrieben: ↑23.04.2021 09:56Ja, aber so geht das leider nicht.
Für ein SELECT-Statement in dieser Form braucht es eine statische Typ-Information.
Du kannst hier nur, bevor du das SELECT aufrufst, mit LOOP AT und dann ASSIGNING COMPONENT OF die einzelnen Zeilen und Felder deiner <it_tab1> durchlaufen und in eine typisierte (Range-)Tabelle übertragen. Erst damit kannust du dann das SELECT aufrufen.