Actualizar objetos de la memoria compartida

¿Cómo se actualizan los objetos de la memoria compartida?
 
Área de memoria compartida – Acceso de escritura
Al crear un área, el sistema crea una clase final global con el mismo nombre.
Para configurar un área o un acceso a un área existente, es necesaria una variable de referencia que pueda tipificar con la clase de área generada.
Esta referencia se utiliza como un handle para acceder al área.
Creación de instancia de área
Al crear una instancia de clase de área, el sistema crea una instancia del área en la memoria compartida.
El programa debe obtener además el handle para la instancia de área. Y realizar todas las operaciones mediante este handle.
DATA: gr_handle TYPE REF to CL_MY_AREA.
gr_handle = cl_my_area=>attach_for_write( ). 
Generación de objetos en la memoria compartida
Una vez que creamos la instancia de área, podemos crear los objetos en la memoria de objetos compartida. Para ello, utilizamos el suplemento AREA HANDLE para la sentencia CREATE OBJECT. Esta sentencia informa al sistema sobre la instancia de área donde debería crear los objetos.

Generación de objetos en la memoria compartida II
Otra opción es crear una instancia del objeto raíz desde el programa. Podemos crear los demás objetos en esta instancia de área a partir del constructor de la raíz sin asignar referencias (en este caso).
gr_root->go_cat = gr_catalogo.
Configuración del objeto raíz
Para poder direccionar los objetos que creemos en la instancia de área, asignamos el objeto raíz al atributo ROOT del manejador de área.
Para hacerlo, utilizamos el método SET_ROOT del manejador de área. Como consecuencia, cualquier programa de cualquier aplicación puede acceder a esta área.
Para ello, la aplicación solamente tiene que llamar una referencia en la instancia de área, para después, acceder inmediatamente a los objetos que contiene dicha instancia de área.

Liberación de bloqueo de escritura
El acceso de lectura de una instancia de área sólo es posible cuando tengamos desbloqueado el bloqueo de escritura. Para desbloquearlo utilizamos el método DETACH_COMMIT, que hereda la clase de área de la clase CL_SHM_AREA.
gr_handle->detach_commit( ).
Para aprender cómo se actualizan objetos de la memoria compartida, en un programa ejecutable actualizamos en la memoria compartida el objeto de la clase ZCL_CESTA_COMPRAS_LOGALI cambiando el Número de posición del documento de compras utilizando el área ZCL_CESTA_COMP_AREA_LOGALI.

  1. La solución en código fuente es la siguiente:
  2. En el Monitor de la transacción SHMA podemos visualizar el objeto actualizado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *