✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
Resumen
Unidad 4 leccion 7
La Ejecucion de fondo
1- Las formas de ejecución de un programa ABAP.
Existen dos formas de ejecutar un programa
- Ejecucion en linea (online) => con la techa F8 o el icono de ejecutar => los resultados son de manera inmediata, ya sea x pantalla o modificando tablas DB. La ejecución online es conveniente xa los prog en donde se requiere interacion con el usuario => presione techa => a tiempo de procesamiento es poco
- Ejecucipon en batch o de Fondo: Ejecucion de un proceso o programa sin interacion con el usuario, es decir q lanzamos el proceso y el SAP GUI nos devuelve el control, aunq el programa todavia no ha acabdo de ejecutarse => tiempo de procesamiento es muy alto => muchos acceso a tablas => tiene millones de registros => de multiples TXs, entre otros. Los resultados no se visualizan x pantalla => buscar el resultado en otra TX
Dos formas de ejecucion
= programa ZTEST_ONLINE, imprime x pantalla un registro de tabla DB. => x pantalla
si vamos al menu programas vemos dos formas de ejecutar el prograam.
1ro- Online F8 o botón ejecutar => x pantalla
2do- De fondo presiondando F9
Si ejecutamos de fondo o batch F9 => ventana de diálogo de parámetros xa impresion de fondo donde podemos modificar distintos parámetros de salida => Dispositivo de salida
=> impresion de windows
=> Cantidades de impresiones
entre otras
Planificar la fecha de inicio
Inmediato Fecha /hora tras job tras evento En forma operac.
Analicemos
Inmediato: Permite iniciar de inmediato en el momento de acabar su definición.
Fecha/hora: debemos indicar le día y la hora => comience la ejecución de fondo => se puede periodica/.
Tras Job: Con esta indicación de comienzo podemos encadenar la ejecución de un programa de fondo con otro, es decir indicaremos al proceso B q empiece a ejecutarse cuando finalice el proceso A. También podemos especificar q solo comience cuando la finalización del proceso A. sea correcta, en caso q el proceso A haya sido cancelado en mitad su ejecución el proceso B. no se efectuará.
Tras evento: La ejecución comenzará cuando se produzca en el sist el evento q le indiquemos. El evento debe estar definido en tabla DB SAP viene con una serie de eventos predefinidos arranque o parada de las instancias. El cambio de modo de operacion de nocturno a diurno, entre otros
Volvamos a la opción INMEDIATO el nombre lo dice todo y luego grabar.
Visualizamos => barra de estado el mensaje: Previsión de job creada xa el programa ZTEST_ONLINE
El resultado los buscamosen la TX SM37 jobs procesados se puede ver => ID
=> El usuario q lo ejecuto
=> el status (previsto, liberado, preparado, activo, terminado o cancelado)
=> Fecha y hora inicio
=> la duracion
=> El retraso
Jobs: Son procesos y programas ejecutados de fondo en el sist.
vamos a dejar los campos de pantalla inicial de la TX SM37 cargados x defecto y ejecutamos F8.
A continuación vamos a visualizar la ejecución del programa ztest_online, la cual se encuentra con status terminado, la tildamos y hacemos clic SPOOL xa visualizar la salida de la ejecución de fondo.
Ahora pasamos automática/ a la TX estándar SP01 debido a q el proceso de fondo q ejecutamos genera una salida x pantalla entonces visualizados el icono de la lista ABAP => clic
TX SP01 => conocida como SPOOL => administraremos todas las solicitudes de impresión q se generen en el sist.
2- La creación de un programa ABAP de fondo.
Tal como se vio anterior/ puede ejecutarse online o de fondo => con el requerimiento inicial se sabe q se debe desarrollar el prog de fondo y no en linea.
Ej: ztest_online => vamos a redefinir x q se hizo online y ahora se debe hacer xa ejecutar de fondo
xa ello creamos el ztest_fondo_B, el cual obtiene los registros de la tabla DB ztabla_usuarios y los imprime por pantalla.
REPORT ztest_fondo_B
DATA: ti_usuarios TYPE STANDARD TABLE OF ztablas_usuarios,
wa_usuarios LIKE LINE OF ti_usuarios.
START-OF-SELECTION.
REFRESH ti_usuarios.
SELECT dni nombre_ape estado_usu
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios
IF sy-subrc EQ 0.
LOOP AT ti_usuarios INTO wa_usarios
write:/ wa_usuarios-dni, wa_usuarios-nombre_ape wa_usuarios-estado_usu
ENDLOOP.
ENDIF.
Ahora vamos a crear el nuevo prog ABAP ztest_fondo el cual cumplira el rol de prog, padre de prog ztest_fondo_B.
primero q se ejecuta es el ztest_fondo y luego ztest_fondo_B
creamos prog ztest_fondo.
REPORT ztest_fondo
DATA: v_jobname TYPE btcjob,
v_jobcount TYPE btcjobcnt.
START-OF-SELECTION.
" apertura del job
PERFORM abrir_job.
" lanzamiento del job
PERFORM lanzar_job.
" cerramos el job
PERFORMA cerrar_job.
Analizamos c7u de las subrutinas
- Crea un job => le asignamos nombre => V_JOBNAME y luego ejecutamos el modulo de funciones JOH_OPEN. xa modularizar creamos la subrutina abrir_job => el codigo es:
FORM abrir_job.
" asignamos un nombre al job.
CONCATENATE 'ztest_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 NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ENDIF.
ENDFORM.
Lo q sigue => lanzar el JOB crear la subrutina LANZAR JOB q ejecutara la sentencia SUBMIT, la cual se utiliza xa ejecutar un programa dentro de otro prag y con el agregado de la claúsala VIA_JOB_NUMBER => de fondo.
FORM lanzar_jor
" lanzamiento el JOB
SUBMIT zprueba_fondo_b
USER sy-uname. " usuario q ejecuta
VIAJOB v_jobname.
NUMBER v_jobcount.
AND RETURN.
ENDFORM.
=> mediante la sentencia SUBMIT se pueden pasar parámetros al prog llamado, los cuales deben existir en la pantalla de selección.
F1 => SUBMIT
con el agregado de la claúsula AND RETURN en la sentencia SUBMIT, el prog llamador permanece en espera mientras se ejecuta el prog. llamador.
Final cerramos el JOB mediante el modulo de funciones JOB_CLOSE xa eso creamos la subrutina CERRAR_JOB. y ultimo mostramos el mensaje "se lanzo el job, xa visualizarlo ir a la TX SM37"
FORM cerrar_job.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = v_jobcount
jobmame = v_jobname
strtimemed = '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_faile = 7
invalid_target = 8
OTHERS = 9
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ELSE
" se lanzo el job xa visualizarlo x TX SM37
MESSAGE s000(zclase_text_b) WITH text-001 text -002
ENDIF. " cerrar job
Ahora vamos ajecutar online progl zprueba_fondo F8 y veremos en pantalla el mensaje "se lanzo el job, xa visualizando ir a la TX SM37"
Visualizamos TX SM37 F8 y hacemos clic en ejecutar
identificamos nuestros proceso, tildamos el proceso y luego boton "SPOOL"
Ahora visualizamos la orden del SPOOL seleccionamos la orden y clic para ver el resultado x pantalla
xx
 
 
 
Sobre el autor
Publicación académica de Gustavo Betancur Guzmán, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Betancur Guzmán
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WS86O
✒️Autor de: 164 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP MM Nivel Avanzado
- Carrera Consultor en SAP MM Nivel Inicial