martes, 6 de mayo de 2014

PROCESOS EN BACKGROUND: JOBS. Parte II

En este post vamos a seguir hablando de los procesos en fondo o jobs. Explicaremos de conceptor de IMPORT y EXPORT, asi como las autorizaciones que podemos dar a los procesos de fondo.
Después podremos un ejemplo de como podemos crear jobs mediante código ABAP.


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.

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
 
                .

Os dejo un video de ejmplo en el que se muestra como definir un job.

 

No hay comentarios:

Publicar un comentario