How to pass data between programs using ABAP Memory ID?
Use the EXPORT ... TO MEMORY ID and IMPORT ... FROM MEMORY ID statements.
" ── Program A: store data into ABAP memory ──────────────────
DATA ld_bukrs TYPE bukrs VALUE '1000'.
EXPORT ld_bukrs TO MEMORY ID 'ZMY_BUKRS'.
" ── Program B (called in the same session): read it back ────
DATA ld_bukrs TYPE bukrs.
IMPORT ld_bukrs FROM MEMORY ID 'ZMY_BUKRS'.
IF sy-subrc = 0.
WRITE: / 'Received:', ld_bukrs. " → 1000
ELSE.
WRITE: / 'Key not found in ABAP memory.'.
ENDIF.
SY-SUBRC = 0 means the key was found and the value loaded. SY-SUBRC = 4 means the key does not exist yet.
For structures and internal tables:
DATA lx_header TYPE bkpf.
DATA lt_items TYPE TABLE OF bseg.
EXPORT lx_header lt_items TO MEMORY ID 'ZFI_DOC_DATA'.
" in the called program:
DATA lx_header TYPE bkpf.
DATA lt_items TYPE TABLE OF bseg.
IMPORT lx_header lt_items FROM MEMORY ID 'ZFI_DOC_DATA'.
Multiple variables can share one key — match each variable name exactly on import (resolved by name, not position).
Free the slot when done:
FREE MEMORY ID 'ZFI_DOC_DATA'.