✒️ABAP El concepto de Batch Input
ABAP El concepto de Batch Input
QUE ES UN BATCH INPUT
Cuando se instala una aplicacion en un ambiente de produccion, es necesario dar de alta toda la informacion que es indispensable para que pueda funcionar. A este proceso lo llamamos carga inicial de datos (Proceso que consiste en el ingreso de los datos necesarios para el funcionamiento de una aplicacion en el ambiente del sistema).
Supongamos que necesitamos hacer la carga inicial de datos en SAP de 10.000 clientes . Para hacer esto, tendriamos que ingresar 10.000 veces a la transaccion maestro de clientes , lo cual seria una tarea demasiado tediosa y sumamente costosa en tiempo.
Para solucionar estos inconvenientes, SAP introduce la tecnica de BATCH INPUT(consiste en simular a un usuario ingresando datos en SAP pero de manera automatica y utilizando las validaciones que nos proporciona el sistema en sus transacciones. Es un metodo seguro y fiable . Se utiliza generalmente cuando debe realizarse un elevado numero de altas, modificacione so bajas), mediante la cual podremos dar de alta , modificar o borrar grandes cantidades de datos en el sistea, de forma automatica y utilizando las mismas transacciones , con sus respectivas validaciones, tal como si lo hicieramos manualmente de 1 dato por vez.
BATCH INPUT. Tecnica automatica mediante la cual podremos realizar la carga masiva de datos en el sistema utilizando las validaciones de las transacciones.
TECNICAS DE BATCH INPUT
Existen dos tecnicas para realizar un batch input , una se realiza de forma Online(Modo de procesamiento del programa se realiza inmediatamente despues de la ejecucion del mismo por parte del usuario.Se utiliza para los programas que tienen poca carga de procesamiento o aquellos que requieren interaccion con el usuario.) y la otra en forma Batch(conocido como procesamiento por lotes, es un modo de procesamiento donde se planifica cuando va a realizarse la ejecucion de un programa.Se utiliza cuando el tiempo de procesamiento es muy alto.)
-CALL TRANSACTION. se realiza de forma Online , por lo que ejecuta las actualizaciones en el momento en que se ejecuta el programa del Batch Input. Se utiliza la sentencia estandar CALL TRANSACTION(sentencia estandar de ABAP que permite la llamada a una transaccion SAP.)
-JUEGO DE DATOS. se realiza de forma Batch(o de fondo) y queda almacenado en SAP para su posterior ejecucion mediante la transaccion SM37(transaccion que se utiliza para la seleccion de Jobs del Spool de SAP.). Consiste en la ejecucion de una serie de funciones estandar para la apertura, ejecucion y cierre del juego de datos.
Direct Input. los modulos de funciones de sap ejecutan las pruebas de consistencia, se ejecutan con ayuda de las pantallas, tiene ventajas importantes de performance,actualizan las tablas de base de datos de SAP en forma directa, esto esta prohibido por que se pierde consistencia y seguridad a los datos, no es posible escribir programas abap z dedirect input, si no solo utilizar solo los ya existentes, pero si para actualizar los datos de base datos z,es ideal para la transferencia de grandes cantidades de datos, para mantener e iniciar la ejecucion de estos programas se utiliza la transaccion estandar BMVO, ejemplos para el modulo financiero RFVLI000,RMDATIND.
PASOS PARA LA CREACION DE UN BATCH INPUT.
Los pasos a seguir para la generacion de un Batch Input dependen de la tecnica utilizada. Veamos cuales son los pasos a seguir para cada tecnica.
CALL TRANSACTION.
Paso1. Declaracion de datos propios del Batch Input.
Paso2. Lectura de datos de archivo de entrada.
Paso3. Carga de la tabla BDCDATA(Estructura estandar SAP que se utiliza para la carga de datos en un Batch Input.)
Paso4. Ejecucion de la sentencia CALL TRANSACTION.
Estructura BDCDATA. es muy utilizada en los batch inputs ya que define el tipo de datos de la tabla interna que almacena los datos que se cargaran en el batch input.
JUEGO DE DATOS.
Paso1. Declaracion de los datos propios del Batch Input.
Paso2.Lectura de datos de archivo de entrada.
Paso3. Apertura de la sesion del juego de datos.
Paso4. Carga de la tabla BDCDATA.
Paso5. Inserccion del juego de datos.
Paso6. Cierre de la sesion del juego de datos.
Paso7. Ejecucion del juego de datos a traves de la transaccion SM37 o atraves de la creacion de un job y la ejecucion del programa estandar RSBDCBTC.(permite la ejecucuin onlina de un programa Batch Input que se ejecuta mediante la tecnica de juego de datos.)
Programa RSBDCBTC nos permite realizar la ejecucion online de un juego de datos.
CARGA DE LA TABLA BDCDATA
Es el paso mas importante en la ejecucion de un Batch Input.
Veamos un ejemplo sencillo de como cargariamos la tabla BDCDATA. Supongamos que queremos hacer un Batch Input, para cargar con un registro a nuestra tabla de usuarios ZTABLA_USUARIOS.
Si ejecutamos esta accion en forma manual , deberiamos hacer lo siguiente:
Ingresar a la transaccion SM30, introducir el nombre de la tabla, presionar el boton de modificacion o maintain, presionar el boton de nuevas entradas o new entries, introducir el contenido del registro con todos sus campos, presionar el boton grabar y salir de la transaccion.
ejemplo
*&---------------------------------------------------------------------* *& Report ZPRUEBA_ABAP_7_1 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPRUEBA_ABAP_7_1. * Tabla del BI con la estructura de BDCDATA DATA: BEGIN OF ti_bdc_data OCCURS 0. INCLUDE STRUCTURE bdcdata. DATA: END OF ti_bdc_data. * Estructura del BI DATA: st_bdc_data TYPE bdcdata. * Tabla de usuarios DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios, st_usuarios LIKE LINE OF ti_usuarios. *--------------------------------------------------------------------* START-OF-SELECTION. *--------------------------------------------------------------------* * Primer pantalla CLEAR st_bdc_data. st_bdc_data-program = 'SAPMSVMA'. st_bdc_data-dynpro = '0100'. st_bdc_data-dynbegin = 'X'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'VIEWNAME'. st_bdc_data-fval = 'ZTABLA_USUARIOS'. APPEND st_bdc_data TO ti_bdc_data. * Presiono boton de mantenimiento CLEAR st_bdc_data. st_bdc_data-fnam = 'BDC_OKCODE'. st_bdc_data-fval = '=UPD'. APPEND st_bdc_data TO ti_bdc_data. * Presiono boton de nuevas entradas CLEAR st_bdc_data. st_bdc_data-program = 'SAPLZTABLA_USUARIOS'. st_bdc_data-dynpro = '0001'. st_bdc_data-dynbegin = 'X'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'BDC_OKCODE'. st_bdc_data-fval = '=NEWL'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-program = 'SAPLZTABLA_USUARIOS'. st_bdc_data-dynpro = '0001'. st_bdc_data-dynbegin = 'X'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-DNI'. st_bdc_data-fval = st_usuarios-dni. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-NOMBRE_APE'. st_bdc_data-fval = st_usuarios-nombre_ape. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-ESTADO_USU'. st_bdc_data-fval = st_usuarios-estado_usu. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-DIRECCION'. st_bdc_data-fval = st_usuarios-direccion. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-CODIGO_POSTAL'. st_bdc_data-fval = st_usuarios-codigo_postal. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-FECHA_NAC'. st_bdc_data-fval = st_usuarios-f_nacimiento. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'ZTABLA_USUARIOS-ESTADO_CIVIL'. st_bdc_data-fval = st_usuarios-estado_civil. APPEND st_bdc_data TO ti_bdc_data. * Grabo los Registros CLEAR st_bdc_data. st_bdc_data-fnam = 'BDC_OKCODE'. st_bdc_data-fval = '=SAVE'. APPEND st_bdc_data TO ti_bdc_data. * Cierro la segunda pantalla CLEAR st_bdc_data. st_bdc_data-program = 'SAPLZTABLA_USUARIOS'. st_bdc_data-dynpro = '0001'. st_bdc_data-dynbegin = 'X'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'BDC_OKCODE'. st_bdc_data-fval = '=ENDE'. APPEND st_bdc_data TO ti_bdc_data. * Cierro la primer pantalla CLEAR st_bdc_data. st_bdc_data-program = 'SAPMSVMA'. st_bdc_data-dynpro = '0100'. st_bdc_data-dynbegin = 'X'. APPEND st_bdc_data TO ti_bdc_data. CLEAR st_bdc_data. st_bdc_data-fnam = 'BDC_OKCODE'. st_bdc_data-fval = '/EENDE'. APPEND st_bdc_data TO ti_bdc_data.Por cada vez que se ingrese en la tabla BDCDATA, una nueva pantalla, debe ingresarse un BDC_OKCODE.
 
 
 
Sobre el autor
Publicación académica de Marco Antonio Vazquez Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Marco Antonio Vazquez Gonzalez
Mexico - Legajo: RB98L
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Marco Vazquez