El 80/20 del Troubleshooting SAP
En la práctica BASIS, el 80% de los incidentes son causados por el 20% de los tipos de error. Esta guía recopila esos errores "clásicos" y proporciona la receta exacta para resolverlos.
1. TSV_TNEW_PAGE_ALLOC_FAILED (Common Memory Issue)
Síntoma: Un programa dump con este error al intentar asignar más memoria de la disponible en el heap o memoria extendida.
Diagnóstico Técnico:
- Revisa ST22: El dump indicará qué tabla interna o variable causó la saturación.
- Revisa ST02: Verifica si los buffers de memoria extendida están al 100% de uso.
Resolución:
- Corto plazo: En programas Z, optimizar el código usando
FREEpara liberar tablas internas ya procesadas. UtilizarSELECT ... UP TO X ROWSpara evitar cargas masivas. - Largo plazo: Ajustar parámetros de instancia en
RZ10:abap/heap_area_totaloem/initial_size_MBsi el hardware lo permite.
2. TIME_OUT (Exceso de Tiempo de Ejecución)
Síntoma: El proceso de diálogo excede el límite configurado por el kernel.
Causas Comunes:
- Nested Selects: Bucles con SELECTs internos que multiplican exponencialmente el tiempo de acceso a DB.
- Missing Indexes: Full table scan en una tabla con millones de registros.
Resolución:
- Optimizar la query SQL usando
FOR ALL ENTRIESoINNER JOIN. - Aumentar temporalmente el parámetro
rdisp/max_wprun_time(usar con precaución, solo víaRZ11dinámico si es urgente). - Ejecutar el proceso en Background (Job), donde el límite de tiempo es mucho mayor o inexistente.
3. DBIF_RSQL_SQL_ERROR (Error de Base de Datos)
Síntoma: La base de datos rechaza una operación enviada por SAP.
Ejemplos Típicos:
- ORA-01555 (Snapshot Too Old): En Oracle, el segmento de UNDO fue sobrescrito antes
de que un query largo terminara. Resolución: Aumentar
undo_retention. - SQL Code 9002 (Transaction Log Full): En SQL Server, se llenó el log. Resolución:
Ejecutar backup de log o aumentar el archivo
.ldf. - SQL Code 1105 (Log Segment Full): Similar en Sybase ASE.
4. MESSAGE_TYPE_X (El "Pánico" del Proceso)
Síntoma: El desarrollador ha forzado una terminación del programa mediante un mensaje de tipo 'X'.
Resolución:
Generalmente indica una inconsistencia de datos insalvable. Debes abrir el dump en ST22 y revisar la sección "Source Code Extract" para ver qué validación lógica falló. Suele ser un problema funcional o de configuración (ej. falta una entrada en una tabla de customizing vital).
Tabla Resumen de Errores Rápidos
| ID de Error | Capa Afectada | Acción Inmediata |
|---|---|---|
| PXA_NO_FREE_SPACE | Memoria (Program Buffer) | RZ10: Aumentar abap/buffersize |
| ZOMBIE_PROCESS | Kernel / OS | SM50: Cancel process without core |
| RFC_NO_AUTHORITY | Seguridad | SU53: Verificar objeto S_RFC |
| LOCK_ILL_DISTRIBUTION | Enqueue | SM12: Revisar colisiones de bloqueo |
Preguntas Frecuentes (FAQ)
¿Cómo resolver un error de TIME_OUT?
Se debe optimizar el código ABAP (evitando Nested Selects), asegurar que existan los índices necesarios en la DB o ejecutar el proceso en background.
¿Qué causa un error DBIF_RSQL_SQL_ERROR?
Es un error que devuelve la base de datos a SAP, como falta de espacio en el log de transacciones o el clásico Snapshot Too Old en Oracle.
¿Qué es el Program Buffer (PXA)?
Es el área de memoria donde SAP guarda los programas ABAP compilados. Si se llena (PXA_NO_FREE_SPACE), el rendimiento cae drásticamente.