✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
Crear Batch Input Online:
--------------------------------------------------------------------------------------------
1- Declaración de datos propios del Batch Input:
* 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 mensajes
DATA: BEGIN OF ti_messages OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF ti_messages.
* Estructura de mensajes
DATA: st_messages TYPE bdcmsgcoll.
* Tabla de usuarios
DATA: ti_archivo TYPE STANDARD TABLE OF ztabla_usuarios,
st_archivo LIKE LINE OF ti_archivo.
* Tabla de errores
DATA: BEGIN OF ti_errores OCCURS 0,
dni TYPE z_dni,
descripcion(100) TYPE c,
END OF ti_errores.
* Estructura de errores
DATA: st_errores LIKE LINE OF ti_errores.
--------------------------------------------------------------------------------------------
2- Lectura de datos de archivo de entrada:
Ejecutamos GUI_UPLOAD para levantar el archivo de entrada con la información para generar el Batch Input.
--------------------------------------------------------------------------------------------
3- Carga de la tabla BDCDATA:
Se utiliza la subrutina BDC_FIELD.
Al ingresar mas de un registro, será necesario utilizar indices.
Ejemplo:
* Cargo datos del usuario
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-DNI(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-dni.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-NOMBRE_APE(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-nombre_ape.
--------------------------------------------------------------------------------------------
4- Ejecución de la sentencia CALL TRANSACTION:
------------------------------------------------------------------------------------
Ejemplo:
* Call transaction
CALL TRANSACTION v_cod_trans USING ti_bdc_data
MODE v_modo
UPDATE v_update
MESSAGES INTO ti_messages.
IF NOT sy-subrc IS INITIAL.
v_error = 'X'.
ENDIF.
------------------------------------------------------------------------------------
USING:
Especificamos la tabla BDCDATA que se utilizará.
------------------------------------------------------------------------------------
MODE:
A:
Procesamiento con la visualización de todas las pantallas.
Valor de default.
E:
Se muestran las pantallas solo si ocurre un error.
N:
No se muestran las pantallas.
P:
No se muestran las pantallas, pero si se alcanza un breakpoint, se pasa el control a debugger.
------------------------------------------------------------------------------------
UPDATE:
Modo de actualización:
A:
Asincrónica.
Se produce de igual forma como si utilizaramos la sentencia COMMIT WORK.
Valor por default.
S:
Sincrónica.
Se produce de igual forma como si utilizaramos la sentencia COMMIT WORK AND WAIT.
L:
Actualización local.
------------------------------------------------------------------------------------
MESSAGES INTO:
Todos los mensajes son almacenados en la tabla interna BDCMSGCOLL.
--------------------------------------------------------------------------------------------
 
 
 
Sobre el autor
Publicación académica de Martin Alejandro Goya, en su ámbito de estudios para la Carrera Consultor ABAP.
Martin Alejandro Goya
Profesión: Ingeniero en Computacion - Argentina - Legajo: CJ13E
✒️Autor de: 49 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Martin Goya