Uso de jobs en programas ABAP
Cuando se ejecuta un programa ABAP en Fondo, el sistema crea automáticamente una definición de Job cuyo nombre coincide con el nombre del programa. Antes de disparar el Job es necesario indicar al sistema el momento en el cuál se desea que se procese el mismo, ejemplo inmediatamente.
También es posible generar la definición de un Job y dispararlo desde un programa ABAP.
Se detalla a continuación, los elementos necesarios y la forma de utilización de diferentes funciones que permiten el uso de Jobs dentro de un programa ABAP:
Mediante la función JOB_OPEN se crea el nombre del Job. Esta función requiere de una entrada correspondiente al nombre que se desea dar al Job y la función devuelve en una variable la identificación interna que generó para dicho job, que será luego necesaria para la ejecución de las siguientes funciones intervinientes.
* Definición de Variables data: XJOBNAME LIKE TBTCJOB-JOBNAME, XJOBNUMBER LIKE TBTCJOB-JOBCOUNT. * Construir nombre de JOB. MOVE ‘NOMBRE_JOB’ TO XJOBNAME. * Crear el job. Esta función devuelve un Nro de Job CALL FUNCTION 'JOB_OPEN' EXPORTING JOBNAME = XJOBNAME IMPORTING JOBCOUNT = XJOBNUMBER EXCEPTIONS CANT_CREATE_JOB = 1 INVALID_JOB_DATA = 2 JOBNAME_MISSING = 3 OTHERS = 4. Agregar al Job un Paso o Step, es decir el programa que debe ejecutar. * Agregar un Step al Job CALL FUNCTION 'JOB_SUBMIT' EXPORTING ARCPARAMS = ARPARAMS AUTHCKNAM = SY-UNAME JOBCOUNT = XJOBNUMBER JOBNAME = XJOBNAME LANGUAGE = SY-LANGU PRIPARAMS = PARAMS REPORT = 'ZRADD48A' VARIANT = 'TVARIABLE' EXCEPTIONS BAD_PRIPARAMS = 1 BAD_XPGFLAGS = 2 INVALID_JOBDATA = 3 JOBNAME_MISSING = 4 JOB_NOTEX = 5 JOB_SUBMIT_FAILED = 6 LOCK_FAILED = 7 PROGRAM_MISSING = 8 PROG_ABAP_AND_EXTPG_SET = 9 OTHERS = 10. |
El parámetro de entrada a la función AUTHCKNAM indica el nombre del USUARIO que ejecuta dicho step y las entradas REPORT y VARIANT contienen el nombre del programa y variante a ejecutar. Todos estos parámetros coinciden con los datos que el sistema requiere cuando se arma un job por la transacción SM36.
Nota: las estructuras ARPARAMS y PARAMS contienen el resultado de la función GET_PRINT_PARAMETERS referida a la obtención de información de datos de impresión. Ver Tip relacionado a éste tema.
- Ejecutar la función JOB_CLOSE que somete el job a ejecución. En esta función se indica el momento en que debe disparase el job.
* Submitir el proceso inmediatamente data: XJOBWASRELEASED LIKE BTCH0000-CHAR1.
CALL FUNCTION 'JOB_CLOSE' EXPORTING JOBCOUNT = XJOBNUMBER JOBNAME = XJOBNAME STRTIMMED = 'X' IMPORTING JOB_WAS_RELEASED = XJOBWASRELEASED EXCEPTIONS CANT_START_IMMEDIATE = 1 INVALID_STARTDATE = 2 JOBNAME_MISSING = 3 JOB_CLOSE_FAILED = 4 JOB_NOSTEPS = 5 JOB_NOTEX = 6 LOCK_FAILED = 7 OTHERS = 8. |
En este ejemplo el job se dispara inmediatamente. Si en cambio se desea diferir la ejecución del job se utilizan otros parámetros de EXPORTING:
SDLSTRTDT (especificar fecha de arranque del job)
SDLSTRTTM (especificar hora de arranque del job)