SAP NetWeaver AS ABAP Release 740, ©Copyright 2014 SAP AG. All rights reserved.
ABAP Keyword Documentation → ABAP − Reference → Creating Objects and Values → CREATE OBJECT → CREATE OBJECT - AREA HANDLE →Creating a Class Instance as a Shared Object
The example demonstrates how an object is created in an area instance version.
Source Code
REPORT demo_create_shared_object.
CLASS class DEFINITION
SHARED MEMORY ENABLED.
PUBLIC SECTION.
DATA attr TYPE string.
METHODS set_attr IMPORTING text TYPE string.
ENDCLASS.
CLASS class IMPLEMENTATION.
METHOD set_attr.
attr = text.
ENDMETHOD.
ENDCLASS.
CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
METHOD main.
DATA: handle TYPE REF TO cl_demo_area,
root TYPE REF TO cl_demo_root,
exc TYPE REF TO cx_shm_attach_error,
oref TYPE REF TO class.
TRY.
handle = cl_demo_area=>attach_for_write( ).
CREATE OBJECT root AREA HANDLE handle.
handle->set_root( root ).
CREATE OBJECT root->oref AREA HANDLE handle TYPE class.
oref ?= root->oref.
oref->set_attr( `String in shared memory` ).
CLEAR oref.
handle->detach_commit( ).
CATCH cx_shm_attach_error INTO exc.
cl_demo_output=>display_text( exc->get_text( ) ).
LEAVE PROGRAM.
ENDTRY.
TRY.
handle = cl_demo_area=>attach_for_read( ).
oref ?= handle->root->oref.
cl_demo_output=>display_data( oref->attr ).
CLEAR oref.
handle->detach( ).
CATCH cx_shm_attach_error INTO exc.
cl_demo_output=>display_text( exc->get_text( ) ).
LEAVE PROGRAM.
ENDTRY.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo=>main( ).
Description
The AREA HANDLE addition is used to create an instance of the local class class in an area instance version of area CL_DEMO_AREA as a shared object. The generically typed attribute oref of area root class CL_DEMO_ROOT is used a reference variable. The attr attribute of the object is assigned a value when its set_attr method is called.
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.