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

Add a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다