SAP Netweaver / ABAP                  Notas técnicas / Tips / Tutorials

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.

 

  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          = 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)

 

Copyright © 2025 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.