Code: Alles auswählen.
SELECT
b~partner
b~name_org1
b~name_org2
b~name_last
b~name_first
b~type
INTO TABLE
lt_customer
FROM
but000 AS b INNER JOIN ekun AS e ON b~partner = e~partner
INNER JOIN fkkvkp AS f ON f~gpart = b~partner
INNER JOIN ever AS v ON v~vkonto = f~vkont
WHERE
e~zvks_online_flag = 'X' AND
v~vbeginn < lv_mig_date AND
v~vende > lv_mig_date AND
b~partner IN lt_bu_partner_range
.
nicht ganz. Gemeint war, dass Du zusammenhängende Zahlen in Bereiche zusammenfassen könntest. Wenn die 16.000 Zahlen alle fortlaufend wären, so würde nach der Komprimierung genau eine Zeile übrig bleiben mit low = 1 und high = 16000ABAP_User hat geschrieben:Wenn ich das mit der Komprimierung richtig verstanden habe, würden rund 1/9 der Daten in der Range-Tabelle anfallen, ja? Das könnte meines Erachtens immer noch zu viel sein. Zumindest wenn es dann produktiv läuft, wird es zu Kurzdumps führen.
Code: Alles auswählen.
DATA lt_bu_partner_range TYPE RANGE OF bu_partner
Die Frage ist aber nicht ernst gemeint (Das der User die 16.000 am Bildschirm eingibt), odera-dead-trousers hat geschrieben:hi!
Wo "entsteht" der Range? Sprich wird er vom Benutzer befüllt oder von einem anderen Select-Statement?
Wenn Ersteres: Da funktioniert FOR ALL ENTRIES nicht, da der Benutzer auch Einträge zum Ausschluss angegeben haben könnte (SIGN = 'E') oder mit Wildcards gearbeitet wurde (OPTION = 'CP')
Wenn zweiteres: Da würde ich überhaupt eine andere Tabelle empfehlen, die nur aus dem Feld besteht das du brauchst. Damit sparst du jede Menge Speicher (vorallem bei 16.000 Datenzeilen)
lg ADT
Code: Alles auswählen.
SELECT
b~partner
b~name_org1
b~name_org2
b~name_last
b~name_first
b~type
INTO TABLE
lt_customer
FROM
but000 AS b INNER JOIN ekun AS e ON b~partner = e~partner
INNER JOIN fkkvkp AS f ON f~gpart = b~partner
INNER JOIN ever AS v ON v~vkonto = f~vkont
FOR ALL ENTRIES IN lt_bu_partner_range
WHERE
e~zvks_online_flag = 'X' AND
v~vbeginn < lv_mig_date AND
v~vende > lv_mig_date AND
b~partner <> lt_bu_partner_range-low.
Code: Alles auswählen.
FOR ALL ENTRIES IN lt_bu_partner_range
WHERE ........
b~partner <> lt_bu_partner_range-low.