Hallo zusammen,
mein Ziel ist eine Massenverarbeitung mehrerer Tabellen im ISU zu realisieren. Die Tabellen sind aus dem Abrechnungsbereich und beinhalten zwischen 10 und 50 Millionen Datensätze.
Beispiel Tabelle ERCH(Abrechnungsbelege):
Je Datensatz möchte ich einen FUBA / Report aufrufen, den ich selber programmiert habe.
Erste Idee:
SELECT / ENDSELECT über die Tabelle und aufrufen des Reports/FUBAs in dieser Selectschleife. Problem: Sobald irgendein COMMIT auf die Datenbank erfolgt, kommt es zu einem Dump mit Hinweis, dass alle Steps innerhalb eines Select/Endselect Bereiches vor einem Commit abgeschlossen sein müßen (==> Grund: Der Datenbankzeiger geht verloren, und das obwohl nicht auf die Tabelle ein Commit erfolgt).
Zweite Idee:
Lesen der Datensätze in eine interne Tabelle und nachfolgend die Verarbeitung auf Ebene eines Loop über die interne Tabelle. Das funktioniert alle soweit aber sobald ich auf das produktive System gehe und alle Datensätze in die ITAB hole kommt es ebenefalls zum Dump, da die ITAB natürlich zu groß wird
Dritte Idee:
Ich reduziere die Datensatzanzahl der interne Tabelle und mache entsprechend viele Durchläufe, indem ich immer wieder ein Datenpaket aus der Datenbanktabelle lese, in die ITAB schreibe und dann diese ITAb verarbeite.
ABER: Wie mache ich so was am Besten? Derzeit merkle ich mir immer den "sy-dbcnt" am Ende eines Verarbeitungsblocks und im nachfolgenden Block Lese ich die Datenbanktabelle bis zum alten "sy-dbcnt", dann lese ich ab da wieder in die ITAB, merke mir wieder den "sy-dbcnt" usw. usw. .
Diese Lösung funktioniert zwar,
aber ich denke sie ist nicht so optimal. Daher meine Fragen:
Wie kann man eine derartige Massenverarbeitung am Besten realisieren oder gibt es eine Möglichkeit die Selektion einer Datenbanktabelle sinnvoll in einzelne Blöcke splitten?
Wenn jemand hier schon mal seine Erfahrungen gemacht hat un mir etwas helfen könnte wäre ich sehr dankbar!
Gruß, Henry