Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Creating Objects →  CREATE DATA →  CREATE DATA - AREA HANDLE 

Creating a Data Object as a Shared Object

The example demonstrates how a data object is created in an area instance version.

Other versions: 7.31 | 7.40 | 7.54

Source Code

    DATA: handle TYPE REF TO cl_demo_area,
          root   TYPE REF TO cl_demo_root,
          exc    TYPE REF TO cx_shm_attach_error.

    FIELD-SYMBOLS <fs> TYPE any.

    TRY.
        handle = cl_demo_area=>attach_for_write( ).
        CREATE OBJECT root AREA HANDLE handle.
        handle->set_root( root ).
        CREATE DATA root->dref AREA HANDLE handle TYPE string.
        ASSIGN root->dref->* TO <fs>.
        <fs> = `String in shared memory`.
        handle->detach_commit( ).
      CATCH cx_shm_attach_error INTO exc.
        MESSAGE exc TYPE 'I' DISPLAY LIKE 'E'.
        LEAVE PROGRAM.
      CATCH cx_shm_external_type.
        MESSAGE 'Type cannot be used' TYPE 'I' DISPLAY LIKE 'E'.
        LEAVE PROGRAM.
    ENDTRY.

    TRY.
        handle = cl_demo_area=>attach_for_read( ).
        ASSIGN handle->root->dref->* TO <fs>.
        MESSAGE <fs> TYPE 'I'.
        handle->detach( ).
      CATCH cx_shm_attach_error INTO exc.
        MESSAGE exc TYPE 'I' DISPLAY LIKE 'E'.
        LEAVE PROGRAM.
    ENDTRY.

Description

The AREA HANDLE addition is used to create an anonymous data object of type string in an area instance version of area CL_DEMO_AREA as a shared object. The generically typed attribute dref of area root class CL_DEMO_ROOT is used as a reference variable. A field symbol is used to dereference the data reference and assign a value to the anonymous data object.

Once write access is completed using the DETACH_COMMIT method, read access takes place, which demonstrates how the object is accessed in the shared memory. This type of access can also take place in a different program, provided that the area instance version exists in the shared memory.