Uso de jobs en programas ABAP

Anuncio
http://www.teknodatips.com.ar
Notas técnicas – Tips de SAP Netweaver ABAP –
Tip en breve
(Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado)
"Tips en breve" se envía con frecuencia variable a la comunidad SAP. No contiene mensajes publicitarios de ninguna
clase, sólo información técnica útil. Conteste el mensaje con REMOVER si no desea recibir más este servicio.
USO DE JOBS EN PROGRAMAS ABAP
Tema:
Utilidad:
Nivel:
JOBS, FUNCIONES
Creación de la definición de un Job y uso de Jobs
en programas ABAP.
Intermedio
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.
1. 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
JOBNAME
STRTIMMED
IMPORTING JOB_WAS_RELEASED
EXCEPTIONS CANT_START_IMMEDIATE
INVALID_STARTDATE
JOBNAME_MISSING
JOB_CLOSE_FAILED
JOB_NOSTEPS
JOB_NOTEX
LOCK_FAILED
OTHERS
=
=
=
=
=
XJOBNUMBER
XJOBNAME
'X'
XJOBWASRELEASED
1
= 2
= 3
= 4
= 5
= 6
= 7
= 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)
Descargar