CALL_FUNCTION_PARM_MISSING — CALL_FUNCTION_PARM_MISSING Dump Analysis
CALL_FUNCTION_PARM_MISSING fires when a CALL FUNCTION statement, local or remote, is bound at runtime against an interface that does not match what the caller supplies. A mandatory IMPORTING, EXPORTING, CHANGING or TABLES parameter has no value, usually because the function module's signature changed after the caller was written, or the two sides of an RFC call run different code versions.
Covers the runtime binding failure between a CALL FUNCTION statement and the current interface of its target function module, with emphasis on the version-mismatch and transport-sequencing causes that dominate in practice. Walks through the ST22 fields that identify the missing parameter and the calling location, then branches the fix by whether the mismatch is local, RFC, or dynamically built.
Published 16 Sept 2026· 1,230 words
What the dump means
CALL_FUNCTION_PARM_MISSING is a runtime termination raised when the kernel binds the actual parameters of a CALL FUNCTION statement to the current formal interface of the target function module and finds a mandatory parameter with no value supplied, or finds the caller referencing a parameter that no longer exists on the target side. This binding check runs before the function module's own code executes, so nothing inside the function body is at fault; the mismatch is purely between what the caller passes and what the callee's interface, as currently defined in the system being called, requires. For local calls this means the interface changed since the caller was compiled or generated. For remote calls through an RFC destination it means the two systems hold different versions of the same function module. The dump is not catchable through the normal EXCEPTIONS addition because the violation is detected outside the function module's execution.
Root causes that actually produce it
In descending order of how often each actually turns up in a live system.
- Interface changed after the caller was written or transported: a new mandatory parameter was added to a function module, custom or SAP-delivered, and existing callers were never updated or regenerated to supply it.
- RFC across systems on different release or support package levels: caller and callee run different code versions of the same remote-enabled function module, one side has a parameter the other does not, and the RFC layer detects the mismatch at call time rather than silently ignoring it.
- Dynamically built parameter tables: code using CALL FUNCTION with a PARAMETER-TABLE addition, or constructing EXPORTING, IMPORTING or CHANGING entries programmatically from an internal table, where the generation logic omits an entry for a parameter that is mandatory on the target.
- Transport sequencing error: the function module's interface change and the corresponding adjustment to its callers travel in separate transport requests, and the import sequence in the target system applies one without the other.
- Wrapper or proxy generation out of date: a generated BAPI wrapper, interface class, or proxy that calls the function module through an RFC destination was generated against an older or newer signature and never regenerated after the remote side changed.
- Copy-paste of a working CALL FUNCTION statement onto a different target: the developer swaps the function module name but does not add the additional mandatory parameter the new target requires.
What to inspect in ST22
Read the dump top to bottom before touching any code.
- Short text and error analysis: names the function module and the specific parameter that is missing, pointing directly at which interface to open first.
- Trigger location: the calling program, include and exact line number of the CALL FUNCTION statement; open this in SE38 or SE80 to see which parameters the caller actually supplies.
- Call stack: shows whether the call is local or issued through an RFC destination, and reveals any higher-level BAPI or wrapper that triggered it.
- SYST fields and message variables: on remote calls these can carry the destination name, useful for identifying which system holds the mismatched version.
- SE37 on the target function module: display the current interface and mark which parameters have no default and no optional flag, since those are the ones that must be supplied.
- Where-used list from SE37: find every caller of the function module and confirm each one supplies the newly mandatory parameter.
- SM59 for the RFC destination, when the call is remote, to confirm the target system and check whether a version mismatch across the connection is plausible.
- Transport logs in SE03 or STMS to confirm whether the interface change and the caller adjustment moved through the landscape together.
Resolution path
If a custom function module gained a new mandatory parameter, the cleanest fix is to make it optional with a sensible default at the interface level, or adjust every caller found in the where-used list to supply it, and transport the function module and its callers in the same request; this requires a change request and a coordinated transport. If the mismatch is an RFC call between systems on different releases, align the destination's target version with the calling program's expectation, or make the newer parameter optional so older callers keep working; this needs changes on both systems, not a workaround on one side alone. If a dynamically built parameter table is the cause, fix the generation logic to always populate mandatory entries, defaulting the value when the caller has nothing meaningful to send, and retest every caller of the dynamic builder. If transport sequencing is the cause, re-import in the correct order or, going forward, bundle the interface change and every caller adjustment into a single transport request so they cannot land out of order again.
The fix people try first (and why it fails)
The reflex is to wrap the CALL FUNCTION statement in EXCEPTIONS OTHERS = 1 or in a TRY and CATCH block, expecting the dump to become a handled exception. It does not. The interface binding check happens before the function module's own body, and before any catchable exception logic inside it, is reached, so PARM_MISSING is not one of the system exceptions listed in the EXCEPTIONS addition and not a class-based exception raised from within the function. The program terminates at the exact same line as before, the added handling code is dead weight, and the actual mismatch between what the caller sends and what the interface now requires is never touched.
Prevention
Treat every function module interface, and especially remote-enabled ones, as a contract: never add a mandatory parameter to an existing signature, always add new parameters as optional with a default value so existing callers keep working unchanged. Before changing an interface, run the where-used list and update every caller in the same transport request. For cross-system RFC scenarios, document each destination with the release of the target system and retest the call after any support package upgrade on either side of the connection.
Whose problem this is
ABAP development owns the fix, since the root cause is a mismatch between caller code and callee interface, both under development control. Basis involvement is limited to confirming the RFC destination's target system and release when the call crosses systems. The handover note should state the function module name, the exact missing parameter, the calling program and line number, whether the call is local or remote with the destination name, and the release of both systems if remote.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-abap-dumps/call-function-parm-missingERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.