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)