Destacados del análisis del error GENERATE_SUBPOOL_DIR_FULL:
- Qué es – Un short dump que ocurre cuando el buffer de ABAP programs (subpool) está completamente lleno y no puede cargar nuevos programas
- Parámetro clave –
zcsa/abap_buffer_sizedefine el tamaño del buffer ABAP donde se almacenan los programas compilados - A quién afecta – Sistemas con muchos programas Z, sistemas recién migrados a S/4HANA, o sistemas con el buffer infradimensionado
- Solución rápida – Aumentar el buffer con RZ10 y /$SYNC, pero la causa raíz puede ser un programa que genera código dinámico sin control
El error GENERATE_SUBPOOL_DIR_FULL es relativamente frecuente en sistemas con mucho desarrollo personalizado (programas Z) o en procesos de actualización. Cuando aparece, los usuarios no pueden ejecutar nuevas transacciones ni reportes hasta que se resuelve, porque el sistema no puede cargar los programas en memoria.
¿Qué es GENERATE_SUBPOOL_DIR_FULL?
Cuando ABAP ejecuta un programa por primera vez (o tras un cambio), lo compila y lo almacena en un área de memoria llamada ABAP Program Buffer (subpool). Cada programa, clase, función y módulo de tipo P tiene su entrada en este buffer. Cuando el buffer se llena, ABAP no puede cargar nuevos programas y genera el short dump GENERATE_SUBPOOL_DIR_FULL. Piensa en ello como una caché de programas compilados que tiene un tamaño máximo configurable.
Síntomas típicos
- El error aparece al intentar ejecutar transacciones o reportes que antes funcionaban bien
- No afecta a todos los programas, solo a los que no están actualmente en el buffer
- El sistema puede estar «medio vivo»: algunas transacciones funcionan y otras no
- En ST02, la pestaña «ABAP Program Buffer» muestra un uso cercano al 100%
- Tras reiniciar la instancia, el problema desaparece temporalmente (el buffer se vacía, pero se llenará de nuevo)
Causas principales
- Buffer infradimensionado – El parámetro
zcsa/abap_buffer_sizees demasiado pequeño para la cantidad de programas del sistema - Actualización o migración – Tras una actualización a S/4HANA, el número de objetos ABAP aumenta significativamente
- Generación dinámica de código – Programas que usan
GENERATE SUBROUTINE POOLde forma masiva sin liberar los pools generados - Fugas de buffer – Programas que cargan includes o subprogramas sin necesidad, saturando el directorio
- Muchos programas Z – Sistemas con miles de objetos Z desarrollados a lo largo de los años
Solución paso a paso
- Verifica el estado del buffer en ST02 – Ve a la pestaña «ABAP Program» o «ABAP Program Buffer». Comprueba el porcentaje de «Free Space». Si es menor del 10%, confirma el diagnóstico.
- Revisa el valor actual de zcsa/abap_buffer_size – Con RZ10 o ST02, mira el tamaño actual. Los valores típicos para sistemas grandes empiezan en 150 MB (unos 750.000 KB).
- Vacía el buffer con /$SYNC – Temporalmente puedes liberar espacio. En la pantalla de login del sistema, teclea
/$SYNC. Esto invalida el buffer y obliga a recargar los programas bajo demanda. - Aumenta el buffer permanentemente – En RZ10, modifica
zcsa/abap_buffer_size. Para sistemas S/4HANA, el valor recomendado está entre 200 MB y 500 MB (dependiendo de la cantidad de objetos). Guarda y reinicia la instancia. - Código dinámico – Si el problema persiste, busca programas que usen
GENERATE SUBROUTINE POOLcon Code Inspector (SCI) y evalúa si se puede reducir su uso o si liberan los pools generados. - Haz limpieza de programas obsoletos – Revisa si hay programas Z que ya no se usan. Si tu sistema tiene años de desarrollo, puede haber cientos de objetos huérfanos.
Notas SAP relacionadas
- SAP Note #511372 – GENERATE_SUBPOOL_DIR_FULL runtime error
- SAP Note #1431289 – Buffer parameter recommendations for S/4HANA
- SAP Note #100195 – How to optimize ABAP program buffer
- SAP Note #537783 – ABAP Buffer Tuning
¿Te ayudamos?
Contamos con una base de consultores certificados por SAP que brindan un excelente servicio de Administración SAP así como el análisis de vulnerabilidades SAP y remediación de las mismas.
Puedes contactarnos a través del formulario de contacto o a través de nuestra dirección de correo electrónico contacto@aurit.es
En AURIT estaremos encantados de poder ayudarte.