Contenido
3. Verificación del estado de los JOBS
Contenido
1. JOBS
Un JOB en ABAP corresponde a un trabajo que se ejecuta en segundo plano o de fondo, es decir, el usuario no interactúa directamente con el proceso o con la screen que se ejecuta detrás de un proceso principal. Debemos tener en cuenta que cualquier transacción o programa en SAP se puede ejecutar en primer plano o segundo plano, dependiendo de los requerimientos.
Un proceso de fondo, es útil porque nos permite programar procesos u operaciones para que se realicen de forma automática en un tiempo específico sin necesidad de que haya interacción con la pantalla o sin afectar otro proceso que se esté ejecutando a la vez.
Estos procesos de fondo se aplican más que todo cuando tenemos entonces, la ejecución de una tarea a largo plazo que requiere muchos recursos. De manera estratégica, se programan cuando no haya mucha interacción con el sistema en donde se desea ejecutar, por ejemplo, en las noches o fines de semana.
2. Creación de un JOB
Para realizar la creación de un JOB dentro del sistema, se tienen dos formas, en este artículo, lo haremos mediante el menú de herramientas, dentro de la transacción que queremos que se ejecute en un proceso de fondo.
Para este ejemplo usamos la transacción “MB52”, con la cual podemos obtener listado del estado del stock de un material. En su pantalla de selección, indicamos los datos que queramos para ejecutar el informe.

Dentro de esta misma pantalla, vamos al menú de la parte superior a la opción de “Program”> “Execute in Background”.

En la siguiente ventana, seleccionamos los parámetros de impresión del proceso de fondo.
Seleccionamos el dispositivo de salida, asignamos el número de copias, entre otras opciones de impresión.

Inmediatamente aparece una nueva ventana en donde debemos configurar las condiciones del JOB, podemos asignar fecha y hora de ejecución.
También, se pueden seleccionar las siguientes opciones de ejecución:
- Inmediata
- Fecha y hora
- Después de un JOB
- Después de un evento
- En modo de operación
Elegimos “Date/Time” y asignamos los datos requeridos para la programación.

Damos en guardar y con esto, nuestro JOB o proceso de fondo aplicado directamente a esta transacción ha sido creado.

1. Verificación del estado de los JOBS
Tenemos dos opciones para visualizar el estado de los JOBS existentes en el sistema:
- Mediante la transacción “SM37”


- Mediante la transacción “SMX”

Consulta, para el caso de la transaccion MB51 yo planifico un jobs pero me descarga la lista basica, y yo quiero la Lista detallada. Se puede configurar?
Hola Diego,
Si estás planificando un job para ejecutar la transacción MB51 en SAP y deseas que la lista descargada sea detallada en lugar de básica, puedes lograrlo utilizando una variante predefinida que contenga la configuración que deseas. Puedes crear esta variante manualmente utilizando la transacción MB51 y ajustando los campos que deseas mostrar en la lista detallada.
Una vez que hayas creado la variante con la configuración deseada, toma nota del nombre de la variante.
Luego, crea un job en SAP utilizando la transacción SM36 (o SM37 si deseas modificar un job existente).
Un saludo.
Hola, como puedo actualizar un mensaje de impresión mediante un JOB y que aparezca en el log
Hola, como puedo actualizar un mensaje de impresión mediante un JOB y que aparezca en el log.
Hola Macarena,
Para actualizar un mensaje de impresión en un JOB y que aparezca en el log en ABAP, puedes usar las siguientes funciones o métodos:
1 – Generar el mensaje en el JOB: Para generar mensajes en un job, utiliza la función SUBMIT para llamar al report y crear el job. En el código ABAP del report, puedes utilizar la instrucción WRITE para imprimir mensajes y que estos se capturen en el log de ejecución del job.
2- Guardar mensajes en el log: Si quieres que los mensajes se registren en el log del sistema, puedes usar la función BAL_LOG_MSG_ADD para añadir mensajes al log de la aplicación (Business Application Log – BAL). Estos mensajes pueden ser visualizados después a través de la transacción SLG1.
Ejemplo:
DATA: lt_return TYPE TABLE OF bapiret2.
CALL FUNCTION ‘BAL_LOG_MSG_ADD’
EXPORTING
i_s_log = log_header ” Aquí defines el log de tu job
i_msgid = ‘ZMSGID’ ” ID del mensaje
i_msgty = ‘I’ ” Tipo del mensaje: ‘I’ (información), ‘W’ (warning), ‘E’ (error)
i_msgno = ‘001’ ” Número del mensaje
i_msgv1 = ‘Mensaje actualizado en el job.’
IMPORTING
et_return = lt_return.
3- Crear y visualizar el log: Una vez que el job finalice, puedes verificar el log en la transacción SLG1. Ahí aparecerán los mensajes que se generaron durante la ejecución del job.
Este proceso asegura que cualquier mensaje que generes durante el JOB se registre y esté disponible en el log para su revisión posterior.
Espero sea útil la información.
Un saludo.
Hola, si un job se creo con un usuario que se desea bloquer como lo cambio de usuario?
Hola Sara,
Cuando un JOB en SAP fue creado por un usuario que deseas bloquear o eliminar, es importante transferir la propiedad del JOB a otro usuario para que no falle o se detenga la ejecución programada. SAP no permite cambiar directamente el usuario propietario de un JOB existente, pero hay una solución:
Solución: Copiar el JOB al nuevo usuario y eliminar el anterior:
1. Identifica el JOB actual:
• Usa la transacción SM37.
• Filtra por el nombre del JOB o por el usuario creador.
2. Copia el JOB con otro usuario:
• Desde la lista de JOBs en SM37, selecciona el JOB.
• Haz clic en el botón “Job > Copy” (en el menú superior).
• Se abrirá la ventana de creación de un nuevo JOB, con los mismos pasos definidos.
• El JOB copiado ahora estará asociado al usuario actual con el que estás logueada/o.
3. Programa la ejecución del nuevo JOB:
• Define nuevamente la fecha, hora o condiciones de ejecución.
• Guarda el JOB.
4. Elimina el JOB original:
• Vuelve a SM37.
• Busca el JOB original.
• Selecciónalo y elige “Job > Delete”.
Consideraciones al bloquear un usuario:
Antes de bloquear un usuario que tiene JOBs activos:
• Asegúrate de haber migrado todos sus JOBs importantes a otro usuario.
• Si bloqueas el usuario sin hacer esto, los JOBs fallarán en su próxima ejecución porque el sistema no puede autenticar al usuario.
Un saludo.