SYSTEM_NO_ROLL¶
The roll area for context switching between work processes is exhausted.
The SAP kernel could not roll out (save) the current program context because the roll area is full. The roll area holds program contexts while their work process is reassigned to another user between screen steps or RFC calls.
Symptom¶
ST22 shows:
This dump can affect a single user with a very large program context, or appear system-wide under heavy load.
Cause¶
The roll area size is controlled by rdisp/ROLL_MAXFS (default: several hundred MB to a few GB depending on SAP release). It fills up when:
- A single program allocates an unusually large amount of local data (very large internal tables in subroutines/methods).
- Deep call stacks with large local variable frames accumulate context.
- Many concurrent user sessions each hold substantial context across screen transitions.
- Memory leaks in long-running sessions that are never properly freed.
Difference from MEMORY_NO_MORE_PAGING
Both are roll/page area issues but MEMORY_NO_MORE_PAGING = paging pool. SYSTEM_NO_ROLL = roll pool. In practice, the fix approach is the same — reduce memory footprint and check system sizing.
Fix¶
Immediate (operational)¶
- Check SM50 for sessions with large roll memory. Cancel problematic sessions.
- Contact Basis to check
rdisp/ROLL_MAXFSand increase if undersized for the workload.
Code-level fixes¶
" Free large internal tables when no longer needed
CLEAR lt_big_table.
FREE lt_big_table.
" Avoid passing large tables by value — use CHANGING or TABLES
" Bad: large table copied on every call
METHODS process_data IMPORTING it_data TYPE ty_big_table.
" Better: pass by reference (no copy)
METHODS process_data IMPORTING it_data TYPE REF TO ty_big_table.
Move large data processing to background jobs:
" Dialog programs should not hold millions of rows in memory
" across screen transitions. Fetch fresh from DB when needed.
" Use background jobs for bulk operations.
Prevention¶
- Avoid passing large internal tables
BY VALUE— useIMPORTING ... TYPE REF TOorCHANGINGto pass by reference. FREElarge tables as soon as they are no longer needed, especially before aCALL SCREENorLEAVE TO SCREEN.- Process large datasets in background jobs, not dialog sessions.
- Monitor roll area with ST02 (Buffer Statistics).
See also¶
MEMORY_NO_MORE_PAGING— related paging pool exhaustionTSV_TNEW_PAGE_ALLOC_FAILED— work-process heap exhaustion- Transaction SM50 — work process monitor
- Transaction ST02 — buffer and roll area statistics