✒️ABAP POO El desarrollo de una aplicación de Objetos Compartidos
ABAP POO El desarrollo de una aplicación de Objetos Compartidos
DESARROLLO DE UN APLICACIÓN DE OBJETOS COMPARTIDOS – LECCION 4-5
CREACION DEL AREA
Se utiliza la transacción SHMA para crear y mantener las áreas de memoria. Para crear un área nueva ingresamos su nombre y presionamos CREAR
- Crear “el nombre del programa debe comenzar con Z o con Y”
- Guardar – “NOTA, esta clase se crea como una subclase de la clase estándar CL_SHM_AREA”
NOTA, el checkbox FINAL indica que la clase ZCL_SHM_ROOT_OBJECT es una clase final, es decir no tendrá subclases
- Dentro de la solapa ATRIBUTO creamos el atributo MENSAJE como un CHAR de 100 posiciones
CREACION DE UNA ISNTANCIA DE AREA
Para acceder a un área necesitamos crear una variable referenciada del tipo de la clase de área generada. Esta referencia sirve como un manejador para acceder al área. También necesitamos 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,
R_root TYPE REF TO zcla_shm_root_object.
Luego ejecutamos el método ATTACH_FOR_WRITE el cual realiza un bloqueo para escritura
R_handle = zcl_shm_area=>attach_for_write( ).
Una vez que la instancia ha sido creada, los objetos pueden ser creados en la memoria compartida. Para ello, utilizamos la adición AREA HANDLE en la sentencia CREATE OBJECT
CREATE OBJECT r_root AREA HANDLER r_handle.
Escribimos un texto dentro del atributo MENSAJE que previamente creamos y que será el que luego leeremos de memoria.
r_root->mensaje = ‘debe introducir un usuario y pass para continuar’.
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, utilizaremos el método SET_ROOT del manejador. Como resultado, cualquier programa puede acceder a esta área
r_handle->set_root (r_root).
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 ( ).
Luego de todos estos pasos, el código que generamos es el siguiente
ACCEDIENDO A UNA INSTACIA DEL AREA
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, utilizaremos 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,
r_root TYPE REF TO zcl_shm_root_object.
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 CL_SHM_AREA. Esto establece un bloqueo de lectura que impide que la instancia del área se borre durante el acceso
r_handle = zcl_shm_area=>attach_for_read ( ).
Imprimimos en pantalla el valor recuperado del mensaje tal como vemos a continuación
WRITE: / r_handle->root->mensaje.
Una vez que la lectura es completada, liberamos el bloque de lectura utilizando el metodo DETACH del manejador del area
r_handle->detach ( ).
Luego de todos los pasos anteriores, generamos el siguiente código
Para probar nuestra aplicación ejecutamos primero el programa ZOBJETOS_COMPARTIDOS_1 el cual realiza la escritura del contenido del atributo MENSAJE y luego ejecutamos el programa ZOBJETOS_COMPARTIDOS_2 el cual lee e imprime el contenido del atributo MENSAJE, produciendo la siguiente salida por pantalla.
 
 
 
Sobre el autor
Publicación académica de Cristian Darwin Arteaga Diaz, en su ámbito de estudios para el Máster ABAP POO.
Cristian Darwin Arteaga Diaz
Profesión: Abap Developer - Argentina - Legajo: GP81Q
✒️Autor de: 165 Publicaciones Académicas
🎓Cursando Actualmente: Master Funcional para Consultores ABAP
🎓Egresado de los módulos:
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Me considero una persona responsable, siempre estoy investigando y capacitandome para adquirir nuevos conocimientos, tengo el gusto de iniciarme en el mundo de abap como desarrollador, es genial.
Certificación Académica de Cristian Arteaga