Meine erste Frage wäre: Warum macht man sowas? Meist lässt sich für das gestellte Problem eine bessere Lösung finden. Ich hab sowas in 20 Jahren noch nie gebraucht -- da kann man schonmal fragen, was das soll
Warum 2.500 Einträge übertragen werden, ist auch klar, weil immer die ersten 500 genommen werden (Index 1-500). Hättest du eine richtige Tabelle (also eine mit Schlüsseln), würdest du das merken, weil dir das Teil wegen duplicate keys auf die Bretter ginge. Wenn du das so machen willst, solltest du den Index weiterrechnen:
Code: Alles auswählen.
DO.
x = 1 + ( ( sy-index - 1 ) * 500 ). " 1, 501, 1001, ....
y = sy-index * 500. " 500, 1000, 1500, ....
INSERT LINES OF itab1 FROM x TO y INTO TABLE itab2.
IF x GE lines( itab1 ) " das könnte man weglassen
OR y GE lines( itab1 ). " das nicht!
EXIT.
ENDIF.
ENDDO.
Deklarationen sollten auf der Hand liegen, da ohne System geschrieben: Keine Gewähr auf syntaktische Richtigkeit und testen konnte ich es freilich auch nicht. Ich habe z. B. nicht ausprobiert, wie der INSERT reagiert, wenn y > Zeilenzahl der itab1 ist.
Ralf