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)