Performancefrage bei "Massenselect"

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Performancefrage bei "Massenselect"

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Hallo ich habe eine Performancefrage:

Ich muss >1.000.000 Datensätze verarbeiten. Um einen Commit machen zu können lade ich mir die DS in eine interne Tabelle. Bei > 1.000.000 DS ist mir diese aber ein wenig zu unhandlich, daher hätte ich gerne Pakete. Nun könnte ich

1. mit up to (z.B. 200,000) rows arbeiten. Hier müsste ich mir aber einen Aufsetzpunkt merken und nach dem Schlüssel (order by) im Select sortieren oder?

Code: Alles auswählen.

Do.

 clear itabTable.

 SELECT *
 into itabTable
 FROM s671 CLIENT SPECIFIED UP TO 2000 ROWS 
WHERE mandt = sy-mandt
 .....
 and kunnr > minKunnr
 order by kunnr.


 If sy-dbcnt < 2000.
   Ende = ?X?.
 endif.

 loop at itabTable...
  VERARBEITUNG
  minKunnr = itabTable-kunnr.
 endloop.
 
 If ende = ?X?
  Exit.
 Endif.

Enddo.
2.ich baue mir einen Range mit der Kundennummer auf und durlauf dies

Code: Alles auswählen.

Do.

 clear itabTable.

 SELECT *
 into itabTable
 FROM s671 CLIENT SPECIFIED
 WHERE mandt = sy-mandt.
 .....
 and kunnr in ra_Kunnr.

 loop at itabTable...
  VERARBEITUNG
 endloop.

 If Ende = ?X?.
  Exit.
 Endif.

 ra_kunnr-low = ra_kunnr-high + 1.
 ra_kunnr-high = ra_kunnr-low + 2000.
 ?.

 If ra_kunnr-high >= max_kunnr.
  ra_kunnr-high = max_kunnr.
  Ende = ?X?.
 Endif.

Enddo.
Quellcode ist eben aus der Hüfte geschossen, daher bitte nicht so genau nehmen ;-).

Was meint ihr ist der besser weg oder habt ihr noch eine andere Idee?

Mit freundlichen Grüßen

C0lt.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von poldi (Specialist / 116 / 0 / 0 ) »
Hallo c0lt,

vom Lesen mit einer Range-Tabelle würde ich abraten, denn da gibt es Grenzen bezüglich der Größe. Die ORDER-KLausel benutze ich auch nicht, besser ist die Sortierung der internen Tabelle. Eventuell hilft Dir OPEN CURSOR und FETCH weiter, einfach mal in die Hilfe schauen.

Viele Grüße
Wilfried
Wir sind lustig und haben es gar nicht nötig!

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Über 1Mio Datensätze verarbeiten und dabei Probleme haben?
Naja!

Möglichkeiten:

1) Als erstes NUR ALLE KEYFELDER einlessen und
über diese dann jeweils Teilweise in eine andere ITAB reinschaufeln um Stückweise zu verarbeiten.

2) Über eine Eingabe im Selectionsbild die Daten beschränken und das Programm mehrmals mit unterschiedlichen Farianten laufen lassen.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
12846
Views
Löschen aus DB-Tabelle ohne Key oder Index -Performancefrage
von KeLa34 » 05.09.2025 10:32 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zukunft des ABAP Entwicklers
vor 10 Stunden von ralf.wenzel 6 / 221
HR in der Zukunft?
vor 13 Stunden von waltersen 5 / 2463
VS Code statt Eclipse
Gestern von rob_abc 3 / 88

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zukunft des ABAP Entwicklers
vor 10 Stunden von ralf.wenzel 6 / 221
HR in der Zukunft?
vor 13 Stunden von waltersen 5 / 2463
VS Code statt Eclipse
Gestern von rob_abc 3 / 88