2025-09-08
[SAP/ABAP] SHARED MEMORY, export and import memory id 안될 때
세션이 같을때만 export import id가 먹혀서 세션이 다를 경우에는 shared memory 밖에 답이 없다고 한다.
이거전에 class->properties->shared memory-enabled 체크해야하고
t-code: shma에서 shared object를 만들어야함
“shared memory 보내는 쪽
DATA : op_ref TYPE REF TO cx_root,
msg_text TYPE string.
DATA: v_area_handle TYPE REF TO zshare_area,
v_root TYPE REF TO zscwm_cl_share_memory.
FIELD-SYMBOLS <fs_data> TYPE any.
CONCATENATE ZTESTINTO lv_para SEPARATED BY ';'.
TRY.
v_area_handle = zshare_area=>attach_for_write( ).
CREATE OBJECT v_root AREA HANDLE v_area_handle.
v_area_handle->set_root( v_root ).
*dref is the attribute created in root class.
CREATE DATA v_root->dref AREA HANDLE v_area_handle TYPE string.
ASSIGN v_root->dref->* TO <fs_data>.
<fs_data> = lv_para.
v_area_handle->detach_commit( ).
CATCH cx_shm_external_type.
CATCH cx_shm_attach_error.
CATCH cx_root INTO op_ref. "위에서 오류 못 잡을 경우
msg_text = op_ref->get_text( ).
CLEANUP.
CLEAR msg_text.
ENDTRY.
“shared id 받는 쪽
DATA V_AREA_GET TYPE REF TO ZSHARE_AREA.
DATA : OP_REF TYPE REF TO CX_ROOT,
MSG_TEXT TYPE STRING.
TRY.
V_AREA_GET = ZSHARE_AREA=>ATTACH_FOR_READ( ).
ASSIGN V_AREA_GET->ROOT->DREF->* TO <FS_GET>.
LV_PARA = <FS_GET>.
V_AREA_GET->DETACH( ).
V_AREA_GET->FREE_AREA( ). "clear
CATCH CX_SHM_ATTACH_ERROR.
CATCH CX_ROOT INTO OP_REF. "위에서 오류 못 잡을 경우
MSG_TEXT = OP_REF->GET_TEXT( ).
CLEANUP.
CLEAR MSG_TEXT.
ENDTRY.