SAP ABAP BDC: ¿Qué es la comunicación de datos por lotes?

⚡ Resumen inteligente

SAP ABAP BDC (Comunicación de Datos por Lotes) transfiere datos heredados a R/3 mediante transacciones estándar automáticas. Esta página explica las sesiones de entrada por lotes, los métodos de transacción clásicos y de llamada, la estructura BDCDATA, el flujo de trabajo BDC_OPEN_GROUP y el registrador de entrada por lotes.

  • 🔄 Propósito principal: BDC introduce automáticamente conjuntos de datos en las pantallas de una transacción, ejecutando cada pantalla y validación comercial como lo haría un usuario.
  • 🧾 Sesión de entrada por lotes: Una sesión agrupa las llamadas a transacciones con sus datos de entrada y se almacena en la base de datos hasta que se ejecuta.
  • 🛠️ Dos métodos: La entrada de lotes clásica utiliza BDC_OPEN_GROUP, BDC_INSERT y BDC_CLOSE_GROUP, mientras que el método de llamada a transacción utiliza CALL TRANSACTION USING.
  • 🇧🇷 Elección del método: La entrada por lotes clásica es síncrona con un registro, mientras que la transacción por llamada es más rápida, asíncrona y gestiona una única transacción.
  • 🗂️ Estructura BDCDATA: Los campos PROGRAM, DYNPRO, DYNBEGIN, FNAM y FVAL describen la pantalla, el campo y el valor para cada paso.
  • ⏺️ Grabadora: El registrador de entrada por lotes captura una transacción manual y genera una sesión o un programa BDC predefinido que se ejecuta posteriormente en SM35.

SAP Comunicación de datos por lotes ABAP BDC

Introducción a la entrada por lotes

La entrada por lotes se utiliza normalmente para transferir datos desde sistemas que no son R/3 a sistemas R/3 o para transferir datos entre sistemas R/3.

Es una técnica de transferencia de datos que le permite transferir conjuntos de datos automáticamente a pantallas que pertenecen a transacciones y, por lo tanto, a un SAP sistema. La entrada por lotes está controlada por una sesión de entrada por lotes.

Sesión de entrada por lotes

Agrupa una serie de llamadas de transacciones junto con datos de entrada y acciones del usuario. Se puede utilizar una sesión de entrada por lotes para ejecutar una transacción de diálogo en la entrada por lotes, donde la sesión procesa algunas o todas las pantallas. Las sesiones de entrada por lotes se almacenan en la base de datos como tablas de base de datos y se pueden usar dentro de un programa como tablas internas al acceder a transacciones.

Puntos a tener en cuenta

  • BDI funciona realizando operaciones normales. SAP transacciones tal como lo haría un usuario, pero ejecuta la transacción automáticamente.Todas las validaciones de pantalla y la validación de la lógica empresarial se realizarán utilizando la entrada de datos por lotes.
  • Es adecuado para ingresar grandes cantidades de datos.
  • No se requiere interacción manual

Métodos de entrada por lotes

SAP Proporcionan dos métodos básicos para transferir datos heredados al Sistema R/3.

  1. Método clásico de entrada por lotes.
  2. Método de transacción de llamada.

Método clásico de entrada por lotes

En este método, un programa ABAP/4 lee los datos externos al SAP Sistema y tiendas en una sesión de entrada por lotes.

Después de crear la sesión, puede ejecutar la sesión para ejecutar el SAP transacción en el mismo.

Este método utiliza los módulos de funciones BDC_OPEN, BDC_INSERT y BDC_CLOSE

La sesión de entrada por lotes se puede procesar de 3 maneras

  1. En primer plano
  2. En el fondo
  3. Durante el procesamiento, con indicación de error

Debe procesar las sesiones de entrada por lotes en primer plano o utilizando la pantalla de error si desea probar la transferencia de datos.

Si desea ejecutar la transferencia de datos o probar su rendimiento, debe procesar las sesiones en segundo plano.

Puntos a tener en cuenta sobre el método clásico de entrada por lotes

  • Syncprocesamiento cronoso
  • Transfiera datos para múltiples transacciones.
  • SyncActualización cronosa de la base de datos.
  • Se genera un registro del proceso de entrada por lotes para cada sesión.
  • La sesión no se puede generar en paralelo.

Método de transacción de llamada.

En este método ABAPEl programa /4 utiliza la instrucción CALL TRANSACTION USING para ejecutar un SAP transacción.

Todo el proceso de entrada de lotes se realiza en línea en el programa.

Método de transacción de llamada

Puntos a tener en cuenta:

  • Procesamiento más rápido de datos
  • Procesamiento asincrónico
  • Transfiera datos para una sola transacción.
  • No se genera ningún registro de procesamiento de entrada por lotes.

