ABAP Debugger: Session vs External Breakpoints and Watchpoints
A session breakpoint stops execution only in the current user session, while an external breakpoint can stop code executed in a different HTTP/RFC session for the configured user and is therefore essential for OData, RFC and many Fiori calls. Watchpoints stop when a value/condition changes. Breakpoint type, user, application server and processing context must match the request or the debugger will never attach.
Practical reference for ABAP Debugger: Session vs External Breakpoints and Watchpoints, including how the mechanism works, when it is appropriate, where it fits in SAP runtime/architecture, a realistic example, decision guidance, failure patterns, S/4HANA direction and operational ownership.
Reviewed by an ERPClimb SAP consultant on 20 Sept 2026· 764 words
What it is
The New ABAP Debugger can stop at static BREAK-POINT statements, dynamic session breakpoints, external breakpoints, exception breakpoints, message breakpoints and watchpoints. A session breakpoint is tied to the current internal/external session context and is ideal for SAP GUI dialog execution. External breakpoints are stored so requests entering through ICF/RFC under the same user can trigger debugging even though they run in another session. Debugger settings, system/client/user and request user identity all matter. Update, background and system-user processing require additional techniques beyond simply placing a session breakpoint.
When to use it
Use session breakpoints when you start the transaction/report yourself in the same GUI user session. Use external breakpoints for OData/Fiori/RFC/HTTP requests executed under your user or a user whose debugging authorization/context is intentionally configured. Use watchpoints when the key question is where a variable becomes wrong rather than which code path runs. Prefer conditional breakpoints to stopping thousands of loop iterations. On production, use traces/logs first and attach debugging only under controlled support procedures.
How it fits the stack
Debugger work sits alongside ST22, Gateway error logs, SAT/ST05, application logs and authorization traces. A dump may reveal the failing statement without a debugger; a performance issue may need SAT instead of step-through; an OData 500 often needs /IWFND/ERROR_LOG to identify the backend exception before setting a targeted breakpoint. Remote calls can execute under technical users, which explains why an external breakpoint for the developer's user is ignored.
A worked example
A Fiori save request reaches a RAP behavior implementation but a breakpoint set in ADT never triggers. The browser request is actually executed under a propagated business user different from the developer account. The team identifies the backend user from Gateway/request context, sets the permitted external breakpoint for that user in the correct system/client and repeats the request. The debugger stops immediately. The same logic called from a local test class would have worked with a session breakpoint.
How to choose
- Same GUI/session and user: session breakpoint is simplest.
- HTTP/RFC/Fiori call in another session: use an external breakpoint for the actual backend user.
- Unknown place where data changes: add a watchpoint/conditional breakpoint after narrowing the scope.
- Background/update work: use the dedicated debugging technique rather than waiting for a dialog breakpoint.
- Production: prefer logs/traces and reproduce in non-production before attaching live debugging.
Common pitfalls
- Setting an external breakpoint for the developer while the request runs under a technical or propagated user.
- Debugging the Gateway hub when business logic actually executes in a separate backend system.
- Using an unconditional breakpoint inside a huge loop and making the process unusable.
- Leaving BREAK-POINT statements in productive code paths.
- Stepping through performance problems that need runtime/SQL trace instead.
ECC, S/4HANA and clean core
The debugger remains fundamental in S/4HANA, RAP and classic code. ADT integrates breakpoints for modern ABAP development; OData/RAP requests still require the correct external-user context. ABAP Cloud allows debugging of permitted custom code but not arbitrary modification/access to restricted standard internals. Observability should increasingly complement, not replace, targeted debugging.
Whose problem this is
ABAP developers own breakpoint strategy and must respect debugging authorizations. Basis/security control production debugging access. Integration/Fiori teams supply request correlation and actual execution user/system so development can attach to the right context.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-technical-topics/abap-debugger-session-external-breakpointsERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.