PROCESOS EN BACKGROUND: JOBS
|
13.1. INTRODUCCIÓN:
- Jobs:Pueden ejecutarse en Abap/4 programas sindiálogo con el usuario, es decir, en background: Los jobs. Están completamente integrados en el sistema SAP. Son sencillos de usar y permiten proceso distribuido y operaciones paralelas, sin que sea necesario un lenguaje de control de jobs específico. Permiten planificar y procesar programas Abap/4 en background. Los trabajos pueden ser visualizados y mantenidos. Fases de un job: job scheduling, job processing, job overview.
- Tareas o procesos: Desde una sesión de usuario se puede llamar al ‘módulo’ del sistema encargado de despachar las diferentes tareas (el “dispatcher”). Hay 3 tipos de tareas: dialog, update y batch. Se diferencian entre sí respecto a la estrategia de “dispatching” usada. SAP trabajando es una colección de tareas en proceso.
- Flujo de proceso: Un job es una secuencia de “steps” o pasos a ser planificados. Un “step” es el procesamiento de un programa individual, con un juego de parámetros (una variante). Es decir, un job es una secuencia de programas a ejecutar (en particular puede ser 1 solo). Cada uno de ellos se va ejecutando en background, en orden, y se va devolviendo el control al job cuando acaban, para lanzar el siguiente, ... Se usa la memoria global de Abap para pasar el contenido de campos, registros y tablas internas a “steps” subsiguientes, a aquellas variables que estén declaradas en varios “steps” o programas. Al final termina totalmente el job y se devuelve el control al sistema.
13.2. CREACIÓN Y EDICIÓN DE JOBs:
- Creación de un job: Se usa la función Define Job del módulo básico (BC) de SAP. Se accede a ella por menú: Sistema – Servicios – Jobs, o bien por Sistema – Servicios – Reporting – Programa – Jobs en background (transacción SM36). Se debe dar un nombre (cualquiera) para el job y los nombres de los programas a ejecutar. Después se planifica (dar fecha y hora de inicio) y se graba. La fechas de inicio y ejecución periódica, y los parámetros de impresión se pueden fijar permanentemente. Mediante la clase de job se pueden clasificar los jobs por prioridad y tipo.
- Edición de un job: Se usa la función Job Overview. Se accede a ella por menú: Sistema – Servicios – Lista de jobs, o bien por Ir a – Job Overview (transacción SM37). Se pueden extender jobs ya creados previamente con “steps” adicionales, es decir, añadir nuevos programas al job.
- Log: El log de un job contiene todos los mensajes visualizables con la sentencia Abap/4 MESSAGE (todos los tipos de mensaje), así como mensajes internos del sistema que se verían si la ejecución fuera on-line, no en background. También queda reflejada la hora de inicio y la hora de finalización del job. Los textos que los programas (“steps”) del job escriban con WRITE, al ejecutarlos en segundo plano son almacenados en el “Spool file”. La impresión de los mismos puede ser fijada también en el proceso de planificación.
13.3. TRANSFERENCIA DE DATOS Y AUTORIZACIONES:
- EXPORT nombre1 nombre2 ... TO MEMORY.
Con las sentencias EXPORT e IMPORT se transfieren datos entre dos programas Abap/4 incluidos en la misma cadena de llamada. ‘nombre1’, … son los nombres de los campos, variables y tablas internas que se desean almacenar en la memoria global (entonces serán importables)
- IMPORT nombre1 nombre2 ... FROM MEMORY.
Con esta sentencia otro programa puede recoger los valores de los objetos antes guardados. En ambos programas dichos objetos deben ser declarados igual (en tipo, longitud y estructura). Se puede usar la opción ID id para hacer referencia a objetos con diferentes identificaciones. Sólo si la memoria global está vacía, tras IMPORT el campo del sistema SY-SUBRC valdrá 0.
- Autorizaciones para los procesos de background: Las funciones individuales están protegidas por los objetos S_BTCH_JOB (actividades del job): DELE (borrar job), PLAN (planificar job), SHOW (mostrar job), RELE (release o liberar job), LIST (mostrar la lista de jobs), PROT (mostrar la lista de jobs protegidos). Dichos objetos S_BTCH_JOB son procesados durante la creación del job por el objeto S_BTCH_NAM: nombre de usuario que puede especificarse cuando se planifica un job. En este momento también pueden indicarse en S_PROGRAM (grupo de autorización y acciones de usuario) programas que pertenezcan al grupo de autorización.
13.4. GENERACIÓN AUTOMÁTICA DE JOBS:
- Un programa Abap/4 puede generar un job automáticamente, en lugar de hacerlo el usuario manualmente mediante transacciones o por menú. Mediante módulos de función específicos, el programa puede abrir un job (JOB_OPEN), insertar steps en un job (JOB_SUBMIT) y cerrar un job (JOB_CLOSE). Hay otras funciones relacionadas: mostrar el log del job, leerlo, copiar el job, borrarlo, editar un job (JOB_OVERVIEW), disparar un evento (TRIGGER_EVENT), chequear el disparo de un evento (CHECK_EVENT_NAME).
- JOB_OPEN:Abre un job, identificado por su ‘jobname’. Tras la ejecución del job el sistema devuelve un número de job para éste.
CALL FUNCTION 'JOB_OPEN' EXPORTING * DELANFREP = ' ' "borrar report interno jobname = "nombre del job * IMPORTING * JOBCOUNT = "número de job devuelto * EXCEPTIONS * CANT_CREATE_JOB = 1 * INVALID_JOB_DATA = 2 * JOBNAME_MISSING = 3 * OTHERS = 4 … .
- JOB_SUBMIT: Se usa para añadir un “step” a un job, especificando todos los parámetros de entrada (EXPORTING) del mismo. Con la sentencia SUBMIT … WITH puede especificarse un conjunto de parámetros de selección para el job.
CALL FUNCTION 'JOB_SUBMIT' EXPORTING authcknam = "nombre del usuario propietario del job jobcount = "número de job jobname = "nombre del job * REPORT = ' ' "nombre del report (el "step") * VARIANT = ' ' "variante de ejecución del report * EXCEPTIONS * INVALID_JOBDATA = 1 * JOBNAME_MISSING = 2 … .
- JOB_CLOSE: Se usa para cerrar la planificación de un job, que quedará listo para ejecutarse. Es obligatorio dar su nombre y número de job. Si no se especificó la fecha y hora de inicio en JOB_OPEN, puede hacerse en JOB_CLOSE (para que se ejecute inmediatamente necesita marcarse ‘X’ en el parámetro strtimmed).
CALL FUNCTION 'JOB_CLOSE' EXPORTING jobcount = "número de jo jobname = "nombre del job * SDLSTRTDT = NO_DATE "nombre del report (el "step") * SDLSTRTTM = NO_TIME "variante de ejecución del report * STRTIMMED = ' ' "flag de inicio inmediato * EXCEPTIONS * INVALID_STARTDATE = 1 * JOBNAME_MISSING = 2 … .