Concepto – Memoria compartida
La memoria compartida es un área de la memoria de un servidor de aplicación al que pueden acceder todos los programas ABAP que se ejecutan en el mismo servidor.
Antes de que SAP introdujera los objetos compartidos, las sentencias ABAP debían utilizar las sentencias EXPORT e IMPORT con los suplementos HARED BUFFER y SHARED MEMORY para acceder a esta área de la memoria.
Las instancias de clases estaban activas exclusivamente en el modo interno de un programa ABAP.
Con la introducción de los objetos compartidos en SAP NetWeaver 2004, la memoria compartida se ha ampliado con Memoria de objetos compartidos, donde el usuario puede grabar los objetos compartidos.
Puedemos grabar objetos compartidos en áreas de la memoria compartida.
Grafico 1: Modelo de memoria de un servidor de aplicaciones.
Objetos compartidos
Algunas de sus características son:
- Grabación en la memoria intermedia de todos los programas de datos que se leen con frecuencia, pero raramente se escriben.
- Los accesos de lectura concurrentes son admitidos por los objetos compartidos.
- El acceso es controlado por un mecanismo de bloqueo.
- Los datos se graban como atributos de objetos.
- Los cuellos de botella de memoria derivan en errores en tiempo de ejecución y debemos identificarlos.
Los accesos de escritura no deben ser frecuentes debido a que la escritura de datos en el área de objetos compartidos consume mucho rendimiento.
En concreto, deseamos optimizar el tiempo de ejecución, lo cual no sería posible en caso de que el acceso de lectura se realizara con mayor frecuencia.
Un requisito previo para grabar un objeto en la memoria compartida es que debe definir la clase del objeto con el suplemento SHARED MEMORY ENABLED de la sentencia CLASS. También podemos seleccionar el atributo SHARED MEMORY ENABLED en el CLASS BUILDER.
Para entender mejor los conceptos creamos la clase global ZCL_CESTA_COMPRAS_LOGALI apta para la memoria compartida.
En la encapsulación pública creamos el atributo DOC_COMPRAS de tipo ME_EKPO.
Pasos para resolver la petición:
- En la transacción Generador de Clases informa en campo Tipo objeto con el nombre de la clase y continuamos utilizando el botón Crear.
- Rellenamos el campo descripción
- Asignamos el paquete de desarrollo y la orden de transporte.
- En la pestaña Propiedades, activamos la opción Apto memoria compartida
- En la pestaña atributos, creamos el atributo DOC_COMPRAS de tipo ME_EKPO.
- En el código fuente de la clase se puede visualizar en la definición de la clase SHARED MEMORY ENABLED.