🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP POO El desarrollo de una aplicación de Objetos Compartidos

ABAP POO El desarrollo de una aplicación de Objetos Compartidos

ABAP POO El desarrollo de una aplicación de Objetos Compartidos

DESARROLLO DE UNA APLICACIÓN DE OBJETOS COMPARTIDOS

CREACIÓN DEL ÁREA

Utilizaremos la transacción SHMA para crear y mantener las áreas de memoria

Para crear un área nueva ponemos su nombre y pulsamos CREAR ej: ZCL_SHM_AREA

NOTA: El nombre del área debe comenzar con Z o con Y.

Introducimos una descripción para el área. Ej: Area de Test

Indicamos la clase raíz (ROOT CLASS) ej: ZCL_SHM_ROOT_OBJECT

En propiedades fijas: CON CREACION DE VERSIONES.

Pulsamos Guardar y se creará la clase raíz.

Esta clase se creará como una subclase de la clase estándar CL_SHM_AREA.

En clase: ZCL_SHM_ROOT_OBJECTY.

Descripción: Clase Raíz.

Creac.Instancia: Publico.

Tipo de clase: Clase ABAP habitual

Tic FINAL marcado.

Nota: el cehckbox FINAL indica que la clase ZCL_SHM_ROOT_OBJECT es una clase final, es decir no tendrá subclases.

Pulsamos grabar

En la pestaña propiedades:

Marcamos APTO MEM.COMPARTIDA

En la pestaña ATRIBUTOS:

Creamos el atributo MENSAJE como un CHAR de 100 visibilidad pública.

Las áreas y por lo tanto los objetos de dentro de las áreas no tienen mandante ni cliente por defecto. Sin embargo podemos especificar un área como dependiente 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 utilizar el parámetro CLIENT de importin para especificar el mandante de forma explícita.

CREACIÓN DE UNA INSTANCIA DEL 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.

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 operaciones serán realizadas utilizando este manejador.

DATA: r_handle TYPE REF TO zcl_shm_area,

………r_root TYPE REF TO zcl_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 HANDLE 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 password 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 ).

Para que cualquier programa pueda acceder al área, la aplicación solo tiene que buscar una referencia a la instancia de área y podrá acceder inmediatamente a los objetos contenidos en esa instancia del área.

El acceso a la lectura de la instancia del área no es posible hata que el bloqueo de escritura ha sido liberado. Para ello, utilizaremos el método DETACH_COMMIT.

r_handle->detach_commit ( ).

El código completo sería este:

REPORT zobjetos_compartidos_1.

DATA: r_handle TYPE REF TO zcl_shm_area,

r_root TYPE REF TO zcl_shm_root_object.

r_handle = zcl_shm_area=>attach_for_write( ).

CREATE OBJECT r_root AREA HANDLE r_handle.

r_root->mensaje = 'Debe introducir un usuario y password para continuar'.

r_handle->set_root( r_root ).

r_handle->detach_commit( ).

ACCEDIENDO A UNA INSTANCIA DEL AREA

Una vez creada la instancia, cualquier programa puede acceder a ello.

Los programas de lectura tendrán que implementar los siguientes pasos:

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 se 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

WRITE:/ r_handle->root->mensaje.

Una vez completada la lectura, liberamos el bloqueo de lectura mediante el método DETACH del manejador del área.

r_handle->detach( ).

Este sería el codigo completo con todos los pasos:

REPORT zobjetos_compartidos_2. DATA: r_handle TYPE REF TO zcl_shm_area, r_root TYPE REF TO zcl_shm_root_object. r_handle = zcl_shm_area=>attach_for_read( ). WRITE:/ r_handle->root->mensaje. r_handle->detach( ).

Para probar, primero se ejecuta ZOBJETOS_COMPARTIDOS_1, luego ejecutamos ZOBJETOS_COMPARTIDOS_2.


 

 

 


Sobre el autor

Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para el Máster ABAP POO.

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "El desarrollo de una aplicación de Objetos Compartidos" de la mano de nuestros alumnos.

Desarrollo de una aplicación de Objetos Compartidos Trx. SHMA Crear y mantener las areas de memoria. El nombre del area debe comenzar con Z o con Y. Esta clase creara una subclase llamada CL_SHM_AREA. En la clase raiz ZCL_SHM_ROOT_OBJECT, seleccionamos Apto memoria compartida. El metodo ATTACH_FOR_WRITE realiza el bloqueo para escritura, esto realiza un bloquo de lectura, que impide que se borre la instancia del area durante el acceso. Liberamos el bloque mediante el metodo DETACH. Crear obejtos mediante la sentencia CREATE OBJECT ------- AREA HANDLE Liberar bloqueo de escritura mediante el metodo DETACH_COMMIT. metodo para obtener el manejador de instancia ATTACH_FOR_READ

Acceder a esta publicación

Creado y Compartido por: Juan Jose Pujol Diaz

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Transaccion SHMA para crear el area. Durante la creacion asignamos la Clase Raiz. Al guardar se creara la clase raiz siendo subclase de CL_SHM_AREA donde habilitamos el check de memoria compartida. Para crear una instancia del area: Se crean dos vairables una del tipo ZCL_SHM_AREA (area) y otra ZCL_SHM_ROOT_OBJECT (Clase Raiz). Ejecutamos el metodo attach_for_write de la primera clase para abrir modo escritura.Y para la creacion de objetos en el area se utiliza la adicion AREA HANDLE mas el nombre de la variable referenciada. Utilizamos SET_ROOT del manejador para direccionar los objetos a la instancia del area. Luego ejecutamos el metodo del manejador de instancia DETACH_COMMIT para permitir la lectura por otros usuarios. Para acceder a una...

Acceder a esta publicación

Creado y Compartido por: Regulo Argotte

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

CREACION DEL AREA - Transacción SHMA - Ingresamos el nombre (debe empezar con Z o Y) y presionar botón crear - Introducimos una descripción del área y la clase raíz (Root Class) - Al presionar guardar se creara la clase raíz, que será una subclase de CL_SHM_AREA - En la clase raíz ZCL_SHM_ROOT_OBJECT seleccionaremos la opción Apto memoria compartida - Luego se creamos un atributo en la pestaña del mismo nombre CREACION DE UNA INSTANCIA DE AREA Para acceder a un área necesitaremos crear una variable referenciada del tipo de la clase del área generada, así como una variable referenciada del tipo de clase raíz. Luego se ejecuta el método ATTACH_FOR_WRITE,...

Acceder a esta publicación

Creado y Compartido por: Julio Villalta / Disponibilidad Laboral: FullTime

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!