✒️ABAP El Batch Input utilizando el Juego de datos
ABAP El Batch Input utilizando el Juego de datos
BATCH INPUT UTILIZANDO JUEGO DE DATOS
Primero: Tener una archivo de texto con registros que cumplan la estructura de la tabla donde se van a guardar.
Segundo: como será una carga incial, borrar el contenido de la tabla previamente a su ejecución.
Tercero: Declaración de los datos propios del BATCH INPUT:
1 Tabla interna del tipo BDCDATA
1 Estructura del tipo BDCDATA
1 Tabla interna que contendrá los registros del archivo de texto
1 Estructura del tipo de la tabla interna que contendrá los registros
Ejemplo:
* Tabla de BATCH INPUT con la estructura BDCDATA
DATA: BEGIN OF ti_bdc_data OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF ti_bdc_data.
* Estructura del BATCH INPUT
DATA: st_bdc_data TYPE bdcdata.
* Tabla interna fichero texto
DATA: BEGIN OF ti_archivo OCCURS 0,
dni(8) TYPE c,
nombre_ape(35) TYPE c,
estado_usu(1) TYPE c
END OF ti_archivo.
* Estructura fichero de texto
DATA: st_archivo LIKE LINE OF ti_archivo.
Cuarto: Lectura de datos del archivo de entrada, ejecutando el método GUI_UPLOAD
Ejemplo:
* Abrir archivo de entrada para lectura
CALL METHOD cl_dui_frontend_services=>gui_upload
EXPORTING
filename = vl_file
filetype = ‘ASC’
has_field_separatos = ‘’
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
unknow_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknow_dp_error =12
acces_denied = 13
dp_out_of_memory = 14
disk_full =15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
Quinto: Apertura de la sesión del juego de datos, mediante la función BDC_OPEN_GROUP, se debe especificar el manante, el grupo y el usuario.
Ejemplo:
v_group = sy-repid.
CALL FUNCION ‘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
OTHER = 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.
Sexto: Carga de la tabla BDCDATA, medianta la subrutina BDC_FIELD. Antes inicializar la tabla interna
Séptimo: Inserción del juego de datos mediante la función BDC_INSERT
Ejemplo:
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.
MESSGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ENDIF.
Octavo: Cierre de la sesión del juego de datos, mediante la función BDC_CLOSE_GROUP
Ejemplo:
CALL FUNCTION ‘BDC_CLOSE_GROUP’
EXCEPTION
not_open = 1
queue_error = 2
OTHER = 3.
IF sy-subrc <> 0.
MESSGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
ENDIF.
Noveno: Ejecución del juego de datos, para ello entramos en la Tx SM35, seleccionamos el juego de datos y lo ejecutamos presionando el botón ejecutar (Process). En la siguiente ventana que nos aparece, seleccionamos Invisible (Background) y presionamos ejecutar (Process).
EJECUCION AUTOMATICA DEL JUEGO DE DATOS
El programa RSBDCBTC nos permite ejecutar de forma OnLine el juego de datos para hacerlo de forma autiomatica hay que crear un job, enviar la ejecución de RSBDCBTC y cerrar el job.
Para hacer el envío (SUBMIT) del programa ejecutaremos la sentencia SUBMIT de este modo:
SUBMIT rsbdcbtc
USER sy-uname
VIA JOB v_jobgroup
NUMBER v_jobcount
WITH queue_id = v_qis
WITH mappe = v_jobgroup
WITH modus = ‘N’ “no display
WITH logall = ‘’
AND RETURN.
Luego si vamos a la transacción SM35 podremos ver que el juego de datos se procesó sin necesidad de hacerlo manualmente.
Las principales diferencias entre CALL TRANSACION y JUEGO DE DATOS son:
CALL TRANSACTION
Procesamiento es Sincrono (online) , solo se trasfieren datos a una Transacción, no se generan logs.
JUEGO DE DATOS
Procesamiento es Asincrono (de fondo) , se transfieren datos a múltiples transacciones, se generan logs por cada sesión.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Cristina Fraile Del Rio
Sobre el autor
Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para la Carrera Consultor ABAP.
Josep Antoni Lopez Moyano
Profesión: It Manager - España - Legajo: QP26P
✒️Autor de: 375 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP HCM Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
- Máster Funcional ABAP
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial