✒️La memoria en SAP y en ABAP
La memoria en SAP y en ABAP
LECCION 9. LA MEMORIA EN ABAP:
· Existen varias formas de solucionar esto, una de ellas es pasando parámetros de un programa a otro, si es que ambos objetos son programas. Otra opción es utilizar la memoria para pasar los datos.
· Para subir datos a memoria vamos a utilizar la sentencia EXPORT tal como mostramos a continuación.
EXPORT <valor> TO MEMORY ID <id_unico>.
Ejemplo:
*exporto a memoria el estado del usuario
EXPORT v_estado_usu TO MEMORY ID ‘Z_ESTADO’
IF SY-SUBRC NE 0.
MESSAGE e000(Z1) WITH ‘ERROR AL EXPORTAR’
END IF
IMPORT <valor> FROM MEMORY ID <id_unico>.
Ejemplo:
*IMPORTO a memoria el estado del usuario
IMPORT v_estado_usu FROM MEMORY ID ‘Z_ESTADO’
IF SY-SUBRC NE 0.
MESSAGE e000(Z1) WITH ‘ERROR AL EXPORTAR’
END IF
· El ID debe ser único para ambos casos y representa una ubicación escrita en la memoria ABAP
o Variables
o Estructuras.
FREE MEMORY: Luego de bajar los datos se debe liberar El área de memoria utilizada mediante esta sentencia.
FREE MEMORY ID ‘Z_ESTADO’
SENTENCIA SUBMIT: permite llamar un programa dentro de la ejecución de otro programa
EJERCICIO DE LA LECCIÓN:
Ejercicio de Práctica: Crear el programa ZABAP_MEMORIA_EXPORT_##### el cual deberá cargar la variable V_NOMBRE_USUARIO con ‘Gonzalo Gándara’ y la tabla interna de usuarios TI_USUARIOS (de igual tipo que la tabla ZTABLA_USUARIOS) con tres registros de datos.
Luego, exportar a memoria la variable V_NOMBRE_USUARIO y la tabla interna TI_USUARIOS con el ID ‘Z_MEMORIA’. Si la exportación funcionó correctamente, emitir el mensaje de éxito ‘Exportación exitosa’. Caso contrario, emitir el mensaje ’Se ha producido un error al exportar’.
Crear el programa ZABAP_MEMORIA_IMPORT_##### el cual deberá traer de memoria la variable V_NOMBRE_USUARIO y la tabla interna TI_USUARIOS con el ID ‘Z_MEMORIA’.
Si la importación funcionó correctamente, emitir el mensaje de éxito ‘Importación exitosa’ e imprimir por pantalla el contenido de la variable y la tabla. Caso contrario, emitir el mensaje ’Se ha producido un error al importar’.
Pasos a realizar: Ejecutar el programa ZABAP_MEMORIA_EXPORT_##### realizando un SUBMIT ZABAP_MEMORIA_IMPORT_##### and RETURN y verificar que se emite el mensaje de éxito y se imprime por pantalla el contenido de la variable V_NOMBRE_USUARIO y la tabla interna TI_USUARIOS.
SOLUCION EJERCICIO:
*&---------------------------------------------------------------------*
*& Report ZABAP_MEMORIA_EXPORT
*&
*&---------------------------------------------------------------------*
*
*&---------------------------------------------------------------------*
REPORT ZABAP_MEMORIA_EXPORT.
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
v_nombre_usuario(30) TYPE c.
*---------------------------------------------------------------------*
START-OF-SELECTION.
*---------------------------------------------------------------------*
CLEAR ti_usuarios.
REFRESH ti_usuarios.
* Completamos la tabla interna de usuarios con tres registros
SELECT * UP TO 3 ROWS
FROM ztabla_usuarios
INTO TABLE ti_usuarios.
* Completamos la variable
CLEAR v_nombre_usuario.
v_nombre_usuario = 'Gonzalo Gándara'.
* Exporto los datos a memoria
EXPORT ti_usuarios v_nombre_usuario TO MEMORY ID 'Z_MEMORIA'.
IF sy-subrc EQ 0.
MESSAGE S001(z_prueba) WITH 'Exportación exitosa'.
ELSE.
MESSAGE e001(z_prueba) WITH 'Se ha producido un error al exportar'.
ENDIF.
* Llamo a la ejecución del programa que importa los datos
SUBMIT ZABAP_MEMORIA_IMPORT AND RETURN.
*&---------------------------------------------------------------------*
*& Report ZABAP_MEMORIA_IMPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZABAP_MEMORIA_IMPORT.
* Include de Datos y Subrutinas
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
wa_usuarios LIKE LINE OF ti_usuarios,
v_nombre_usuario(30) TYPE c.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
* Importo la variable de memoria
IMPORT ti_usuarios v_nombre_usuario FROM MEMORY ID 'Z_MEMORIA'.
IF sy-subrc EQ 0.
MESSAGE s001(z_prueba) WITH 'Importación exitosa'.
WRITE:/ v_nombre_usuario.
LOOP AT ti_usuarios INTO wa_usuarios.
WRITE:/ wa_usuarios.
ENDLOOP.
* Liberamos la memoria
FREE MEMORY ID 'Z_MEMORIA'.
ELSE.
MESSAGE e001(z_prueba) WITH 'Se ha producido un error al importar'.
ENDIF.
 
 
 
Sobre el autor
Publicación académica de Gustavo Bolivar, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Bolivar
Profesión: Ing Sistemas - Chile - Legajo: EU47Z
✒️Autor de: 45 Publicaciones Académicas
🎓Egresado del módulo:
Presentación:
Enfocado en programación sap abap.
Certificación Académica de Gustavo Bolivar