✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
Creación de BATCH INPUT usando CALL TRANSACTION: el objetivo será la carga incial de datos de la tabla ZTABLA_USUARIOS.
Creamos un archivo de texto con registros que cumplan con la estructura de la tabla ZTABLA_USUARIOS, sin tener en cuenta el mandante. Borramos el contenido de la tabla.
Pasos:
1. DECLARACION DE DATOS PROPIOS DEL BI: declaramos una tabla interna y una estructura, ambas del tipo BDCDATA, otra tabla del tipo BDCMSGCOLL con su estructura, que servirán para almacenar los mensajes que se produzcan cuando ejecutemos el CALL TRANSACTION, la tabla interna de usuarios, la cuál va a contener 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 utilzada para definir la tabla inerna que almacenará los mensajes del BI.
2. 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 BI.
3. CARGA DE LA TABLA BDCDATA: para cargar la tabla BDCDATA utilizamos la subrutina BDC_FIELD. Antes debemos inicializar la tabla interna del BI y la de los mensajes.
Al ingresar más de un registro, hay que manejar índices para saber en que fila de la pantalla estamos cargando los datos. Para ello concatenamos al nombre del campo el número de fila que le corresponde en la pantalla entre paréntesis.
4. EJECUCION DE LA SENTENCIA CALL TRANSACTION:
CALL TRANSACTION V_COD_TRANS USING TI_BDC_DATA MODE V_MODO
MESSAGES INTO TI_MENSAJES.
IF NOT SY-SUBRC IS INITIAL.
V_ERROR = 'X'.
ENDIF.
USING: aquí especificamos la tabla BDCDATA que se usará.
MODE: determina el modo de procesamiento que utilizará el BI. Los modos de procesamiento son:
A: procesamiento con la visualización de todas las pantallas, es el valor por default.
E: si se 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".
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.
AL DESARROLLAR UN PROGRAMA QUE REALIZA UN BI MEDIANTE LA TECNICA DE CALL TRANSACTION ES SUMAMENTE UTIL PROCESAR EL BI MEDIANTE EL MODO DE EJECUCION A, EL CUAL NOS PERMITE VISUALIZAR CADA UNA DE LAS PANTALLAS, YA QUE EN CASO DE ERROR EN LOS DATOS QUE INTRODUCIMOS EN LA TABLA BDCDATA EL PROCESAMIENTO SE DETENDRÁ EN LA PANTALLA CORRESPONDIENTE AL ERROR Y SERÁ ALLI DONDE TENDREMOS QUE ANALIZAR COMO SOLUCIONARLO, UNA VEZ QUE DETECTAMOS Y CORREGIMOS EL ERROR MODIFICAMOS EL MODO DE EJECUCION A N.
UPDATE: determina el modo de actualización de los cambios que producirá el BI. Los modos posibles son:
A: actualización asincrónica. La actualización se produce de igual forma a la que sucede si no utilizamos la sentencia COMMIT WORK AND WAIT. Es el valor por defecto.
S: Actualización sincrónica. La actualización 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 uso de esta opción, todos los mensajes generados durante el procesamiento del BI son almacenados en una tabla interna de tipo BDCMSGCOLL. Para armar los mensajes usamos la función MESSAGE_PREPARE.
De esta manera finalizamos con todos los pasos de BI, lo ejecutamos en modo de procesamiento A, qu nos permite ver el paso a paso de las actualizaciones.
SM30, nombre de la tabla, botón Actualizar. Botón entradas nuevas, ingresamos todos los datos para el usuario y presionamos grabar. Salimos de la transacción y repetimos la secuencia de pasos por cuantos registros de usuario ingresemos en la tabla.
LA SENTENCIA CALL TRANSACTION TAMBIEN ES MUY UTILIZADA EN REPORTES PARA ACCEDER A UNA TRANSACCION DETERMINADA A PARTIR DE LOS DATOS PRESIONADOS EN PANTALLA, CON EL AGREGADO DE LA CLAUSULA AND SKIP FIRST SCREEN.
 
 
 
Sobre el autor
Publicación académica de Jose Ignacio Rodini, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Ignacio Rodini
Profesión: Licenciado en Informatica - Argentina - Legajo: HM58N
✒️Autor de: 115 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rodini