Entrada de datos por lotes clásica frente a transacción por llamada

Ambos métodos llegan a la misma transacción, pero difieren en velocidad, registro de eventos y manejo de errores. La siguiente tabla muestra cuándo es más conveniente elegir cada uno.

Criterios Entrada de lotes clásica Transacción de llamada
Tecnologia BDC_OPEN_GROUP, BDC_INSERT, BDC_CLOSE_GROUP LLAMAR A LA TRANSACCIÓN USANDO
Procesabilidad Synchronous, correr más tarde desde SM35 Se ejecuta en línea, en el programa
Transacciones Muchas transacciones en una sola sesión Una sola transacción por llamada
Log Se genera automáticamente un registro de procesos por sesión. No hay registro, el programa recopila los mensajes.
Velocidad Más lento, pero robusto y reiniciable. Más rápido
Mejores para Grandes cargas heredadas únicas que deben ser auditables. Transferencias interactivas o de alta velocidad de un documento

Tras comparar los métodos, la siguiente sección describe el procedimiento general que sigue un proyecto.

Procedimientos de entrada por lotes

Procedimientos de entrada por lotes

Normalmente, observará la siguiente secuencia de pasos para desarrollar Batch Input para su organización

  1. Análisis de los datos heredados. Determine cómo se asignarán los datos que se van a transferir al SAP Estructura. También tome nota de las conversiones necesarias de tipo de datos o longitud de datos.
  2. Generar SAP Estructuras de datos para usar en programas de exportación.
  3. Exporte los datos a un archivo secuencial. Tenga en cuenta que el formato de caracteres es requerido por predefinidos SAP programas de entrada por lotes.
  4. Si SAP Los programas BDC suministrados no se utilizan, codifique su propio programa de entrada por lotes. Elija un método de entrada por lotes adecuado según la situación.
  5. Procese los datos y agréguelos al SAP Sistema.
  6. Analizar el registro del proceso. Para el método CALL TRANSACTION, donde no se crea un registro adecuado, utilice los mensajes recopilados por su programa.
  7. A partir de los resultados del análisis del proceso, corregir y reprocesar los datos erróneos.

Redacción del programa BDC

Puede observar el siguiente proceso para escribir su programa BDC

  1. Analice las transacciones para procesar datos de entrada por lotes.
  2. Decida el método de entrada por lotes que utilizará.
  3. Leer datos de un archivo secuencial
  4. Realizar conversión de datos o verificación de errores.
  5. Almacenar los datos en la estructura de entrada por lotes, BDCDATA.
  6. Genere una sesión de entrada por lotes para la entrada por lotes clásica o procese los datos directamente con la instrucción CALL TRANSACTION USING.

Estructura de datos de entrada por lotes

Declaración de estructura de datos de entrada por lotes

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
Nombre del campo Tipo Longitud Mínima Mareas Ideales para Lecciones
PROGRAMA CHAR 8 Grupo de módulos
DYNPRO NÚMERO 4 número dynpro
DINBEGIN CHAR 1 Iniciando un dynpro
FNAM CHAR 35 Nombre del campo
FVAL CHAR 80 Valor del campo

El orden de los campos dentro de los datos de una pantalla en particular no tiene importancia

Puntos a tener en cuenta

  • Al completar los datos de BDC, asegúrese de tener en cuenta la configuración del usuario. Esto es especialmente relevante para completar campos que involucran números (como cantidad, importe). Es la configuración del usuario la que decide qué es el grupo.ping carácter para números Por ejemplo: Un número de cincuenta mil se puede escribir como 50,000.00 o 50.000,00 según la configuración del usuario.
  • Condense el campo FVAL para los campos de monto y cantidad para que queden alineados a la izquierda.
  • Tenga en cuenta que todos los campos que está completando a través de BDC deben tratarse como campos de tipo carácter al completar la tabla de datos de BDC.
  • En algunas pantallas, cuando completa valores en un control de tabla usando BDC, debe anotar cuántas filas están presentes en un tamaño predeterminado de la pantalla y codificar tantas filas como sea posible. Si tiene que completar más filas, entonces debe codificar la funcionalidad "Av Pág" como lo haría cuando completa el control de tabla manualmente.
  • La cantidad de líneas que aparecerían en el escenario anterior diferirá según el tamaño de pantalla que utilice el usuario. Por lo tanto, codifique siempre para el tamaño de pantalla estándar y haga que su BDC funcione siempre en el tamaño de pantalla estándar, independientemente del tamaño de pantalla que el usuario mantenga.

