✒️ABAP POO / El desarrollo de una aplicación de Objetos Compartidos Por Jeferson Pena Curvelo
ABAP El desarrollo de una aplicación de Objetos Compartidos

Introducción a los Objetos Compartidos:
Creación del área: Se debe utilizar la transacción SHMA para crear y mantener las áreas de memoria. Para crear un área nueva se debe ingresar su nombre el cual debe comenzar con "Z" o con "Y" y presionar crear.
Se debe agregar una descripción para el área y la clase raíz (Root Class).
Presionar el botón guardar y se creara la clase raíz. Esta clase se creara como una subclase de la clase estándar creada inicialmente.
En la clase Raíz se debe seleccionar la opción Apto memoria compartida.
Con el Checkbox "FINAL" indica que la clase es la última. Es decir no tendrá subclases.
Finalmente dentro de la pestaña/solapa Atributos se crea el atributo "Mensaje" podría ser un CHAR de 100 posiciones.
Las Áreas y por lo tanto los objetos dentro de las áreas no tienen un mandante o cliente por defecto. Sin embargo podemos especificar un área como dependiente de mandante. En las áreas dependientes de mandante, los métodos de la clase del área que accedan a la instancia de la clase utilizan el mandante activo por defecto. Podemos usar el parámetro de IMPORTING-CLIENT para acceder a otro mandante de forma explícita.
Creación de una instancia del área:
Para acceder a un área necesitaremos crear una variable referenciada del tipo de la clase de área generada. Esta referencia sirve como un manejador para acceder al área. También se necesita crear una variable referenciada del tipo de la clase raíz.
Cuando instanciamos la clase de área, una instancia de la clase es creada en memoria compartida. El programa utiliza un manejador para esta instancia del área; todas las futuras operaciones serán realizadas utilizando este manejador.
DATA: r_handle TYPE REF TO zcl_shm_area, (Clase Estándar)
r_root TUPE REF TO zcl_shm_root_object. (Clase Raíz).
Luego ejecutamos el método ATTACH_FOR_WRITE el cual realiza un bloqueo para escritura.
r_handle = zcl_shm_area(Clase Estándar) =>attach_for_write().
Una vez que la instancia ha sido creada, los objetos pueden ser creados en la memoria compartida. Para ello, se utiliza la adición AREA HANDLE en la sentencia CREATE OBJECT.
Se escribe el texto dentro el atributo MENSAJE que se había creado previamente y que será el que luego se leerá de memoria.
r_root->mensaje = 'texto'.
Para poder direccionar a los objetos creados en la instancia del área tenemos que asignar el objeto raíz al atributo ROOT del manejador del área. Para ello, se utiliza el moto SET_ROOT del manejador. Como resultado, cualquier programa puede acceder a este área.
r_handle->set_root(r_root).
Para que cualquier programa pueda acceder al área la aplicación solo tiene que buscar una referencia a la instancia de área y entonces podrá acceder inmediatamente a los objetos contenidos en esa instancia del área.
Finalmente, el acceso a la lectura de la instancia del área no es posible hasta que el bloqueo de escritura ha sido liberado. Para ello, se utiliza el método DETACH_COMMIT.
r_handle->detach_commit().
Accediendo a una instancia del área:
Una vez que la instancia ha sido creada, cualquier programa puede acceder a ella. Los programas de lectura tendrán que implementar los siguientes pasos:
Al igual que en la escritura, se debe utilizar una variable referenciada del tipo de la clase del área. Esta variable se utiliza como un manejador para la instancia del área que será accedida.
DATA: r_handle TYPE REF TO zcl_shm_area, (Clase Estándar)
r_root TUPE REF TO zcl_shm_root_object. (Clase Raíz).
El programa también tiene que obtener el manejador para la instancia del área. Esto lo realiza utilizando el método ATTACH_FOR_READ que es proporcionado por la clase estándar. Esto establece un bloqueo de lectura que impide que la instancia del área se borre durante el acceso.
r_handle = zcl_shm_area(Clase Estándar) =>attach_for_read().
Una vez que la lectura es completada, se libera el bloqueo de lectura utilizando el método DETACH del manejador del área.
r_handle->detach().
 
 
 
Sobre el autor
Publicación académica de Jeferson Jos Pena Curvelo, en su ámbito de estudios para el Master ABAP Orientado a Objetos.
Jeferson Jos Pena Curvelo
Chile - Legajo: PD49W
✒️Autor de: 180 Publicaciones Académicas
🎓Egresado de los módulos:
- Master ABAP Orientado a Objetos
- Master ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
























