✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
BATCH.
1. EJECUCION DE FONDO.
Existen 2 formas de ejecutar un programa en ABAP:
- Online: el programa se ejecuta al momento de presionar F8 y los resultados de le ejecución se producen de manera
inmediata. Esta forma es conveniente para los programas dde se requiere interacción con el usuario o cdo el
tiempo de ejecución es muy poco.
- Batch (o de fondo): cdo el tiempo de procesamiento de un programa podría ser muy alto, debido a q el programa
tiene muchos accesos a BD, q tienen millones de registros, a la ejecución de múltiples
transacciones o a otras varias razones.
Es sumamente importante analizar previamente la realización de la programación de un requerimiento ABAP si el programa q debemos realizar se ejecutara en forma Online o en forma Batch o de fondo, esto se debe a q cambiara no solo la forma de ejecución del programa sino también la forma en la q se programa dicho programa.
Ej:
Programa ABAP ZPRUEBA_FONDO_B q obtiene los registros de la tabla ZTABLA_USUARIOS y los imprime por 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 ztabla_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 cual cumplirá el rol de programa padre el programa ZPRUEBA_FONDO_B.
1.- Crear un JOB. Para esto le asignamos un nombre a la variable V_JOBNAME.
2.- Ejecutamos la función JOB_OPEN. Para modularizar vamos a crear la subrutina ABRIR_JOB q tendrá el siguiente código:
* Form abrir_job
FORM abrir_job.
* Asignamos un nombre al job
CONCATENATE 'ZPRUEBA_FONDO_' sy-datum
INTO v_jobname.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = v_jobname
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
3.- Lo q sigue es lanzar el Job. Para esto vamos a crear la subrutina LANZAR_JOB q 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
FORM lanzar_job
* Lanzo el job
SUBMIT zprueba_fondo_b
VIA JOB v_jobname
NUMBER v_jobcount
AND RETURN.
ENDFORM.
Con el 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.
4.- Luego debemos cerrar el Job mediante la función JOB_CLOSE. Para esto vamos a crear la subrutina CERRAR_JOB
* Form cerrar_job
FORM cerrar_job.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = v_jobcount
jobname = v_jobname
strtimmed = 'X' "Comienza de inmediato
EXCEPTIONS
cant_start_inmediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
ENDIF. ENDFORM. "cerrar_job Por último, después de cerrar el Job, imprimimos por pantalla el mensaje "Se lanzo el Job, para visualizarlo ir a la Trx SM37". Ahora vamos a ejecutar Online el programa ZPRUEBA_FONDO presionando F8. Veremos en la pantalla el mensaje Transacción SM37 Utilizaremos la transacción estándar SM37 para visualizar los jobs procesados en el sistema SAP. De cada job podremos visualizar distintos datos tales como el ID, el usuario SAP q lo ejecutó, el status (planeado, liberado, listo, activo, terminado o cancelado), la fecha y hora de inicio, la duración y el retraso. En la pantalla Resumen de jobs, presionamos el botón SPOOL. Se ve el pedido del Job correspondiente a nuestro programa, en la pantalla Control de salida: Resumen de órdenes SPOOL Finalmente, presionamos el botón de visualización q son unos espejuelos y vemos el resultado del procesamiento en la pantalla Visualización gráfica orden SPOOL 52516 en sistema DU3. Nos puede suceder q nos solicite el desarrollo de un programa ABAP q se ejecute tanto en forma Online como en Batch dependiendo de las necesidades del momento del usuario. En este caso la solución optima del requerimiento q nos están realizando sera desarrollar un único programa ABAP q presente en la pantalla de selección la posibilidad de elegir el modo de procesamiento, es decir, colocaremos dos radio button uno para ejecución Online y otro para ejecución Batch y le permitiremos al usuario del programa q eliga el modo de procesamiento según sus necesidades.
 
 
 
Sobre el autor
Publicación académica de Mayra Maria Pino Rodriguez, en su ámbito de estudios para la Carrera Consultor ABAP.
Mayra Maria Pino Rodriguez
Profesión: Licenciada Cibernética Matemática - Republica Dominicana - Legajo: RA62Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Mayra Pino