Back to Shorts

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'.