✒️ABAP / El Batch Input utilizando el Juego de datos Por Mara Romero Hernandez
ABAP El Batch Input utilizando el Juego de datos

¿Qué es un "Juego de Datos"?
Es una sesión de batch input que se almacena en la base de datos de SAP y se ejecuta posteriormente, ya sea de forma manual (desde la transacción SM35) o automática (vía jobs o programas en background).
Características clave:
· Se ejecuta en background (no bloquea la sesión del usuario).
· Permite reintentos si falla.
· Se puede programar para ejecutar en horarios específicos.
· Ideal para procesos masivos y críticos.
---
Flujo de Trabajo con Juego de Datos
1. Abrir la sesión → BDC_OPEN_GROUP
2. Insertar la transacción → BDC_INSERT
3. Cerrar la sesión → BDC_CLOSE_GROUP
4. Ejecutar la sesión → Manual con SM35 o automático con RSBDCBTC
---
Paso a Paso con Código ABAP
1. Declaración de Datos
```abap
" Tipo para la tabla BDCDATA
TYPES: BEGIN OF ty_bdcdata,
program TYPE bdc_prog, " Programa
dynpro TYPE bdc_dynr, " Dynpro
dynbegin TYPE bdc_start, " Inicio dynpro
fnam TYPE fnam___4, " Nombre del campo
fval TYPE bdc_fval, " Valor del campo
END OF ty_bdcdata.
" Tablas y variables
DATA: ti_bdcdata TYPE TABLE OF ty_bdcdata,
wa_bdcdata LIKE LINE OF ti_bdcdata.
DATA: ti_archivo TYPE TABLE OF ztabla_usuarios, " Estructura de datos de entrada
wa_archivo LIKE LINE OF ti_archivo.
DATA: v_grupo TYPE apqi-groupid. " Nombre del grupo de sesión
DATA: v_gid TYPE apqi-guid. " GUID de la sesión
```
---
2. Leer Archivo de Entrada
```abap
DATA: lv_ruta TYPE string.
lv_ruta = 'C:tempdatos_usuarios.txt'.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_ruta
filetype = 'ASC'
CHANGING
data_tab = ti_archivo.
```
---
3. Abrir la Sesión del Juego de Datos
```abap
v_grupo = 'ZCARGA_USUARIOS'. " Nombre que identifica la sesión
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt " Mandante
group = v_grupo " Nombre del grupo
user = sy-uname " Usuario que crea la sesión
keep = 'X' " Mantener sesión después de ejecutar
IMPORTING
gid = v_gid " GUID de la sesión
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 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
```
---
4. Cargar la Tabla BDCDATA (Usando Subrutina)
```abap
LOOP AT ti_archivo INTO wa_archivo.
REFRESH: ti_bdcdata.
" Pantalla inicial de SM30
PERFORM llenar_tabla_bdcdata USING 'X' 'SAPMSVMA' '0100'.
PERFORM llenar_tabla_bdcdata USING '' 'BDC_CURSOR' 'VIEWNAME'.
PERFORM llenar_tabla_bdcdata USING '' 'BDC_OKCODE' '=UPD'.
PERFORM llenar_tabla_bdcdata USING '' 'VIEWNAME' 'ZTABLA_USUARIOS'.
" Pantalla de mantenimiento de la tabla
PERFORM llenar_tabla_bdcdata USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM llenar_tabla_bdcdata USING '' 'BDC_OKCODE' '=NEWL'.
" Pantalla de nuevo registro
PERFORM llenar_tabla_bdcdata USING 'X' 'SAPLZTABLA_USUARIOS' '0002'.
PERFORM llenar_tabla_bdcdata USING '' 'ZTABLA_USUARIOS-DNI' wa_archivo-dni.
PERFORM llenar_tabla_bdcdata USING '' 'ZTABLA_USUARIOS-NOMBRE' wa_archivo-nombre.
PERFORM llenar_tabla_bdcdata USING '' 'BDC_OKCODE' '=SAVE'.
" Insertar la transacción en la sesión
PERFORM insertar_en_sesion.
ENDLOOP.
```
---
5. Insertar en la Sesión (`BDC_INSERT`)
```abap
FORM insertar_en_sesion.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tocode = 'SM30' " Transacción a ejecutar
TABLES
dynprotab = ti_bdcdata " Tabla con los datos
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tocode_invalid = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
```
---
6. Cerrar la Sesión (`BDC_CLOSE_GROUP`)
```abap
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
```
---
Ejecución del Juego de Datos
Opción 1: Ejecución Manual (Transacción SM35)
1. Ejecutar SM35.
2. Buscar el nombre del grupo (ej: ZCARGA_USUARIOS).
3. Seleccionar la sesión.
4. Click en Ejecutar (F8).
5. Elegir modo:
· Visual: Muestra las pantallas (útil para debug).
· Invisible: Ejecución en background sin mostrar nada.
· Solo errores: Muestra solo si hay error.
Opción 2: Ejecución Automática (Programa RSBDCBTC)
Se puede ejecutar la sesión via código ABAP usando la función BDC_SUBMIT o el programa RSBDCBTC.
```abap
SUBMIT rsbdcbtc
WITH p_groupe = 'ZCARGA_USUARIOS'
WITH p_dest = space
WITH p_mode = 'N' " Modo background
AND RETURN.
```
---
Ventajas vs Desventajas
Ventajas Desventajas
✅ Ejecución en background âš ï¸ Más complejo de implementar
✅ Reintentos automáticos âš ï¸ Requiere monitoreo (SM35)
✅ Ideal para datos críticos âš ï¸ Menos flexible que CALL TRANSACTION
 
 
 
Sobre el autor
Publicación académica de Mara Fadua Romero Hernandez, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Mara Fadua Romero Hernandez
Profesión: Psicóloga - Mexico - Legajo: EE18E
✒️Autor de: 67 Publicaciones Académicas
🎓Cursando Actualmente: Carrera Consultor ABAP Nivel Avanzado
🎓Egresado del módulo:
Certificación Académica de Mara Romero






Disponibilidad Laboral: FullTime


















