LOAD_PROGRAM_NOT_FOUND¶
The runtime could not load a program or include that is required for execution.
ABAP tried to load a program, include, function group, or class pool that does not exist in the current system. The object was referenced at runtime — either directly called or included — but is absent from the repository.
Symptom¶
ST22 shows:
The "Variables in memory" section names the missing object. The call stack shows where the load was triggered.
Cause¶
| Root cause | Details |
|---|---|
| Incomplete transport | The calling program was transported but a dependent include or function group was left out of the transport request |
| Object not activated | The object exists but was never activated after creation or import |
| Wrong system | Development object exists in DEV but was never transported to QAS/PRD |
| Deleted object | The program was deleted but calling code was not updated |
| Name typo in dynamic call | CALL FUNCTION lv_fm_name where lv_fm_name has a typo |
Reproduce¶
" Dynamic call to a non-existent FM — lv_fm_name is a variable, not in parentheses
DATA lv_fm_name TYPE string VALUE 'Z_FM_THAT_DOES_NOT_EXIST'.
CALL FUNCTION lv_fm_name. " <-- LOAD_PROGRAM_NOT_FOUND
No parentheses for variable FM names
CALL FUNCTION lv_fm_name — the variable is passed directly. CALL FUNCTION (lv_fm_name) is the older obsolete syntax and also works, but the modern style without parentheses is preferred.
Fix¶
Step 1 — Identify the missing object from ST22
Open the dump in ST22. The short text names the missing object (e.g. ZPROG_MISSING or LFGRP_TOP).
Step 2 — Check if the object exists in the source system In development: open SE38 / SE37 / SE24 and search for the object name. If it exists in DEV but not in the target system, proceed to Step 3.
Step 3 — Transport the missing object In SE10, find the transport request containing the object, or create a new request and manually add the object. Release and import via STMS.
Step 4 — Activate after import
After transport, open the object in SE38 / SE24 and activate it (Ctrl+F3). Also activate the calling program to regenerate dependencies.
Step 5 — For dynamic calls, validate the name first and catch call exceptions
LOAD_PROGRAM_NOT_FOUND itself cannot be caught
This dump fires at kernel level when the function group cannot be loaded — it bypasses the ABAP exception mechanism entirely. TRY/CATCH will not prevent it. The SELECT check below only validates that the FM name exists in the catalog; if the function group program is missing or inactive, the dump still fires. The transport fix in steps 1–4 is the only real remedy.
DATA lv_fm_name TYPE string VALUE 'Z_MY_FUNCTION'.
" Step 1 — verify FM name exists in the function catalog
SELECT SINGLE funcname
FROM tfdir
INTO @DATA(lv_exists)
WHERE funcname = @lv_fm_name.
IF sy-subrc <> 0.
" FM name not found at all — wrong name or not transported
MESSAGE |Function module { lv_fm_name } not found in this system| TYPE 'E'.
RETURN.
ENDIF.
" Step 2 — call dynamically and catch all call-level exceptions
" CX_SY_DYN_CALL_ERROR is the parent of:
" CX_SY_DYN_CALL_ILLEGAL_FUNC — FM name invalid at call time
" CX_SY_DYN_CALL_PARAM_MISSING — required parameter not supplied
" CX_SY_DYN_CALL_ILLEGAL_TYPE — parameter type mismatch
TRY.
CALL FUNCTION lv_fm_name
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE |{ lv_fm_name } raised a functional exception| TYPE 'W'.
ENDIF.
CATCH cx_sy_dyn_call_error INTO DATA(lx).
MESSAGE lx->get_text( ) TYPE 'W'.
ENDTRY.
Check the transport object list
In SE10, open the transport request and check the object list. Include files (type REPS) and function modules (FUNC) must be explicitly listed — they are not automatically included when you transport the main program.
Prevention¶
- When transporting programs with includes or function groups, always verify the transport object list includes all dependent objects.
- After any transport import, run a syntax check (
SE38 → Program → Check → Syntax) on affected programs. - For dynamic FM calls, always validate the FM name against
TFDIRand wrap the call in a TRY/CATCH.
See also¶
LOAD_PROGRAM_CLASS_MISMATCH— related dump when class version mismatches after transport- Transaction SE10 — transport organizer
- Transaction STMS — transport management
- Transaction ST22 — ABAP runtime error analysis