✒️ABAP El Batch Input utilizando el Juego de datos
ABAP El Batch Input utilizando el Juego de datos
BATCH INPUT JUEGO DE DATOS
1.- Mi primer batch input utilizando juego de datos.- El objetivo serà la carga inicial 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, sin tener en cuenta el campo mandante.
Se debe borrar su contenido previamente a la ejecuciòn de este ejemplo.
- Paso primero: 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 cotendrà los registros que levantemos del archivo de entrada.
* 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_dbc_data TYPE bdcdata.
*Tabla de usuarios
DATA BEGIN OF ti_archivo OCCURS 0.
dni(8) TYPE c,
nombre_ape(35) TYPE c,
estado_usu(1) TYPE c,
direccion(30) TYP c,
codigo_postal TYPE c,
fecha_nac(8) TYPE c,
estado_civil(1) TYP c,
END OF ti_archivo.
DATA: st_archivo LIKE LINE OF ti_archivo.
* Variables
DATA: v_campo TYPE c,
v_indice TYPE c,
v_qid TYPE apq_quid,
v_group TYP apq_grn.
- Paso segundo: Lectura del archivo de entrada.
Ejecutamos el mètodo GUI_UPLOAD, para levantar el archivo de entrada con la informaciòn para generar el batch input
* se abre el archivo de entrada para lectura.
CALL METHOD cl_gui_frontend_services= gui_upload
EXPORTING
filename = v1_file
fieltype = 'ASC'
CHANGING
data_tab = ti_archivo^*
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_typ = 5
no_authority = 6
unknow_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknow_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 tercero: Apertura de la sesiòn del juego de datos.
Se utilizarà la funciòn BDC_OPEN_GROUP, especificando el mandante, el grupo y el usuario.
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_loked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHER = 11.
IF sy-subrc NE 0.
MESSAGE ID sy-magid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
- Paso cuarto: Carga de a tabla BDCDATA.
Se utiliza la rutina BDC_FIELD, para cargar la tabla BDCDATA, Antes se debe utilizar la tabla interna del Batch Input.
- Paso quinto: Inserciòn del juego de Datos.
Para realizar la inserciòn del juego de datos se utiliza la funciòn BDC-INSERT:
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TABLES
EXCEPTIONS
OTHERS = 7.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-,sgv4.
ENDIF.
- Paso sexto: Cierre de la sesiòn del juego de datos.
Para cerrar el juego de datos se utiliza la funciòn BDC_CLOSE_GROUP:
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 5.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-,sgv4.
ENDIF.
- paso sèptimo: Ejecuciòn del juego de Datos.
Para realizar la ejecuciòn del juego de Datos vamos a entrar a la transacciòn SM35. Vamos a seleccionar el juego de datos y lo ejecutamos presionando el botòn "Ejecutar (Process)".
En la siguiente ventana de diàlogo marcamos la opciòn "Invisible (Background)" y presionamos "Ejecutar(Process)"
Finalmente la sesiòn cambiarà de status dependiendo del resultado y los datos se actualizaràn en la tabla ZTABLA_USUARIOS.
2.- Utilizaciòn del programa RSBDCBTC, para la ejecuciòn del juego de datos.
Se puede ejecutar el juego de datos en forma ONLINE mediante la ejecuciòn del programa estàndar RSBDCBTC, pero para ello se debe crear un JOB, sometoer la ejecuciòn del programa RSBDCBTC y cerrar el JOB.
SUBMIT rsdbcbtc
USER sy-uname
VIA JOB v_jobgroup
NUMBER v_jobcount
WITH queue_id = v_qid
WITH mappe = v_jobgroup
WITH modus = 'N'
WITH logall = ' '
AND RETURN.
Luego si vamos a la transacciòn SM35, vemos que el juego de datos se procesò sin la necesidad de hacerlo manualmente.
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta