✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
EJECUCIÓN DE PROGRAMAS
Existen dos formas de ejecutar un programa en ABAP, Online y Batch Input. En la ejecución Online el programa se ejecuta al momento de presionar F8. Para realizar ejecuciones en fondo y como ver las ejecuciones en fondo que están previstas, activas, ya finalizadas, se utilizara la transacción SM37.
El batch input nace de la necesidad de introducir datos en una transacción dentro del repositorio de SAP, emulando acciones que un usuario debería hacer en cada una de las pantallas que se le presentan, por lo que, en resumen es una herramienta muy útil que sirve para cargar en una transacción cualquiera, datos de forma masiva asegurándose, eso si, de que los chequeos y controles que la transacción hace por defecto se cumplan consiguiendo la integridad de los datos.
Batch Input y CALL TRANSACTION son ambos métodos de transferencia de datos. La entrada por lotes generalmente se usa para transferir gran cantidad de datos. Por ejemplo, está implementando un nuevo proyecto de SAP y, por supuesto, necesitará alguna transferencia de datos del sistema heredado al sistema SAP. Si no hay un programa de entrada por lotes estándar, programa de entrada directa, necesitaría escribir su propio programa de transferencia de datos y será un programa de entrada por lotes. Los métodos CALL TRANSACTION son métodos en tiempo real, cada vez que se ejecuta el programa CALL TRANSACTION se puede activar. CALL TRANSACTION se utiliza especialmente para acciones de integración entre dos sistemas SAP o entre diferentes módulos.
Usando CALL TRANSACTION se haces todo automáticamente, se recolectan los datos necesarios, se hace una transacción y también se hace con la actualización de la base de datos. Si se produce algún error, se muéstra al usuario.
Entrada por lotes
Con el método de entrada por lotes, un programa ABAP lee los datos externos que se introducirán en el Sistema R/3 y almacena los datos en una "sesión de entrada por lotes". La sesión registra las acciones que se requieren para transferir datos al sistema utilizando transacciones SAP normales.
Cuando el programa ha generado la sesión, puede ejecutar la sesión para ejecutar las transacciones de SAP en ella. Puede iniciar y supervisar explícitamente una sesión con la función de administración de entrada por lotes (seleccionando Sistema - Servicios - Entrada por lotes) o hacer que la sesión se ejecute en la sesión de procesamiento en segundo plano.
Ofrece administración de sesiones, soporte para reproducir y corregir sesiones que contienen errores y registro detallado. Su programa prepara los datos y los almacena en una sesión de entrada por lotes. Una sesión es una colección de datos de transacción para una o más transacciones. El sistema mantiene las sesiones de entrada por lotes en la cola de entrada por lotes. Puede procesar sesiones de entrada por lotes en el sistema de procesamiento en segundo plano.
El programa debe abrir una sesión en la cola antes de transferir datos a ella, y debe volver a cerrarla después. Todas estas operaciones se realizan haciendo llamadas a módulos de función desde el programa ABAP.
Los aspectos más importantes de la interfaz de sesión son:
- Procesamiento asíncrono
- Transferencia de datos para múltiples transacciones
- Actualización síncrona de la base de datos. Durante el procesamiento, no se inicia ninguna transacción hasta que la transacción anterior se haya escrito en la base de datos.
- Se genera un registro de procesamiento de entrada por lotes para cada sesión
- Las sesiones no se pueden generar en paralelo. El programa de entrada por lotes no debe abrir una sesión hasta que haya cerrado la sesión anterior.
TRANSACCIÓN DE LLAMADA
En el segundo método, el programa usa la instrucción ABAP CALL TRANSACTION USING para ejecutar una transacción SAP. Los datos externos no tienen que depositarse en una sesión para su posterior procesamiento. En cambio, todo el proceso de entrada por lotes se lleva a cabo en línea en su programa. Con CALL TRANSACTION USE, el sistema procesa los datos más rápidamente que con las sesiones de entrada por lotes. A diferencia de las sesiones de entrada por lotes, CALL TRANSACTION USING no admite automáticamente funciones de corrección o registro interactivas.
El programa prepara los datos y luego llama a la transacción correspondiente que luego se procesa inmediatamente.
Las características más importantes de CALL TRANSACTION USING son:
- Procesamiento sincrónico.
- Transferencia de datos de una transacción individual cada vez que se llama la instrucción CALL TRANSACTION USE.
- Puede actualizar la base de datos de forma sincrónica y asíncrona. El programa especifica el tipo de actualización.
- LUW (unidades lógicas de trabajo) separadas para la transacción. El sistema ejecuta una confirmación de la base de datos inmediatamente antes y después de la instrucción CALL TRANSACTION USING.
- No hay registro de procesamiento de entrada por lotes.
SUBMIT
Ejecuta un programa.
Sintaxis:
SUBMIT { <programa> | (<programa>) } [ LINE-SIZE <columnas> ] [ LINE-COUNT <filas> ]
[ TO SAP-SPOOL
[ DESTINATION <destino> ]
[ COPIES <copias> ]
[ LIST NAME <nombre> ]
[ COVER TEXT <texto> ]
[ LIST AUTHORITY <autorización> ]
[ INMEDIATELY <flag> ]
[ KEEP IN SPOOL <flag> ]
[ NEW LIST IDENTIFICATION <flag> ]
[ DATASET EXPIRATION ]
[ LINE-COUNT <líneas> ]
[ LINE-SIZE <columnas> ]
[ LAYOUT <layout> ]
[ SAP COVER PAGE <modo> ]
[ COVER PAGE <flag> ]
[ RECEIVER <receptor> ]
[ DEPARTMENT <departamento> ]
[ ARCHIVE MODE <modo> ]
[ ARCHIVE PARAMETERS <parámetros> ]
[ WITHOUT SPOOL DYNPRO ] ]
[ SPOOL PARAMETERS <parámetros> ]
[ ARCHIVE PARAMETERS <parámetros> ]
[ WITHOUT SPOOL DYNPRO ]
[ VIA SELECTION-SCREEN ]
[ AND RETURN ]
[ EXPORTING LIST TO MEMORY ]
[ USER <usuario> VIA JOB <job> NUMBER <número> ]
[ USING SELECTION-SETS OF PROGRAM <programa1> ].
Esta sentencia llama al report <programa>. El nombre del programa se puede especificar dinámicamente utilizando una variable entre paréntesis.
El significado de las cláusulas es el siguiente:
LINE-SIZE -> El programa se visualiza con el número de columnas definido en <columnas>.
LINE-COUNT -> El programa se visualiza con el número de líneas definido en <filas>.
TOP SAP-SPOOL -> Especifica los parámetros de impresión. El significado de las cláusulas es el siguiente:
-
- DESTINATION -> Dispositivo de salida.
- COPIES -> Número de copias.
- LIST NAME -> Nombre del listado.
- LIST DATASET -> Nombre del spool dataset.
- COVER TEXT -> Título de la cubierta.
- LIST AUTHORITY -> Autorización de display.
- INMEDIATELY -> Impresión inmediata.
- KEEP IN SPOOL. Guardar el listado después de la impresión.
- NEW LIST IDENTIFICATION -> Identificación del nuevo listado.
- DATASET EXPIRACION -> Fecha de expiración.
- LINE-COUNT -> Líneas por página.
- LINE-SIZE -> Columnas del informe.
- LAYOUT -> Formato de impresión.
- SAP COVER PAGE -> Con carátula de impresión.
- COVER PAGE -> Selección de cubierta.
- RECEIVER -> Usuario receptor.
- DEPARTMENT -> Nombre del departamento.
- ARCHIVE MODE -> Modo de archivo.
- ARCHIVE PARAMETERS -> Parámetros de archivo.
- WITHOUT SPOOL DYNPRO -> Salta la pantalla de control de impresión.
- SPOOL PARAMETERS -> Parámetros de impresión.
VIA SELECTION-SCREEN -> Aparece al usuario la pantalla de selección.
AND RETURN -> El programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina se devuelve control al programa llamador. Para ello se crea una sesión interna.
EXPORTING LIST TO MEMORY -> El listado de salida del programa llamado no aparece en pantalla. En su lugar se guarda en memoria. El programa llamador puede leer el listado de la memoria. Esta cláusula no puede ser utilizada en combinación con la cláusula TO SAP-SPOOL.
USER <usuario> VIA JOB <job> NUMBER <n> -> Se utiliza para incluir un paso de job en un proceso de background.
USING SELECTION-SETS OF PROGRAM -> El programa llamado utiliza las variantes del programa <programa1>. Si los parámetros y criterios de selección de ambos programas no coinciden, las variables de <programa1> se pueden borrar.
Los mensajes de error que se pueden producir son los siguientes:
LOAD_PROGRAM_NOT_FOUND -> El programa específico no existe.
SUBMIT_WRONG_TYPE -> El programa especificado no es un report.
SUBMIT_IMPORT_ONLY_PARAMETER -> Valor inválido pasado por parámetro.
SUBMIT_WRONG_SIGN -> Valor inválido pasado a un criterio de selección.
SUBMIT_IN_ITAB_ILL_STRUCTURE -> Tabla pasado como criterio con estructure errónea.
La sentencia submit, con una determina cláusula también nos permite añadir pasos a un job creado con el módulo de función JOB_OPEN.
SUBMIT <report> AND RETURN
USER <usuario>
VIA JOB <nombre_job> NUMBER <id_job>
TO SAP-SPOOL SPOOL PARAMETERS <parámetros_impresión>
ARCHIVE PARAMETERS <parámetro_archivo>
WITHOUT SPOOL DYNPRO.
 
 
 
Sobre el autor
Publicación académica de Sergio Armando Beltran Castaneda, en su ámbito de estudios para la Carrera Consultor ABAP.
Sergio Armando Beltran Castaneda
Profesión: Ingeniero de Sistemas con Especialización en Gerencia de Proyectos - Colombia - Legajo: WK55K
✒️Autor de: 70 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Soy ingeniero de sistemas desde hace mas de 10 años y quiero enfocarme en el mundo sap, iniciando en el lenguaje abap, con miras a ampliar mi conocimiento profesional y laboral.
Certificación Académica de Sergio Beltran