PACKAGE SIZE and Large Data Processing
Process large datasets safely without loading everything into memory at once.
Explanation
Large reports and extraction programs often fail because they load too much data into memory. PACKAGE SIZE allows records to be fetched and processed in smaller chunks. This helps control memory usage and makes long-running jobs more predictable. It is useful for background jobs, migration extracts, reconciliation reports and interface processing. However, PACKAGE SIZE is not a magic fix. The query must still have good filters, and the processing logic inside the package must be efficient. Developers should also ensure that totals, logs and error handling work across packages.
Code example
SELECT bukrs, belnr, gjahr, blart, budat FROM bkpf WHERE bukrs = @p_bukrs AND gjahr = @p_gjahr INTO TABLE @DATA(lt_bkpf) PACKAGE SIZE 5000. LOOP AT lt_bkpf INTO DATA(ls_bkpf). " Process each package safely ENDLOOP. CLEAR lt_bkpf.ENDSELECT.Real project scenario
A nightly migration report originally reads 12 million accounting headers into memory and crashes. After adding WHERE filters and processing records with PACKAGE SIZE 5000, the job completes successfully with stable memory usage.
Common mistakes
- Loading millions of rows into one internal table. - Using PACKAGE SIZE without proper WHERE filters. - Forgetting to clear package tables. - Incorrect totals across multiple packages.
Best practices
- Use PACKAGE SIZE for large-volume jobs. - Keep package processing stateless where possible. - Clear temporary package data after processing. - Measure memory and runtime in background.
Interview angle
Senior interviewers ask this to check whether the candidate can design high-volume background processing.