Memoría Escasa ¿Qué hago? (ABAP)

Alguna vez cuando estan procesando bastante data en modo visible (no en fondo) les ha aprecido este mensaje:

31-Ene-2014 03-03-41 p-m-Y ahora, ¿Qué hago?, porque cuando intento volver a ejecutar, el programa demora y luego me da un dump.

Primero voy a explicarles a que se debe el problema, lo que sucede es que a cada usuario se le asigna un tope de espacio en memoría (esto es realizado por un basis), se realiza esto para que no ocurra un desbordamiento de memoría o un cuello de botella entre los usuarios, por tal motivo algunos usuarios pueden tener amplia memoría y otros escasa, ello dependerá de lo crítico que sea el usuario y el programa.

Ahora pasemos a la solución, cuando les aparece el mensaje de Memoria escasa, ¿Cómo libero esa memoria?, pues lo realizaremos con una función: BUFFER_REFRESH_ALL, esta función lo que realiza es una limpieza de la memoria y nos permite volver a cargar con amplia data

31-Ene-2014 03-04-03 p-m-

Para realizar está limpieza lo que tenemos que hacer es ejecutar la función y nos aparecerá la ventana de ejecución de la función, aparece vacia puesto que no tiene parámetros de entrada ni salida. Para realizar la ejecución debemos dar clic en el icono del reloj, como indica la flecha:

31-Ene-2014 03-04-11 p-m-

Una vez ejecutamos, la función nos devuelve la confirmación de la ejecución

31-Ene-2014 03-04-17 p-m-

Y después de ver este mensaje volvemos a proceder a ejecutar nuestro programa.

Es una buena practica limpiar la memoría intermedia, pues una vez llena no permite trabajar con tablas internas que tengan mucha información y suceden dumps innecesarios.

Anuncios

2 pensamientos en “Memoría Escasa ¿Qué hago? (ABAP)

    • Hola Israel,
      Puede ser recomendado si empleas un programa que consuma demasiada memoría intermedia consultando tablas internas que tengan abundante información. Por ejemplo acá en Perú cuando se realizan Kardex (reporte de entrada y salida de materiales) se debe leer abundante información que puede llegar a saturar la memoría y obligar a un dump. Ahora por otro lado debes examinar cuando emplear las tablas internas y que información es necesario leer y cual no, por citarte otro ejemplo, puedes leer la tabla BSEG pero si consultas con SELECT * estarías trayendo toda la información de la tabla y quizas solo usas 5 o 7 campos, esto entra por un análisis de performance, debemos buscar ahorrar la mayor cantidad de memoría posible pues sino los procesos consumen tanto y generan problemas a la larga. En el artículo que escribí, la función la empleo al cargar información en una tabla Z por SM30, ello debido a que antes de insertar la información en la BD, almacena esta información de forma intermedia permitiendo así realizar un ROLL BACK en caso suceda algún error, por ello no lo empleo en un programa.
      Espero haberte sido de ayuda en algo, cualquier otra consulta o comentario estare gustoso de atenderte.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s