✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
BATCH
1.- Ejecución de Fondo.
Existen dos formas de ejecutar un programa en ABAP:
Online.- El programa se ejecuta al momento de presionar F8 y los resultados de la ejecución se producen de manera inmediata. Esta ejecución es conveniente para los programas donde se requiere interacción con el usuario o cuando el tiempo de ejecución es muy poco.
Batch.- Cuando el tiempo de procesamiento de un programa es muy alto (muchos acceso a base de datos), es conveniente la ejecución Batch o de fondo.
Ejemplo:
Se tiene un programa ABAP ZPRUEBA_FONDO_B que obtiene los registros de la tabla ZTABLA_USUARIOS y los imprime en pantalla.
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
st_usuarios LIKE LINE OF ti_usuarios.
START-OF-SELECTION.
SELECT dni nombre_ape estado_usu
FROM TABLE ti_usuarios.
INTO TABLE ti_usuarios.
LOOP AT ti_usuarios INTO st_usuarios.
WRITE: / st_usuarios-dni,
st_usuarios-nombre_ape,
st_usuarios-estado_usu.
ENDLOOP.
Ahora vamos a crear el nuevo programa ABAP ZPRUEBA_FONDO el cuál cumplirá el rol de programa padre del programa ZPRUEBA_FONDO_B.
Lo primero que debemos hacer es crear un JOB, Para esto le asignamos un nombre de variable V_JOBNAME y luego ejecutamos la función JOB_OPEN. Para modularizar vamos a crear la subrutina ABRIR_JOB que tendrá el siguiente código.
* Form ABRIR_JOB
*------------------------------
FORM abrir_job.
* Asignar el nombre al JOB
CONCATENATE 'ZPRUEBA_FONDO_' sy-datum INTO v_jobname.
CALL FUNCION 'JOB_OPEN'
EXPORTING
jobname = v_jobname
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_creat_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgyno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ENDIF.
ENDFORM.
Lo que sigue es lanzar el JOB. Para esto se crea la subrutina LANZAR_JOB, que ejecutará la sentencia SUBMIT, la cual se utiliza para ejecutar un programa dentro de otro programa y con el agregado de la cláusula VIA JOB NUMBER, la ejecución del programa se realizará de fondo.
Mediante la sentencia SUBMIT se pueden pasar parámetros al programa llamado, los cuales deben existir en la pantalla de selección de éste.
FORM lanzar_job.
*Lanzo el JOB
SUBMIT z_prueba_fondo_b
VIA JOB v_jobname
NUMBER v_jubcount
AND RETURN.
ENDFORM.
Con le agregado de la cláusula AND RETURN el programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina, se devuelve el control al programa llamador.
Luego debemos cerrar el JOB mediante la función JOB_CLOSE. Para esto vamos a crear la subrutina CERRAR_JOB como veremos a continuación.
* Form cerrar job
FORM cerrar_job.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcounts = v_jobcount
jobname = v_jobname
strtimes = 'X' "Comienza de inmediato
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_mosteps = 5
job_notex = 6
look_failed = 7
ivalid_target = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE 'Se lanzó el JOB, para visualizarlo ir a la trx SM37'.
ENDIF.
ENDFORM.
Por último, después de cerrar el job, imprimimos por pantalla el mensaje "Se lanzó el JOB, para visualizarlo ir a la trx SM37"
Ahora se ejecuta ONLINE el programa ZPRUEBA_FONDO presionando F8. Se despliega en la pantalla el mensaje "Se lanzó el JOB, para visualizarlo ir a la Trx SM37", por lo tanto vamos a ir a buscar el resultado a la transacción SM37 allí presionamos F8 o "ejecutar".
La transacción SM37, visualiza los JOBS procesado en el sistema SAP.
De cada job podremos visualizar distintos datos tales como ID, el usuario SAP que lo ejecutó, el status (planeado, liberado, listo, activo, terminado o cancelado), ola fecha y hora de inicio, la duración y el retraso.
Identificamos el proceso, lo seleccionamos y presionamos el botón"Spool".
Ahora veremos el pedido del JOB correspondiente a nuestro programa.
Finalmente, presionamos el botón de visualización y se despliega el resultado del procesamiento.
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta