✒️ABAP El concepto de Batch Input
ABAP El concepto de Batch Input
BATCH INPUT
Es una técnica de SAP para poder cargar al sistema grandes cantidades datos de forma automática. Esto se hace, por ejemplo, si cuando ya en un ambiente de producción es necesario realizar el registro de aproximadamente 10 mil clientes. Habría que hacerlos uno por uno para poder cumplir con sus respectivas validaciones, por lo cual esta tarea demoraría mucho tiempo y costaría muchos recursos.
El flujo de la información sería así: Archivos externos-Programa Batch Input- SAP.
Existen básicamente dos técnicas para realizar un Batch Input, una se realiza de forma online y otra de forma Batch.
TÉCNICAS DE BATCH INPUT
CALL TRANSACTION: Se realiza se forma online, por lo que realiza las actualizaciones en el momento en que se ejecuta el programa; se realiza mediante la sentencia CALL TRANSACTION.
JUEGO DE DATOS: Se realiza de forma Batch y queda almacenadoen SAP para su posterior ejecución a través de la transacción SM35. Consiste en la ejecución de una serie de funciones estándar para la apertura, ejecución y cierre del juego de datos.
Nota: Como alternativa a las técnicas de carga inicial de datos mediante Batch Input existe la técnica llamada Direct Input, o entrada directa. A través de esta transacción los módulos de funciones de SAP ejecutan las pruebas de consistencia. En el Batch Input estos controles de consistencia se ejecutan con la ayuda de las pantallas, esto significa que el Direct Inut tiene ventajas importantes en cuanto a perfomance en comapración con el Batch Input, pero hay pocos programas para utilizar Direct Input y tiene sentido utilizarlos solo si cumplen plenamente con el objetivo del requerimiento.
Los programas de Direct Input actualizan las tablas de bases de datos de SAP en forma directa, pero como se sabe, esto está prohibido ya que los datos en el sistema no se pueden actualizar de forma directa debido a que de esta forma se pierde la consistencia y seguridad de los datos. Los programas de Direct Input son la excepción a la regla, por lo tanto no es posible escribir programas ABAP Z de Direct Input sino que solamente se pueden utilizar los existentes, pero sí se pueden escribir programas ABAP Z, siempre tomando en cuenta la consistencia y seguridad de los datos.
SAP ha creado programas de Direct Input en un esfuerzo de mejorar los Direct Input cuyos procedimientos de Batch Input cuya velocidad de procesamiento es inferior a la de Direct Input. La técnica de Batch Input es ideal para la transferencia de grandes cantidades de datos, y se hace mediante la transacción BMV0.
CREACIÓN DE UN BATCH INPUT.
CALL TRANSACTION:
1: Declaración de datos propios del Batch Input.
2: lectura de datos de archivos de entrada.
3: Carga de la tabla BDCDATA.
4: Ejecución de la sentencia CALL TRANSACTION.
Estructura BDCDATA: Esta estructura estándar del sistema es muy utilizada en los batch inputs ya que define el tipo de datos de la tabla interna que almacena los datos que se cargarán en el batch input.
JUEGO DE DATOS:
1: Declaración de los datos propios del Batch Input.
2: Lectura de datos de archivo de entrada.
3: Apertura de la sesión del Juego de Datos.
4: Carga de la tabla BDCDATA.
5: Inserción del juego de datos.
6: Cierre de sesión del Juego de Datos.
7: Ejecución del Juego de Datos a través de la transacción SM35 o a través de un job y la ejecución del programa estándar RSBDCBTC.
Programa RSBDCBTC: Este programa estándar del sistema nos permite realizar la ejecución online de un juego de datos.
CARGA DE LA TABLA BDCDATA
El paso más importante en la ejecución de un Batch Input es la carga de la tabla BDCDATA, que será una tabla interna que tendrá los mismos campos que la estructura DBCDATA. Tendrá los siguientes campos:
NOMBRE DEL CAMPO |
TIPO |
LONGITUD |
DESCRIPCIÓN |
PROGRAM |
CHAR |
40 |
Contendrá el nombre del programa ABAP que se ejecuta. |
DYNPRO |
NUM |
4 |
Contendrá el nro. la dynpro o pantalla en ejecución. |
DYNBEGIN |
CHAR |
1 |
Contendrá una “X” cuando de comience una nueva pantalla. |
FNAM |
CHAR |
132 |
Contendrá el nombre del campo que se desea descargar. Este campo es sensible a mayúsculas y minúsculas. |
FVAL |
CHAR |
132 |
Contendrá el valor que se desea cargar en la FNAM. |
Suponiendo que se quiere hacer un Batch Input para cargar con un registro a nuestra tabla de usuarios ZTABLA_ USUARIOS.
Si se hace de forma manual tendría que hacerse así.
Ingresar a la transacción SM30, ubicar la tabla y agregar manualmente los registros deseados. Presionar grabar y salir de la transacción.
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.
Nota: Por cada vez que ingrese en la table BDCDATA, una nueva pantalla, debe ingresarse un BDC_OKCODE.
Luego se presionan 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.
Después ingreso un registro del usuario. En la imagen que vemos a continuación no figuran:
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.
El código anterior sirve para dar de alta un solo registro a la vez, caso contrario tendría que manejarse un índice.
Al final se graba y salimos de ambas pantallas.
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.
 
 
 
Sobre el autor
Publicación académica de Jose Alberto Rivera Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Alberto Rivera Gonzalez
Profesión: Técnico Informático - Mexico - Legajo: LG32F
✒️Autor de: 102 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rivera