✒️ABAP El Batch Input utilizando Call transaction
ABAP El Batch Input utilizando Call transaction
UNIDAD 7: BATCH INPUT VS BAPIS Y TEMAS AVANZADOS
LECCION 4: BATCH INPUT UTILIZANDO CALL TRANSACTION
1| Mi primer Batch Input utilizando CALL TRANSACTION
Vamos a realizar la carga inicial de datos de la tabla ZTABLA_USUARIOS.
00121567432Joaquin Pérez ALarreo Álvarez 3454 134512081967S
00131987623Barbara Pereira ALavalleja 543 145623091987S
00127982134Eugenia Herrera AGuido 56 167507041979S
Los pasos a seguir, previamente borraremos el contenido de la tabla.
° 1er paso.- Declarar una TI y una estructura del tipo BDCDATA, otra TI tipo BDCMSGCOLL con su estructura, servirá para almacenar los mensajes que se produzcan cuando ejecutemos el call transaction, la TI de usuarios, que contendrá los datos del archivo de entrada y una tabla para mostrar los errores entre otras.
* 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,
descripción(100) TYPE c,
END OF ti_errores.
° 2do paso.- Lectura de datos de archivo de entrada
Ejecutamos el método CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD para levantar el archivo de entrada con información para generar BI.
° 3er paso.- Carga de la tabla BDCDATA
Utilizamos la subrutina BDC_FIELD, previamente se debe inicializar la TI del BI y la de mensajes. Como son varios registros hay que manejar indice para saber en que fila de la pantalla estamos cargando datos, logrando concatenar al nombre del campo el numero de fila entre paréntesis.
* 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.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-ESTADO_USU(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-estado_usu.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-DIRECCION(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-direccion.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-CODIGO_POSTAL(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-codigo_postal.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-FECHA_NAC(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-fecha_nac.
CLEAR v_campo.
CONCATENATE 'ZTABLA_USUARIOS-ESTADO_CIVIL(' v_indice ')' INTO v_campo.
PERFORM bdc_field USING ' ' v_campo st_archivo-estado_civil.
° 4to paso.- Ejecutamos la TX CALL TRANSACTION
La sintaxis es:
* Call transaction
CALL TRANSACTION v_cod_trans USING ti_bdc_data MODE v_modo
MESSAGES INTO ti_messages.
IF NOT sy-subrc IS INITIAL.
v_error = 'X'.
ENDIF.
las opciones:
USING.- La tabla BDCDATA que se utilizará.
MODE.- Determina el modo de procesamiento que utiliza el BI. Pueden ser:
A Procesamiento con visualización de pantallas. Valor default
E Donde se muestra las pantallas solo si hubo error.
Si alcanza breakpoint, se termina con SY-SUBRC = 1001. Campo
SY-MSGTY = 'S', SY-MSGID = '00', SY-MSGNO = '344', SY-MSGv1 =
'SAPMSSY3' Y SY-MSGV2 = '0131'.
N Procesa sin mostrar las pantallas
P Procesa sin mostrar las pantallas.
Si alcanza breakpoint, se pasa el control al debugger.
Nota.- Conviene utilizar variable para asignar modo de procesamiento a un BI. Así podremos modificar su valor dinámica mente durante su ejecución.
UPDATE.- Determina el modo de actualización de los cambios que producirá el BI.
Modos posibles:
UPDATE EFECTO
A Actualización asincronica.
La actualización se produce de igual forma a la que sucede si utilizamos
la sentencia COMMIT WORK
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.- Todos los mensajes generados en el proceso por BI son almacenados en una TI BDCMSGCOLL. Armamos los mensajes con la función MESSAGES_PREPARE:
v_msg_id = st_messages-msgid .
v_msg_no = st_messages-msgnr.
v_msg_v1 = st_messages-msgv1.
v_msg_v2 = st_messages-msgv2.
v_msg_v3 = st_messages-msgv3.
v_msg_v4 = st_messages-msgv4.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
msg_id = v_msg_id
msg_no = v_msg_no
msg_var1 = v_msg_v1
msg_var2 = v_msg_v2
msg_var3 = v_msg_v3
msg_var4 = v_msg_v4
IMPORTING
msg_text = v_mensaje
EXCEPTIONS
function_not_completed = 1
message_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Info: la sentencia CALL TRANSACTION es muy utilizada en reportes, para acceder a una TX determinada, a partir de los datos presionados en pantalla, con el agregado de la clausula AND SKIP FIRST SCREEN.
 
 
 
Favorito:
Está publicación ha sido agregada a sus favoritos por: Joaquin Garcia Marrero
Sobre el autor
Publicación académica de Hernan Cabezas, en su ámbito de estudios para la Carrera Consultor ABAP.
Hernan Cabezas
Peru - Legajo: ZM88T
✒️Autor de: 117 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Hernan Cabezas