✒️ABAP El concepto de Batch Input
ABAP El concepto de Batch Input
UNIDAD 7. BATCH INPUT vs BAPIS Y TEMAS AVANZADOS
EL CONCEPTO DE BATCH INPUT
1. QUE ES UN BATCH INPUT
Podremos dar de alta, modificar o borrar grandes cantidades de datos en el sistema, de forma automática y utilizando las mismas transacciones, con sus respectivas validaciones. Es decir, q es una técnica automática mediante la cual podremos realizar la carga masiva de datos en el sistema utilizando las validaciones de las transacciones.
Generalmente, la carga inicial de datos se realizará levantando los datos de un archivo.
2. TECNICAS DE BATCH INPUT
Existen 2 técnicas para realizar un Batch Input q son la forma ONLINE y la forma BATCH.
- CALL TRANSACTION: se realiza de forma ONLINE, por lo q ejecuta las actualizaciones en el momento en q se ejecuta el programa del Batch Input. Se utiliza la sentencia estándar CALL TRANSACTION.
- JUEGO DE DATOS: se realiza de forma BATCH (o de fondo) y queda almacenado en SAP para su posterior ejecución mediante 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.
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 Direct Input los módulos de funciones de SAP ejecutan las pruebas de consistencia. En el Batch Input estos controles de consistencia se ejecuta con ayuda de las pantallas, esto significa q el Direct Input tiene ventajas importante en cuanto a performance en comparación al Batch Input, pero hay pocos programas para realizar Direct Input y tiene sentido utilizarlos solo si cumple plenamente con el objetivo del requerimiento.
Los programa de Direct Input actualiza las tablas de BD de SAP en forma directa, como sabemos esto esta prohibido ya que los datos estándar de SAP no se puede actualizar en forma directa debido a q de esta forma se pierde la consistencia y la 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 q debemos solamente utilizar los ya existente, pero por supuesto q si se puede escribir programas ABAP para actualizar las tablas BD Z siempre teniendo en cuenta la consistencia y la seguridad de los datos.
SAP ha creado programas Direct Input en un esfuerzo de querer mejorar los procedimiento de Batch Input cuyo velocidad de procesamiento es muy inferior al Direct Input, la técnica de Direct Input es ideal para la transferencia de grandes cantidades de datos.
Para mantener e iniciar estos programas se utiliza la transacción estándar BMV0.
Ejemplos de programas de Direct Input son:
- Para el módulo financiero o FI el programa RFBIBL00.
- Para el módulo de gestión de materiales MM el programa estándar RMDATIND.
- Para el módulo de ventas y distribuciones SD el programa estándar RVAFSS00.
- Para el módulo de administración de activos AM el programa estándar RAALTD11.
- Para el módulo de control SO el programa estándar RKEVEXTO.
3. PASOS PARA LA CREACION DE UN BATCH INPUT
Dependen de la técnica utilizada.
CALL TRANSACTION
- Paso 1ero: Declaración de datos propios del Batch Input.
- Paso 2do: Lectura de datos de archivo de entrada.
- Paso 3ro: Carga de la tabla BDCDATA.
- Paso 4to: Ejecución de la sentencia CALL TRANSACTION.
Estructura BDCDATA:
Esta estructura estándar del sistema es muy utilizada en los Batch Inputs ya q se define el tipo de datos de la tabla interna q almacena los datos q se cargarán en el Batch Input.
JUEGOS DE DATOS
- Paso 1ero: Declaración de los datos propios del Batch Input.
- Paso 2do: Lectura de datos de archivo de entrada.
- Paso 3ro: Apertura de la sesión del Juego de Datos.
- Paso 4to: Carga de la tabla BDCDATA.
- Paso 5to: Inserción del Juego de Datos.
- Paso 6to: Cierre de la sesión del Juego de Datos.
- Paso 7mo: Ejecución del Juego de Datos a través de la transacción SM35 o a través de la creación de un Job y la ejecución del programa estándar RSBDCBTC.
Programa RSBDCBTC.
Nos permite realizar la ejecución online de un juego de datos.
4. 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.
La tabla BDCDATA será una tabla interna q tendrá los mismos campos q la estructura BDCDATA. Los campos q forman parte de la estructura son:
NOMBRE CAMPO TIPO LONG DESCRIPCION
PROGRAM CHAR 40 Contendrá el nombre del programa ABAP q se ejecuta
DYNPRO NUMC 4 Contendrá el nro. la dynpro o pantalla en ejecución
DYNBEGIN CHAR 1 Contendrá una "X" cuando se comience una nueva pantalla.
FNAM CHAR 132 Contendrá el nombre del campo q se desea cargar.
Este campo es sensible a mayúsculas y minúsculas.
FVAL CHAR 132 Contendrá el valor q se desea cargar en FNAM.
Ej de como cargaríamos la tabla BDCDATA.
Supongamos q queremos hacer un Batch Input para cargar con un registro a nuestra tabla ZTABLA_USUARIOS.
Si ejecutamos esta acción en forma manual, deberíamos hacer lo siguiente:
- Ingresar a la transacción SM30, introducir el nombre de la tabla, presionar el botón de modificación o maintain, presionar el botón de nuevas entradas o new entries, introducir el contenido del registro con todos sus campos, presionar el botón grabar y salir de la transacción.
Si representamos en código el procedimiento anteriormente descrito, escribiríamos:
Para ingresar a la primera pantalla y presionar el botón de mantenimiento
* 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.
IMPORTANTE: Por cada vez q se ingrese en la tabla BDCDATA, una nueva pantalla, debe ingresarse un BDC_OKCODE.
Luego, presionamos el botón de Nuevas entradas.
* Presiono boton de nuevas entradas
CLEAR st_bdc_data.
st_bdc_data-program = 'SAPLZTABLA_USUARIOS'.
st_bdc_data-dynpro = '0002'.
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.
IMPORTANTE: Los números de las dynpros siempre deben tener 4 dígitos.
Después ingreso el registro del usuario. En la imagen q vemos a continuación no figuran todos los campos de la tabla de usuarios.
CLEAR st_bdc_data.
st_bdc_data-program = 'SAPLZTABLA_USUARIOS'.
st_bdc_data-dynpro = '0002'.
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.
IMPORTANTE: El código anterior está diseñado para dar de alta un solo registro en la tabla usuarios.
Si quisiéramos ingresar más de un registro, vamos a tener q manejar un índice.
Esto lo veremos en detalle en las próximas lecciones.
Por último, grabamos y salimos de ambas pantallas.
* 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 = '0002'.
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.
 
 
 
Sobre el autor
Publicación académica de Mayra Maria Pino Rodriguez, en su ámbito de estudios para la Carrera Consultor ABAP.
Mayra Maria Pino Rodriguez
Profesión: Licenciada Cibernética Matemática - Republica Dominicana - Legajo: RA62Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Mayra Pino