✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
- Declaración de datos propios del batch input: Declaramos una tabla interna y una estructura, ambas del tipo BDCDATA, otra tabla interna del tipo BDCMSGVOLL con su estructura, que servirán para almacenar los mensajes que se produzcan cuando ejecutemos el CALL TRANSACTION, la tabla interna de usuarios, que contendrá los datos que levantemos del archivo de entrada y una tabla para mostrar por pantalla los errores entre otras declaraciones.
Estructura BDCMSGCOLL: estructura estándar del sistema es utilizada para definir la tabla interna que almacenara los mensajes del batch input.
- Lectura de datos de archivo de entrada: Ejecutamos el método CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD para levantar el archivo de entrada con la información para generar el batch input.
- Carga de la tabla BDCDATA: utilizaremos la subrutina BDC_FIELD. Antes debemos inicializar la tabla interna del Batch Input y la de los mensajes.
Como se va a ingresar más de un registro, se tendrá que manejar índices para saber en qué fila de la pantalla estamos cargando los datos. Concatenando al nombre del campo el número de fila que le corresponde en la pantalla entre paréntesis.
- Ejecución de la sentencia CALL TRANSACTION: utilizaremos la siguiente sintaxis
CALL TRANSACTION v_cod_trans USING ti_bdc_data MODE v_modo
MESSAGES INTO ti_messages.
IF NOT sy-subrc IS INITIAL.
v_error = 'X'.
ENDIF.
USING: se especifica la tabla BDCDATA que se utilizara.
MODE: determina el modo de procesamiento que utilizara el batch input. Los modos posibles de procesamiento son:
- Modo A: Procesamiento con la visualización de todas las pantallas.
- Modo E: Procesamiento donde se muestran las pantallas solo si ocurre un error. Si alcanza un breakpoint, se termina el procesamiento con SY-SUBRC igual a 1001. El campo SY-MSGTY contendrá "S", SY-MSGID contendrá "00", SY-MSGNO contendrá "344", SY-MSGV1 contendrá "SAPMSSY3" y SY-MSGV2 contendrá el "0131".
- Modo N: Procesamiento donde no se muestran las pantallas.
- Modo P: Procesamiento donde no se muestran las pantallas. Si se alcanza un breakpoint, se pasa el control al debugger.
Es Conveniente utilizar una variable para asignar el modo de procesamiento a un batch input. De esta forma podremos modificar su valor dinámicamente durante la ejecución del programa.
Cuando estamos desarrollando un programa que realiza el batch input mediante la técnica de CALL TRANSACTION es muy útil utilizar el modo de ejecución A ya que nos permite visualizar cada una de las pantallas ya que en caso de error en los datos que introdujimos en la tabla BDCDATA el procesamiento se detendrá en la pantalla correspondiente al error y es allí donde debemos analizar el error, una vez que sea corregido podemos cambiar al modo de ejecución N.
UPDATE: determina el modo de actualización de los cambios que producirá el batch input. los modos posibles son:
- Update A: Actualización asincrónica, La actualización se produce de igual forma a la que sucede si utilizamos la sentencia COMMIT WORK Valor por defecto.
- Update S: Actualización Sincrónica, La actualización se produce de igual forma a la que sucede si utilizáramos la sentencia COMMIT WORK AND WAIT.
- Update L: Actualización Local.
MESSAGES INTO: con el uso de esta opción, todos los mensajes generados durante el procesamiento del batch input son almacenados en una tabla interna de tipo BDCMSGCOLL, Para armar los mensajes se utilizara la función MESSAGE PREPARE.
La sentencia CALL TRANSACTION también es muy utilizada en reportes, para acceder a una transacción determinada, a partir de los datos presionados en pantalla, con el agregado de la cláusula AND SKIP FIRST SCREEN.
 
 
 
Sobre el autor
Publicación académica de Jeferson José Peña Curvelo, en su ámbito de estudios para la Carrera Consultor ABAP.
Jeferson José Peña Curvelo
Venezuela - Legajo: PD49W
✒️Autor de: 128 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jeferson Peña