sapdev logo background
sapdev logo sapdev logo
Comments

SAP SHM AREA CONSTRUCTOR CLASS documentation, setup help and example usage



Return to SAP documentation index


ARTICLE

Shared Objects - Area Constructor Class
An area constructor class is a global class with a freely selectable name, which implements the
IF_SHM_BUILD_INSTANCE interface. An area constructor can be implemented in the BUILD interface method.
An area constructor class can be
assigned to an area in
transaction SHMA . This is always necessary if the area is to be built automatically by calling the area constructor, in other words if the BUILD_KIND and REFESH_TIME components of the
PROPERTIES structure of class
CL_SHM_AREA are filled accordingly. If an area is not to be built automatically, an area constructor class can be specified for the explicit area constructor call using the area class's BUILD method.

Structure of an Area Constructor
The following structure is recommended for the area constructor implemented in the BUILD interface method:
First, the area constructor has to use the ATTACH_FOR_WRITE method to create an area handle with a write lock for the area instance that is passed in the INST_NAME parameter. Since the automatic area constructor call cannot ensure that the write lock can be set either, all exceptions have to be intercepted and forwarded to the caller of the constructor by triggering interface exception
CX_SHM_BUILD_FAILED . This should pass the original exception to the PREVIOUS parameter of the constructor of CX_SHM_BUILD_FAILED
.

Just like whenever a new area instance version is created, a root object also has to be defined in the area constructor using the SET_ROOT
method.

The area instance version can then be built, that is, objects are stored in the shared memory.

The area handle that is created has to be released again using the
DETACH_COMMIT method.

If the area constructor was called automatically, a database commit has to be triggered when a transactional area is built.
In an area constructor, no statements can be used that exit the current internal session (such as SUBMIT
, CALL TRANSACTION , CALL SCREEN , MESSAGE for message types "W", "I", "E", and so on).

Example
You can use the following implementation as a template for your own implementations.
CLASS area_constructor IMPLEMENTATION.

METHOD if_shm_build_instance~build.

DATA:
my_handle TYPE REF TO area
my_data TYPE REF TO area_root_class
my_except TYPE REF TO cx_root.

TRY.
my_handle = cl_my_area=>attach_for_write( inst_name ).
CATCH cx_shm_error INTO my_except.
RAISE EXCEPTION TYPE cx_shm_build_failed
EXPORTING previous = my_except.
ENDTRY.

CREATE OBJECT my_data AREA HANDLE my_handle.
my_handle->set_root( my_data ).

... " code to build the area instance

TRY.
my_handle->detach_commit( ).
CATCH cx_shm_error INTO my_except.
RAISE EXCEPTION TYPE cx_shm_build_failed
EXPORTING previous = my_except.
ENDTRY.

IF invocation_mode = cl_shm_area=>invocation_mode_auto_build.
CALL FUNCTION 'DB_COMMIT'.
ENDIF.

ENDMETHOD.

ENDCLASS.
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved




SHM_AREA_CLASS
SHM_AREA_DYNAMIC_PROPERTIES




comments powered by Disqus