Creación de una sesión de entrada por lotes

  1. Abra la sesión de entrada por lotes utilizando el módulo de funciones BDC_OPEN_GROUP.
  2. Para cada transacción en la sesión:
  3. Complete el BDCDATA con valores para todas las pantallas y campos procesados ​​en la transacción.
  4. Transfiera la transacción a la sesión con BDC_INSERT.
  5. Cierre la sesión de entrada por lotes con BDC_CLOSE_GROUP

Ejemplo: BDC mediante transacción de llamada

El programa que se muestra a continuación ilustra el método de llamada a transacción de principio a fin. Crea la tabla BDCDATA para dos pantallas de una transacción y la ejecuta en modo N (sin visualización) con una tabla de errores para que se puedan reportar los fallos.

REPORT z_bdc_call_transaction.

DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata,
      ls_bdcdata TYPE bdcdata,
      lt_messages TYPE STANDARD TABLE OF bdcmsgcoll.

* Helper that appends one BDCDATA line
FORM bdc_field USING p_fnam p_fval.
  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = p_fnam.
  ls_bdcdata-fval = p_fval.
  APPEND ls_bdcdata TO lt_bdcdata.
ENDFORM.

* Screen 1: start the dynpro, then fill the fields
CLEAR ls_bdcdata.
ls_bdcdata-program  = 'SAPMV45A'.
ls_bdcdata-dynpro   = '0101'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.

PERFORM bdc_field USING 'VBAK-AUART' 'OR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

* Run the transaction: mode N = no display, update S = synchronous
CALL TRANSACTION 'VA01'
  USING         lt_bdcdata
  MODE          'N'
  UPDATE        'S'
  MESSAGES INTO lt_messages.

IF sy-subrc <> 0.
  * Read lt_messages to report the errors that occurred
ENDIF.

💡 Consejo: El parámetro MODO controla la visualización: A muestra todas las pantallas, E se detiene solo en caso de error y N se ejecuta en silencio. Utilice E durante las pruebas y N para la carga de producción.

Grabador de entrada por lotes

El registrador de entrada por lotes (Sistema > Servicios > Entrada por lotes > Grabador) registra las transacciones que se ingresan manualmente y crea una sesión de entrada por lotes que se puede ejecutar más tarde utilizando SM35.

Grabador de entrada por lotes

  • Inicie el registrador de entrada por lotes seleccionando el botón Grabación en la pantalla inicial de entrada por lotes.
  • El nombre de la grabación es un nombre definido por el usuario y puede coincidir con el nombre de la sesión de entrada por lotes que se puede crear a partir de la grabación.
  • Ingrese un SAP transacción y comenzar a registrar la transacción.
  • Después de haber terminado de publicar un SAP transacción, puede elegir Obtener transacción y guardar para finalizar la grabación o Siguiente transacción y publicar otra transacción.
  • Una vez que haya guardado la grabación, puede crear una sesión de entrada por lotes a partir de la grabación y/o generar un programa de entrada por lotes a partir de la grabación.
  • La sesión de entrada por lotes que creó ahora se puede analizar como cualquier otra sesión de entrada por lotes.
  • El programa generado por la función del registrador de entrada por lotes es una poderosa herramienta para el programador de la interfaz de datos. Proporciona una base sólida que luego puede modificarse según los requisitos del cliente.

⚠️ Advertencia: La grabación captura la secuencia de pantallas tal como ocurrió, por lo que una pantalla que solo aparece para ciertos datos, como una ventana emergente de información incompleta, no se graba. Pruebe siempre el programa generado con datos que activen todas las pantallas opcionales.

Preguntas Frecuentes

BDC_OKCODE contiene el código de función que el usuario activaría con un botón o una tecla, como /00 para Intro o =SAVE para Guardar. Indica a la pantalla qué acción realizar después de rellenar los campos.

SM35 es el monitor de entrada de lotes. Enumera las sesiones creadas mediante la entrada de lotes clásica, las ejecuta en primer plano o en segundo plano y muestra el registro de procesos para que las transacciones fallidas puedan analizarse y reprocesarse.

BDC todavía se usa donde no existe BAPI, porque reutiliza las validaciones de pantalla de una transacción. LSMW encapsula BDC, grabaciones y BAPI en una herramienta de migración, y una BAPI Se prefiere cuando se dispone de una API estable.

Sí. Los asistentes de IA en las herramientas de desarrollo ABAP toman una grabación o una lista de pantallas y elaboran el código para completar BDCDATA, el bloque CALL TRANSACTION y el manejo de mensajes. El desarrollador mapea el archivo fuente y prueba la carga.

Las herramientas de IA analizan el archivo heredado, señalan los campos obligatorios que faltan y las discrepancias de formato antes de la carga, y resumen el registro de entrada por lotes posteriormente para que los registros erróneos puedan corregirse y reprocesarse más rápidamente.

Resumir este post con: