Si estás en soporte SAP como yo, podes llegar a recibir correos o llamadas desde todos los usuarios con mensajes donde los usuarios digan "me sale este error", "Spool en espera", "impresión en espera", "no me sale la impresión", "tengo problemas con la impresión en SAP", "ayuda, sap no me imprime", "envié 10 veces a imprimir y no pasó nada", y un etcétera de mensajes relacionados que solo apuntan a una cosa: problema con el spool de SAP.
Qué es el SPOOL y para qué sirve
Antes de concentrarnos en el problema, veamos qué es y para qué sirve el spool de impresión en SAP.
Cuando se produce gran cantidad de información, y es importante imprimir esa información, sin importar qué es lo que se imprime, pueden ser facturas, remitos, notas de entrega, o etiquetas troqueladas por ejemplo. Debemos comprender que el sistema SAP capta todas esas órdenes de impresión y debe procesarlas una por una (a niveles de tiempos de sistemas, es decir muy rápidos -sin entrar en temas técnicos).
Y el spool es como un almacen que recepta todas esas ordenes de impresión para darles prioridad, y una serie de configuraciones, más un status, para así determinar en qué posición de impresión está, cómo se imprimirá dicha información de la orden, y cuál es el status de la misma.
A fines de éste artículo, nos vamos a concentrar en la impresión desde SAP, y el status que nos importa en estos momentos es el que nos deja en "espera" (sin error) es decir, el mensaje de "espera" no está rojo. Muchas veces, si hacemos doble clic sobre el mensaje de espera, SAP nos dice: "Espera programa de edición de salida", sin mayor detalle.
También recibiremos este error si queremos imprimir desde SAP un documento PDF, y usamos funciones ABAP por ejemplo: "RSPO_OUTPUT_SPOOL_REQUEST", el estado será el mismo, es decir: "Espera programa de edición de salida".
Spool SAP: estado en espera
¿Cómo solucionar y destrabar el spool de impresión?
Lo primero que debemos hacer, si detectamos que SAP tiene un problema general con todas las impresiones (de todos los usuarios), es comunicar que por favor detengan -o suspendan- los envíos a imprimir, al menos por 10 minutos, y que se comuniquen con el área de sistemas antes de intentar imprimir nuevamente. Ésto hará que el sistema no siga encolando ordenes de impresión y sobrecargando el servidor de peticiones.
Yendo a la transacción SP01: "Control de Salida: Selección de ordenes SPOOL", debemos listar las órdenes de impresión que no sean exitosas jugando con el filtro de fechas para captar desde qué día (y hora) empezó SAP a encolar ordenes sin darle salida.
Aparte de la fecha de creación, es muy importante destildar la opción de status "C/éxito", para que nos liste únicamente las órdenes de impresión que están en proceso, con problemas, o con errores.
Hasta aquí, podremos saber:
- Cuándo empezó el problema
- Cuáles son los usuarios que mayor cantidad de órdenes de impresión tienen trabadas (hay que depurar si son necesarias o no, ya que la mayoría de los usuarios envían a imprimir algo, no sale... ah, vuelven a intentar, no sale... vuelven a intentar, no sale... y vuelven a intentar, y así... cada vez que vuelven a intentar es una orden de impresión nueva que queda en cola de impresión).
- Visualizar ordenes con error (que podrían ser re-procesadas manualmente, o bien, borradas por el consultor SAP para que el usuario pueda volver a crear una nueva orden de impresión.
Analizando procesos
La importancia de la dupla SM50 y SM66 quedará reflejada aquí, y es muy importante que lo tengas en cuenta en el futuro.
Al lector: debo aclarar a mis lectores técnicos, y aquellos lectores apasionados y avanzados en los temas BASIS, que lo siguiente será una explicación de ambas transacciones desde el punto de vista funcional. No ahondaré en cuestiones técnicas, mi profundizaré en temas complejos que serán de difícil entendimiento para quienes manejamos SAP del lado funcional. Por supuesto, si gustas aportarle tu grano de arena a este artículo, puedes comentarlo, y será editado incluyendo lo que tú comentes.
Transacción SAP SM50
Será a través de la transacción SM50 que puedes visualizar cómo SAP procesa todo (no solo el tema de los spools) en el servidor.
Con esta transacción podremos observar qué procesos están siendo muy demandados por ciertos usuarios, si ordenamos de forma descendente la columna "Tiempo CPU".
En el caso del SPOOL, cuando está en espera, es porque SAP está procesando de forma continua un proceso de RFC Gateway.
En este caso, debemos analizar qué ocurre con ese proceso. Si el usuario está en el medio, lo más importante es ir a visitarlo, o ante la imposibilidad de verlo en persona, llamarlo por teléfono para saber qué está haciendo en el sistema. Si tiene un RFC Gateway, lo más probable es que haya enviado a imprimir, y que ante las ventanas de dialogo que abre Windows, el usuario las haya ignorado o minimizado, produciendo de esa forma una cola de impresión excesiva que nunca terminaba su ciclo. Al enviar más trabajos a imprimir desde SAP, en Windows se encolaban los mismos, y no pasaba nada... (para el usuario), sin embargo del lado del servidor de SAP, todos los procesos del RFC Gateway para los spools se quedaban en espera (a que el usuario imprima desde Windows).
En este caso, hay que asistir al usuario para que libere esas impresiones, o bien... en el peor de los casos, se puede terminar la sesión del usuario (que perderá todo lo que envió a imprimir), y obligarle desde SAP al cierre de todas sus instancias, a fin de que libere los procesos, y se liberen de esa forma las ordenes de impresión que el usuario estaba ocupando.
Una vez que SAP libera los recursos que ese usuario estaba trabando, los procesos retoman su actividad, y el spool de impresión empieza a procesar todas las órdenes que tenía en impresión con estado "en espera", para pasar a estado "en proceso", o "en procesamiento", y de esa forma empieza a lanzar impresiones físicas, o en PDF, o en el formato que le hayan solicitado los usuarios.
Concluyendo, todo vuelve a la normalidad.
Más información sobre la SM50
La siguiente información está tomada del SAP Help (información en inglés).
La descripción general del proceso muestra la siguiente información:
Si más de un cierto porcentaje de procesos de trabajo están en estado de retención PRIV, las transacciones PRIV se terminan automáticamente si el usuario no está activo en la transacción durante un período de tiempo establecido. Puede establecer este lapso de tiempo en el perfil del sistema SAP.
Inicio: indica si el proceso debe reiniciarse automáticamente si un proceso finaliza prematuramente. Puede cambiar el estado de reinicio de un proceso eligiendo Proceso → Reiniciar después de un error → Sí / No . Normalmente, deje Reiniciar establecido en Sí.
Si un proceso de trabajo se cancela durante su puesta en marcha, el sistema establece automáticamente en Reiniciar a n . Esta medida protege contra los intentos interminables de reiniciar un proceso si un sistema de base de datos no está disponible, o si otro problema grave afecta al sistema. Después de corregir el problema, puede cambiar Reiniciar a Sí para que el sistema inicie los procesos de trabajo.
El menú ofrece las siguientes funciones:
- No : el número interno de identificación de un proceso. Se usa para identificar mensajes que pertenecen a un proceso de trabajo en el registro del sistema
- Tipo : tipos de procesos de trabajo:
- Proceso de trabajo de DIA para ejecutar pasos de diálogo en transacciones de usuario
- UPD : proceso de actualización para hacer cambios en la base de datos U1 (críticos para el tiempo)
- UP2 : Proceso de actualización para ejecutar cambios en la base de datos de U2 (no críticos para el tiempo)
- ENQ para configurar y liberar bloqueos en objetos de bloqueo de SAP
- BTC para ejecutar trabajos en segundo plano
- SPO para procesos de formateo de spool
- PID:ID de proceso del proceso de trabajo (en el sistema operativo)
- Estado: estado actual del proceso de trabajo. Los estados posibles son:
- Ejecutando (ejecutando una solicitud).
- Esperando (inactivo y esperando una solicitud)
- Mantener (retenido para un usuario) no es un estado anormal, pero un proceso de trabajo solo puede servir a un solo usuario.
- Detenido (abortado; Reiniciar establecido en No ).
- Motivo: si un proceso de trabajo está en estado En espera , se muestra el motivo. Las razones típicas son: Depuración, actividad de CPIC, bloqueos, actualizaciones, GUI (el sistema espera respuesta del programa de entrada de SAPGUI, por ejemplo, para una llamada de función remota (RFC)). Para obtener una descripción general de los posibles parámetros, consulte la ayuda de F1 .
También puede ver PRIV (uso privado) como motivo para realizar un proceso de trabajo. PRIV indica que un proceso de trabajo está reservado para un solo usuario para el uso de la administración de memoria. El proceso de trabajo ha excedido el límite de la memoria SAP utilizada por otros procesos. El proceso se lleva a cabo mientras el usuario actual requiera memoria local. Para obtener más información, consulte Memoria privada en la documentación sobre SAP Memory Management.
Si más de un cierto porcentaje de procesos de trabajo están en estado de retención PRIV, las transacciones PRIV se terminan automáticamente si el usuario no está activo en la transacción durante un período de tiempo establecido. Puede establecer este lapso de tiempo en el perfil del sistema SAP.
Inicio: indica si el proceso debe reiniciarse automáticamente si un proceso finaliza prematuramente. Puede cambiar el estado de reinicio de un proceso eligiendo Proceso → Reiniciar después de un error → Sí / No . Normalmente, deje Reiniciar establecido en Sí.
Si un proceso de trabajo se cancela durante su puesta en marcha, el sistema establece automáticamente en Reiniciar a n . Esta medida protege contra los intentos interminables de reiniciar un proceso si un sistema de base de datos no está disponible, o si otro problema grave afecta al sistema. Después de corregir el problema, puede cambiar Reiniciar a Sí para que el sistema inicie los procesos de trabajo.
- Err: indica cuántas veces ha abortado un proceso de trabajo
- Sem: indica el número del semáforo para el que está esperando un proceso de trabajo.
- CPU: tiempo acumulativo de CPU desde el inicio de un proceso de trabajo. Las unidades de tiempo son segundos y centésimas de segundos. Calcular el tiempo de CPU es oneroso. Por lo tanto, debe solicitar esta información utilizando la función de CPU.
- Tiempo: indica el tiempo transcurrido utilizado por un proceso de trabajo para el paso de diálogo que está procesando actualmente
- Informe: programa ABAP o informe que se está ejecutando actualmente
- Cl .: Cliente para la sesión que se está ejecutando actualmente
- Usuario: Usuario cuya solicitud se está procesando actualmente
- Acción: acción que está siendo ejecutada por el programa actual. Las acciones que se muestran son aquellas que se registran en el monitor de rendimiento de SAP. El Monitor de rendimiento debe estar activo (parámetro de perfil SAP stat / level = 1 (predeterminado)) para que se muestren las acciones o los accesos a la tabla de la base de datos.
- Tabla: si se accede a la base de datos, esta columna muestra el nombre de la tabla a la que se accede.
El menú ofrece las siguientes funciones:
- Procesos de control y verificación (proceso de opción de menú)
- Control del programa ABAP (Programa / modo de opción de menú)
- Proceso de trabajo de proceso (Lista de opciones de menú)
SM66
La transacción SM66 es complementaria a la SM50 y nos muestra todos los procesos que se están corriendo en el servidor.
Esta transacción nos detalla lo siguiente:
- Nombre del servidor
- Número y Tipo del proceso de trabajo
- Identificación del proceso del sistema operativo
- Status del proceso de trabajo
- Motivo de espera
- Tiempo de CPU consumido
- Nombre del usuario cuya orden está siendo ejecutada
- Report ejecutado actualmente
- Actividad actual del proceso de trabajo
- Tabla BD a la que accedió por última vez el proceso trabajo
Más información sobre el spool de impresión SAP
- Paso por paso: Cómo Configurar SAP para imprimir a través de Windows
- A través de la transacción SPAD manejamos las impresoras SAP (podemos instalar una nueva, por ejemplo).
- El programa "RSPO0041" (se ejecuta a través de la SE38), sirve para borrar ordenes de impresión antiguas, que los usuarios se olvidaron de gestionar.
- Debates sobre la transacción SAP SPAD
- Debates sobre el spool de SAP
Fuentes consultadas
- https://help.sap.com/saphelp_nw70/helpdata/EN/69/c24e104ba111d189750000e8322d00/content.htm?no_cache=true
- https://danielpanaro.wordpress.com/2008/04/15/transaccin-sm66-resumen-general-de-procesos/
se pueden imprimir ordenes de mantenimiento de forma masiva, en lugar de una por una, me refiero a que en la transacción IW38 allí las puedo liberar e imprimir, y se pueden seleccionar e imprimir de una por una, entrando a cada orden, la pregunta es si existe alguna forma de imprimir muchas ordenes de mantenimiento PM de forma masiva o simplificada
ResponderBorrar