ich bekomme einen Kurzdump mit folgender Nachricht:
Was ist passiert?
Fehlertext der Datenbank: "SQL message: [IBM][CLI Driver][
IS TOO LONG OR TOO COMPLEX"
Fehleranalyse
Es ist eine Ausnahme aufgetreten, die weiter unten näher e
Die Ausnahme, der die Klasse 'CX_SY_OPEN_SQL_DB' zugeordne
wurde nicht abgefangen und führte deshalb zu einem Laufzei
Der Grund für die Ausnahme ist:
Fehlertext der Datenbank: SQL message: [IBM][CLI Driver][D
TOO LONG OR TOO COMPLEX
Rückgabewert der Datenbankschicht: "SQL dbsl rc: 99"
Dies passiert nach einem Select. Kann es wirklich sein, dass zu viele Daten in eine interne Tabelle geschrieben werden?? Wie groß ist denn maximal eine interne Tabelle in ABAP?? Das Problem könnte man dann wohl mit 2 internen Tabellen umgehen oder?
nein, klingt eher nach zu vielen so-ranges where xxxx IN yyyy, glaube 1000 ist die Grenze, und die wird schnell erreicht wenn die Ranges per select zusammengestellt werden.
Nicht ganz. Die Grenze ist die Länge des tatsächlichen SELECT-Befehls der an die Datenbank geschickt wird und das ist meines Wissens abhängig von der eingesetzten Datenbank. Soweit ich weiß gibts es dafür auch einen per Profil-Parameter der das steuert. Für Oracle war es glaub ich 2 MB.
Die Faustregel, 1000 Zeilen für Range-Tabellen hat sich irgendwie so eingebürgert, weil das für das gros der Select-Anweisungen und Datenbanken am Besten bewährt hat.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
In meinem Inner Join benutze ich eine Range-Tabelle und dir wird in manchen Fällen (speziell in diesem mit 2736 Einträgen befüllt. Wenn ich das ganze in eine interne Tabelle umschreiben sollte es funktionieren, oder?