✒️ABAP El Batch Input utilizando el Juego de datos
ABAP El Batch Input utilizando el Juego de datos
UNIDAD 7: BATCH INPUT VS BAPIS Y TEMAS AVANZADOS
LECCION 6: BATCH INPUT UTILIZANDO JUEGO DE DATOS
1| Mi primer BI utilizando juego de datos
- Vamos a crear un archivo de texto con registros que cumplan con la estructura de la tabla ZTABLA_USUARIOS, sin el campo mandante.
21567432Joaquin Pérez ALarreo Álvarez 3454 134512081967S
31987623Barbara Pereira ALavalleja 543 145623091987S
27982134Eugenia Herrera AGuido 56 167507041979S
Borraremos su contenido antes de la ejecución.
Paso 1.- Declaración de los datos propios de BI
Declarar una TI y estructura ambas del tipo BDCDATA, y otra donde levantaremos los registros del archivo de entrada.
*----------------------------------------------------------------------*
* Declaración de datos
*----------------------------------------------------------------------*
* 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: BEGIN OF ti_archivo OCCURS 0,
dni(8) TYPE c, "Dni
nombre_ape(35) TYPE c, "Nombre y Apellido
estado_usu(1) TYPE c, "Estado del usuario
dirección(30) TYPE c, "Dirección
código_postal(4) TYPE c, "Código Postal
f_nacimiento(8) TYPE c, "Fecha Nacimiento
estado_civil(1) TYPE c, "Estado civil
END OF ti_archivo.
DATA: st_archivo LIKE LINE OF ti_archivo.
* Variables
DATA: v_campo(35) TYPE c,
v_indice(2) TYPE c,
v_qid TYPE apq_quid,
v_group TYPE apq_grpn.
Paso 2.- Lectura de datos del archivo de entrada
Ejecutamos el método CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD, para levantar el archivo de entrada
* Se abre el archivo de entrada para lectura
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = vl_file
filetype = 'ASC'
has_field_separator = ''
CHANGING
data_tab = ti_archivo[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
Paso 3.- Apertura de la sesión del juego de datos.
Vamos a utilizar la función BDC_OPEN_GROUP, especificando el mandante, el grupo y el usuario; tal como se muestra.
v_group = sy-repid.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = v_group
keep = 'X'
user = sy-uname
IMPORTING
qid = v_qid
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Paso 4.- Carga de la tabla BDCDATA
Utilizaremos la subrutina BDC_FIELD, antes inicializar la TI del BI
Paso 5.- Inserción del juego de datos
Utilizar la función BDC_INSERT, tal como vemos a continuación.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'SM30'
TABLES
dynprotab = ti_bdc_data
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Paso 6.- Cierre de la sesión del juego de datos
Utilizar la función BDC_CLOSE_GROUP, tal como vemos a continuación.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 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.
Paso 7.- Ejecución del juego de datos
Entramos a la TX SM35. Seleccionamos el juego de datos y presionamos EJECUTAR.
====> En la ventana de dialogo marcamos INVISIBLE y EJECUTAR.
Finalmente la sesión cambiara de estatus dependiendo del resultado de la ejecución. y los datos se actualizaran en la tabla ZTABLA_USUARIOS.
2| Utilización del programa RSBDCBTC para la ejecución. del juego de datos
- Para ejecutar en forma online, vamos a tener que crear un job, Submitir la ejecución. del programa RSBDCBTC y cerrar el job .
SUBMIT rsbdcbtc
USER sy-uname
VIA JOB v_jobgroup
NUMBER v_jobcount
WITH queue_id = v_qid
WITH mappe = v_jobgroup
WITH modus = 'N' "No display
WITH logall = ''
AND RETURN.
Luego en la SM35 vemos que el juego de datos se proceso sin la necesidad de hacerlo manualmente.
Nota.- La diferencia entre CALL TRANSACTION es que es sincrono, se graban datos solo a una Transacción y no genera log y juego de datos es asíncrono, graba múltiples transacciones y genera log por cada sesión.
 
 
 
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