Lección 6. Batch Input utilizando Juego de Datos.
1.- Mi primer Batch Input utilizando Juego de Datos.
Vamos a crear un Batch Input utilizando la técnica de Juego de Datos. Ol Objetivo del Batch Input será la carga inicial de datos de la tabla ZTABLA_USUARIOS.
Para ello vamos a crear un archivo de texto con registros que cumplan con la estructura de la tabla ZTABLA_USUARIOS, si tener en cuenta el campo Mandante.
Como lo vamos a hacer será la carga inicial de la tabla usuarios, borraremos su contenido previamente a la ejecución de este ejemplo.
Ahora seguiremos los pasos que establecimos en la primera lección de la unidad.
Paso 1ro.: Declaración de los datos propios del Batch Input.
Declaramos una tabla interna y una estructura, ambas del tipo BDCDATA y otra tabla interna de usuarios que contendrá los registros que levantemos del archivo de entrada.
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.
dni(8) TYPE c, "Dni
nombre_ape(35) TYPE c, "Nombre y Apellido
estado_usu(1) TYPE c, "Estado del usuario
direccion(30) TYPE c, "Dirección
codigo_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 2do.: Lectura de datos de archivo de entrada.
Ejecutamos el método GUI_UPLOAD para levantar el archivo de entrada con la información para generar el Batch Input.
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.
IF sy-subrc NE 0.
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.
IF ti_archivo[] IS INITIAL.
MESSAGE s000(z_prueba) WITH text-005.
.
Paso 3ro.: Apertura de la sesión del Juego de Datos.
Para realziar la 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.
FORM apertura_jd.
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