ABAP short dumpObjectCALL_FUNCTION_REMOTE_ERRORModuleABAP

CALL_FUNCTION_REMOTE_ERROR — CALL_FUNCTION_REMOTE_ERROR dump diagnosis

CALL_FUNCTION_REMOTE_ERROR occurs when a CALL FUNCTION ... DESTINATION statement fails on the remote system and the calling program has no SYSTEM_FAILURE or COMMUNICATION_FAILURE exception declared to catch it. The real fault is almost always on the remote side — a remote dump, a rejected connection, or an authorization failure — surfacing locally as an uncaught runtime error.

This page covers the CALL_FUNCTION_REMOTE_ERROR short dump raised when an RFC-enabled function call fails on the target system and the caller has no exception handling for it. It walks through the ordered causes, what to read in the ST22 dump on both systems, and how to close the gap without masking the underlying remote failure.

Published 16 Sept 2026· 1,209 words

What the dump means

CALL_FUNCTION_REMOTE_ERROR is a runtime error raised in the calling program when a CALL FUNCTION ... DESTINATION statement invokes a function module on a remote system and that call fails in a way the caller has not declared how to handle. The failure originates on the remote side: the remote function module itself terminates abnormally, the remote kernel rejects the call outright, or the RFC layer reports that execution could not complete. This is passed back across the connection as an exception. If the calling statement does not list SYSTEM_FAILURE and COMMUNICATION_FAILURE in its EXCEPTIONS addition, the local kernel has nowhere to route the error, so it terminates the calling program with a short dump instead of handing control back to ABAP logic. The dump is a symptom of the remote leg of the call, not necessarily a defect in the calling program's own business logic.

Root causes that actually produce it

  • Missing EXCEPTIONS addition on the CALL FUNCTION statement: the single most common reason this becomes a dump rather than a handled error. The developer coded CALL FUNCTION ... DESTINATION without SYSTEM_FAILURE = 1 and COMMUNICATION_FAILURE = 2, so any remote-side problem, however minor, terminates the program instead of setting a return code.
  • Remote function module dumped on the target system: the FM being called abended there due to its own data or coding issue. The local dump text carries only a summary of the remote error; the real diagnosis lives in the remote system's ST22, not the local one.
  • RFC destination unreachable or misconfigured: the target application server is down, the load-balanced logon group has no available server, the destination points to a decommissioned system, or the gateway between the two systems is not running. This raises COMMUNICATION_FAILURE, which dumps locally if uncaught.
  • Authorization failure on the remote system: the RFC user configured in the destination lacks authority to execute the called function module or the objects it touches, and the remote authority check terminates the call before it returns anything usable.
  • Interface version mismatch: the calling program was built against an older or newer version of the remote function module's signature, so parameters no longer line up, and the remote system rejects the call rather than executing it with wrong data.
  • RFC user locked, expired, or type mismatch (dialog user used for a background RFC) on the target system, rejected during logon before the function module ever executes.
  • Remote system in a state that refuses new RFC calls: system in exclusive maintenance, in the middle of an upgrade, or the work process pool exhausted, causing the call to be turned away at the gateway.

What to inspect in ST22

  • Header block: confirm the runtime error is exactly CALL_FUNCTION_REMOTE_ERROR and note the exception class, usually CX_SY_... wrapping a communication or system failure.
  • Information on where terminated: gives the exact source line of the CALL FUNCTION ... DESTINATION statement. Open the program and check whether SYSTEM_FAILURE and COMMUNICATION_FAILURE are present in the EXCEPTIONS list — if absent, this is the proximate cause regardless of what triggered the remote failure.
  • What happened / error analysis text: contains the RFC destination name, the remote system ID, and usually a short message returned from the remote side — look for wording indicating a remote short dump, a logon rejection, or a connection timeout, since each points down a different branch.
  • Container / variable section: check the actual parameters passed to the failing call, useful when suspecting an interface mismatch.
  • Follow-on checks: SM59 to test the destination and its logon data, SM21 on both systems around the timestamp, ST22 on the remote system for a matching dump with the same timestamp, and SMGW or ST04-adjacent gateway logs if the destination test itself times out.

Resolution path

If the EXCEPTIONS addition is missing, add SYSTEM_FAILURE = 1 and COMMUNICATION_FAILURE = 2 with appropriate MESSAGE text to the CALL FUNCTION statement and give the caller a real branch — retry, log, or fail gracefully with a business message. This is an ABAP code change requiring a change request and transport. If a remote dump is found in the target system's ST22, the fix belongs to whoever owns that remote object or its data; the local program only needs the exception handling added so the next occurrence does not repeat the same blind termination. If the destination is unreachable, Basis corrects the RFC destination configuration in SM59 or restarts the affected work processes and gateway — no code change needed. If it is an authorization gap, the missing authorization object is added to the RFC user's role on the remote system, typically a security/functional task with its own change process. If it is an interface mismatch, the calling and called interfaces are re-synchronized, which usually means transporting a corrected version of the function module or the calling program together.

The fix people try first (and why it fails)

The reflex is to wrap the CALL FUNCTION in EXCEPTIONS OTHERS = 9 or a blanket TRY/CATCH around CX_ROOT and swallow the error so the dump stops appearing. This makes the program limp forward with no data from the remote call and no visible failure, which is worse than the dump: the business process now silently produces incomplete results instead of stopping and telling someone. Adding EXCEPTIONS OTHERS without distinguishing SYSTEM_FAILURE from COMMUNICATION_FAILURE also hides which of the two actually happened, making the next diagnosis harder.

Prevention

Enforce a code review rule that every CALL FUNCTION ... DESTINATION statement declares SYSTEM_FAILURE and COMMUNICATION_FAILURE explicitly with meaningful handling, not a bare OTHERS catch-all. Monitor RFC destination availability proactively rather than discovering outages through a dump — a scheduled connectivity test against critical destinations catches a down system before a business program hits it. Where interfaces are shared across systems, version them and coordinate transports of caller and callee together to avoid signature drift.

Whose problem this is

First triage is ABAP: confirm whether EXCEPTIONS handling is missing in the calling program. If the root failure is a remote dump, ownership passes to whoever owns that remote function module. Basis owns RFC destination and gateway health. The handover note should state the RFC destination name, remote system ID, timestamp, whether a matching remote-side dump exists, and whether the calling statement already has SYSTEM_FAILURE/COMMUNICATION_FAILURE declared.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-abap-dumps/call-function-remote-errorERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.