✒️La memoria en SAP y en ABAP
La memoria en SAP y en ABAP
La memoria en SAP y ABAP
A veces mientras ejecutamos un programa u objeto ABAP, necesitamos de datos que se obtengan en otro programa ABAP que se ejecutò previamente.
Es posible solucionar esto pasando paràmetros de un programa a otro, si ambos objetos ABAP son programas. Otra cosa que puede hacerse es pasar los datos entre programas.
Cuando hablamos de memoria debemos distinguir entre:
a.-La memoria de SAP
b.-La memoria de ABAP
La memoria de ABAP es una memoria local y es muy limitada, ya que solo se puede acceder a ella dentro de una sesiòn interna y los programas que se ejecutan fuera de la sesiòn no pueden leer ni escribir en esta memoria. Cuando hablamos de una sesiòn interna nos referimos a la sesiòn de un usuario de SAP en el sistema.
En cambio la memoria de SAP es una memoria global y es accesible para todos los programas que se ejecutan en esa sesiòn, asì como en las diferentes sesiones principales. La memoria de SAP se puede utilizar para pasar datos de un programa a otro, ya sea dentro de una sesiòn o en otra sesiòn.
El uso principal de la memoria ABAP es hacer que los datos sean accesibles para mùltiples programas dentro de la misma sesiòn. Y en lo que respecta a la memoria de SAP tambièn hace que los datos estèn disponibles mùltiples sesiones.
Cuando se trata de la memoria SAP utilizaremos las sentencias SET PARAMETER ID y GET PARAMETER ID para intercambiar datos, de modo que con la sentencia SET vamos a asignar valores a los ID de paràmetros de los campos de las pantallas de SAP y con la sentencia GET vamos a recuperar los valores de los ID de paràmetros de los campos de las pantallas de SAP.
Por otros lados, los programas ABAP pueden acceder a la memoria ABAP dentro de la misma sesiòn interna utilizando las sentencias IMPORT y EXPORT. Los datos dentro de esta memoria permanecen intactos durante un secuencia de llamadas a programas.
Diferencias entre memoria SAP y memoria ABAP
Memoria SAP es global y memoria ABAP es local.
Todas las sesiones de SAP GUI de todos los usuarios de SAP tienen acceso a la memoria de SAP, y todos los programas dentro de una misma sesiòn tienen acceso a la memoria de ABAP.
La memoria de SAP hace que los datos estèn disponibles en la sesiòn principal, y la memoria de ABAP hace que los datos estèn disponibles en mùltiples sesiones dentro de la misma sesiòn.
En la memoria de SAP los datos se pueden intercambiar utilizando los paràmetros GET /SET, en la memoria de ABAP los datos se pueden intercambiar utilizando las sentencias EXPORT/IMPORT.
Memoria de SAP
La sentencia SET PARAMETER ID se utiliza para el envìo de paràmetros en la llamada a una transacciòn.
La sintaxis de la sentencia SET PARAMETER ID es esta:
SET PARAMETER ID <pid> FIELD <f>.
Con la ejecuciòn de la sentencia anterior escribimos el contenido del campo F en la memoria global de SAP del usuario bajo el ID pid. Los ID de paràmetro pueden tener hasta 20 caracteres.
Los valores escritos en la memoria SAP se conservan incluso cuando el usuario sale del programa.
Como se utiliza la sentencia SET PARAMETER ID?
Accedemos desde un programa a la transacciòn estàndar VA01 a travès de la cual se crean en el sistema SAP los pedidos de los clientes. En la pantalla inicial de la transacciòn VA01 es obligatorio el ingreso del campo Clase de pedido. Si seleccionamos el campo Clase de pedido y presionamos la tecla F1 vamos a visualizar la documentaciòn del campo de la pantalla. Si hacemos clic en el botòn de informaciòn tècnica tal como vemos a continuaciòn. Se visualizan los datos tècnicos y entre ellos encontramos que el ID de paràmetro para el campo Clase de pedido que es AAT.
Vamos a utillizar el ID de paràmetro que acabamos de visualizar para ejecutar la transacciòn VA01, completar la pantalla inicial de la transacciòn y acceder directamente a la segunda pantalla de la transacciòn. Para cumplir con este objetivo creamos del programa ABAP ZTEST_SET_PARAMETER.
La sentencia SER PARAMETER ID 'AAT' FIELD 'CMR' asigna al ID de paràmetro 'AAT' el valor 'CMR'.
La sentencia CALL TRANSACTIOM ejecuta la transaccion VA01 y el agregado de la clàusula AND SKIP FIRST SCREEN evita mostrar la primera pantalla de la transacciòn.
Si ejecutamos el programa ZTEST_SET_PARAMETER vamos a ver que efectivamente acceder directamente a la segunda pantalla de la transacciòn VA01, habiendo cargado en la primera pantalla el valor CMR para el campo Clase de pedido.
La sentencia GET PARAMETER ID se utiliza para transferir el valor almacenado en un ID de paràmetro de la memoria SAP a un campo o variable.
La sintaxis de la sentencia GET PARAMETER ID es la siguiente:
GET PARAMETER ID <pid> FIELD <f>.
La memoria de ABAP
En ABAP existen sentencias que nos permiten manipular fàcilmente los datos que subimos y bajamos de la memoria.
Para subir o exportar datos a la memoria ABAP vamos a utilizar la sentencia EXPORT tal como mostramos en la siguiente imagen:
EXPORT <campo> TO MEMORY ID <id_unico>.
El ID que se utiliza debe ser ùnico ya que identifica a ese dato dentro de la memoria ABAP.
Para bajar o importar los datos de la memoria ABAP utilizamos la sentencia IMPORT de esta manera:
IMPORT <campo> FROM MEMORY ID <id_unico>.
Se pueden exportar e importar tanto variables, como estructuras o tablas internas a la memoria ABAP.
Luego de bajar los datos de la memoria, es conveniente liberar el àrea de memoria utilizada y esto lo hacemos con la sentencia FREE MEMORY de la siguiente manera:
FREE MEMORY ID 'Z_ESTADO'.
Para que la exportaciòn e importaciòn de datos funcione correctamente se debe utilizar la misma sesiòn de memoria o ejecuciòn.
Ahora bien si deseamos pasar datos entre programas entonces podemos utilizar la sentencia SUBMIT para poder llamar a un programa dentro de la ejecuciòn de otro programa.
Luego en el programa que importa los datos ejecutaremos la sentencia IMPORT tal como vemos aquì:
IMPORT v_estado_usu FROM MEMORY ID 'Z_ESTADO'.
 
 
 
Sobre el autor
Publicación académica de Ariel Martucci, en su ámbito de estudios para la Carrera Consultor ABAP.
Ariel Martucci
Profesión: Contador Publico - Argentina - Legajo: PJ45S
✒️Autor de: 78 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Un contador público de mediana edad con ganas de seguir aprendiendo carreras nuevas. estudiante avanzado de inglés, preparando mi first certificate, y al mismo tiempo involucrándome en programación.
Certificación Académica de Ariel Martucci