SAP. cl_server_info -> Para controlar el consumo de memoria en tiempo de ejecución.

Para controlar un problema de desbordamiento de memoria que tenemos en un JOB hemos encontrado una clase que nos permite recuperar los procesos que corren en el sistema y ver cuanta memoria está consumiendo. Con esto podremos en el código limitar el uso de memoria de un proceso en concreto para evitar así DUMPs.

La transacción que hemos encontrado para ver el análisis de memoria individual es SM66:

Estoy ejecutando el proceso ZNXXXXXX parado en el Debug para ver las variables de memoria:

Nos vamos a la SM66 y buscamos por report y usuario:

Clickamos 2 veces sobre ese registro, y otra vez clickamos 2 veces. Nos aparece información detallada sobre el proceso, donde podemos ver la estadística de memoria.

La memoria “Memoria ABAP” es la que nos interesa y la presenta en KB mientras que en el debug en Bytes, hay que dividir entre 1024 tantas veces según queramos comparar en KB, MB o GB.

Con esto podemos monitorizar el uso de memoria individual de cada proceso pero lo que nos interesa es llevarlo al código, la clase que usa la SM66 es cl_server_info, en concreto el método “get_session_list” el cual devuelve en una tabla los proceso y sus valores, podremos leer de esta tabla nuestro proceso en ejecución y obtener los valores de memoria.

Sigo con el proceso en ejecución, lanzo el método en un programa de pruebas:

Buscamos en la tabla ZNXXXXXX:

Con esto en teoría podremos controlar el uso de memoria.

Espero que os sea de ayuda.

Add a Comment