✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
El Batch Input utilizando Call transaction
Mi primer Batch Input utilizando CALL TRANSACTION
Vamos a crear nuestro primer Batch Input utilizando la tècnica de CALL TRANSACTION. El objetivo del Batch Input serà la carga inicial de datos de la tabla ZTABLA_USUARIOS.
Para ello, vamos a crear un archivo de texto con registros que cumplan con la estructura de la tabla base de datos ZTABLA_USUARIOS.
Como lo que vamos a hacer serà la carga inicial de la tabla base de datos de usuarios, borraremos su contenido previamente a la ejecuciòn de este ejemplo. Ahora, seguiremos los pasos que establecimos en la primera lecciòn de la unidad.
✔ Declaraciòn de datos propios del batch input
Declaramos una tabla interna y una estructura, ambas del tipo BDCDATA, otra tabla interna del tipo BDCMSGCOLL con su estructura, que serviràn para almacenar los mensajes que se produzcan cuando ejecutamos 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.
La estructura BDCMSGCOLL es una estructura estàndar del sistema es utilizada para definir la tabla interna que almacenarà los mensajes del batch input.
✔ La lectura de datos del archivo de entrada
Ejecutamos el mètodo GUI_UPLOAD de la clase CL_GUI_FRONTEND_SERVICES para levantar el archivo de entrada con la informaciòn para generar el Batch Input.
✔ La carga de la tabla interna BDCDATA
Para cargar la tabla interna BDCDATA utilizamos la subrutina LLENAR_TABLA_BDCDATA, que vimos en la lecciòn anterior. Antes debemos inicializar la tabla interna del Batch input y la de los mensajes.
Como ingresaremos màs de un registro, tendremos que manejar ìndices para saber en què fila de la pantalla estamos cargando los datos. Esto lo solucionamos fàcilmente, concatenando al nombre del campo el nùmero de fila que le corresponde en la pantalla entre parèntesis.
✔ La ejecuciòn de la sentencia Call Transaction
Se procede a ejecutar la sentencia CALL TRANSACTION. La sintaxis de la sentencia es la siguiente:
CALL TRANSACTION v_cod_trans USING ti_bdcdata
MODE v_modo.
UPDATE v_update
MESSAGES INTO ti_mensajes.
Veamos en detalle cada una de las opciones
-USING: aquì especificamos la tabla interna BDCDATA que se utilizarà.
-MODE: determina el modo de procesamiento que utilizarà el Batch Input. Los modos posibles de procesamiento son:
A Procesamiento con la visualizaciòn de todas las pantallas. Es el valor por default.
E Procesamiento donde se muestran las pantallas solo si ocurre un error. Si se alcanza un breakpoint, se termina el procesamiento con SY-SUBRC igual a 1001. El campo SY- MSGTY contendrà "00", SY-MSGNO contendrà "344", SY-MSGV1 contendrà "SAPMSSY3" y SY-MSGV2 continuarà el "0131".
N Procesamiento donde no se muestran las pantallas.
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.
UPDATE: determina el modo de actualizaciòn de los cambios que producirà el Batch Input. Los modos posibles son:
Update Efecto
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.
B Actualizaciòn sincrònica. Se produce de igual forma a la que sucede si utilizamos la sentencia COMMIT WORK AND WAIT.
L Actualizaciòn Local
-MESSAGES INTO: con el luso de esta opciòn todos los mensaje generados durante el procesamiento del Batch Input son almacenados en una tabla interna de tipo BDCMSGCOLL. Para armar los mensajes, vamos a utilizar el mòdulo de funciones MESSAGE_PREPARE.
Una vez que terminamos con todos los pasos del Batch Input, vamos a ejecutarlo con modo de procesamiento "A", que nos permite ver el paso a paso de las actualizaciones.
Lo primero que hacemos es ingresar a la transacciòn SM30 con el nombre de la tabla base de datos ZTABLA_USUARIOS y hacemos clic en el botòn Actualizar.
Luego hacemos clic en el botòn Entradas Nuevas. El sistema nos informa que "No existen entradas" en la tabla base de datos ZTABLA_USUARIOS.
Se cargan todos los campos del registro y hacemos clic en el botòn grabar.
Salimos de la dynpro en donde completamos el registro de la tabla base de datos ZTABLA_USUARIOS.
Y salimos de la pantalla inicial de la transacciòn y repetiremos esta secuencia de pasos por cuantos registros de usuarios ingresemos en la tabla base de datos ZTABLA_USUARIOS.
Finalmente si chequeamos el contenido de la tabla base de datos ZTABLA_USUARIOS a travès de la transacciòn SE16 vamos a verificar que efectivamente existen tres registros que son los que acabamos de insertar en la tabla.
 
 
 
Sobre el autor
Publicación académica de Ariel Martucci, en su ámbito de estudios para la Carrera Consultor ABAP.
Ariel Martucci
Profesión: Contador Publico - Argentina - Legajo: PJ45S
✒️Autor de: 78 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Un contador público de mediana edad con ganas de seguir aprendiendo carreras nuevas. estudiante avanzado de inglés, preparando mi first certificate, y al mismo tiempo involucrándome en programación.
Certificación Académica de Ariel Martucci