SAP Tutorial de BAPI: Cómo crear una BAPI en ABAP

⚡ Resumen inteligente

BAPI en SAP ABAP es un método estandarizado, habilitado por RFC, para objetos de negocio que permite a las aplicaciones externas acceder a los procesos y datos de R/3. Esta página explica las BAPI estandarizadas, cómo crear una en SWO1, realizar pruebas, implementarlas y cómo llamar a una BAPI desde ABAP.

  • ???? Definición básica: Una interfaz de programación de aplicaciones empresariales es un método estable que proporciona a los sistemas externos acceso estandarizado a SAP procesos de negocio y datos.
  • 🗃️ Repositorio de objetos de negocio: Las BAPI se definen en el BOR como métodos de tipos de objetos de negocio y se implementan como módulos de función habilitados para RFC.
  • 📚 BAPI estandarizados: Las variantes GetList, GetDetail, Create, Change, Delete y Multiple proporcionan métodos reutilizables de lectura, escritura y procesamiento masivo.
  • 🛠️ Creación: En la transacción SWO1 se crea una BAPI añadiendo un método API que apunta a un módulo de función habilitado para RFC.
  • Prueba y lanzamiento: El método se prueba en Business Object Builder o SWUD, y luego se libera liberando el módulo de función y estableciendo el estado del método.
  • 📞 Llamada a una BAPI: Un programa ABAP llama al módulo de función y luego confirma la transacción con BAPI_TRANSACTION_COMMIT, porque una BAPI no se confirma por sí misma.

Cómo crear BAPI en SAP ABAP

¿Qué es BAPI?

La Interfaz de programación de aplicaciones empresariales (BAPI) son interfaces (métodos) de programación estandarizados que permiten que aplicaciones externas accedan a procesos y datos empresariales en el Sistema R/3.

Se Proporcionar métodos estables y estandarizados. para lograr una integración perfecta entre el Sistema R/3 y aplicaciones externas, sistemas heredados y complementos.

Las BAPI se definen en el BOR (repositorio de objetos de negocio) como métodos de SAP tipos de objetos de negocio que realizan funciones empresariales específicas. Se implementan como Función habilitada para RFC módulos y se crean en el Generador de funciones del ABAP Workbench.

Algunas BAPI y métodos proporcionan funciones básicas y se pueden utilizar para la mayoría SAP Objetos de negocio. Estos se denominan BAPI ESTANDARIZADOS.

Lista de BAPI estandarizadas:

  • BAPI para leer datos: GetList(), GetDetail(), GetStatus(), ExistenceCheck()
  • BAPI para crear o cambiar datos: Crear(), Cambiar(), Eliminar() y Recuperar().
  • BAPI para procesamiento masivo: ChangeMultiple(), CreateMultiple(), DeleteMultiple().

Ventajas de BAPI

Se prefiere una BAPI a las técnicas basadas en pantalla porque es una interfaz documentada y publicada que SAP Se mantiene estable entre versiones. Esto aporta varias ventajas prácticas.

  • Interfaz estable: La firma de una BAPI publicada no cambia al actualizarse, por lo que el programa que la llama sigue funcionando.
  • Reutilización de la lógica de negocio: Una BAPI realiza las mismas validaciones que la transacción, por lo que los datos añadidos a través de ella se mantienen coherentes.
  • Habilitado para control remoto: Debido a que un BAPI es un módulo de función habilitado para RFC, puede ser llamado desde otro SAP sistema, un Java o un programa .NET, o un servicio web.
  • Sin dependencia de pantalla: A diferencia de la grabación de entrada por lotes, una BAPI no se interrumpe cuando cambia el diseño de la pantalla.

Una vez claros el concepto y sus beneficios, la siguiente sección describe cómo construir una BAPI paso a paso.

Cómo crear una BAPI

Paso 1) Vaya a la transacción swo1 (Herramientas->Business Framework -> Desarrollo BAPI ->Creador de objetos comerciales). Seleccione el objeto comercial, de acuerdo con el requisito funcional para el cual se está creando la BAPI.

Crear una BAPI en ABAP

Paso 2) Abra el objeto comercial en modo de cambio. Luego seleccione Utilidades ->Métodos API ->Agregar método. Luego ingrese el nombre del módulo de funciones y seleccione Continuar.

Crear una BAPI en ABAP

Paso 3) En el siguiente cuadro de diálogo, se debe especificar la siguiente información:

  • Método: Sugiera un nombre apropiado para el método.
  • Textos: Introduzca la descripción de la BAPI,
  • Botones de opción: diálogo, Syncsincronizado, independiente de la instancia. Las BAPI generalmente se implementan de manera sincrónica.

Crear una BAPI en ABAP

Paso 4) Para crear el método, seleccione Sí en el siguiente cuadro de diálogo.

Crear una BAPI en ABAP

Paso 5) Una vez generado y ejecutado el programa, verifique el programa en el método que acaba de crear. Así, se crea una BAPI.

Crear una BAPI en ABAP

Probando el BAPI

Puede probar el BAPI mediante Pruebas el método individual del objeto de negocio en el generador de objetos de negocio. (o se puede utilizar la transacción 'SWUD' para probar el método).

Liberar y congelar el BAPI

  • Para liberar la BAPI, primero libere el módulo de funciones (usando la transacción se37).
  • Establezca el estado del método en "liberado" en el Generador de objetos de negocio (usando la transacción SWo1 - Editar-> cambiar estado-> liberado).

También puede utilizar BAPI Explorer (código de transacción BAPI) para una vista de 360′ en BAPI

Cómo llamar a una BAPI en ABAP

Una BAPI se invoca como cualquier módulo de función habilitado para RFC. La regla fundamental es que una BAPI nunca emite su propio COMMIT WORK, por lo que quien la invoca debe confirmar el cambio con BAPI_TRANSACTION_COMMIT o descartarlo con BAPI_TRANSACTION_ROLLBACK. El siguiente ejemplo crea un pedido de venta con una BAPI estándar.

DATA: ls_header  TYPE bapisdhd1,
      lt_items   TYPE STANDARD TABLE OF bapisditm,
      lt_return  TYPE STANDARD TABLE OF bapiret2,
      lv_order   TYPE vbeln.

* Fill the header and item structures, then call the BAPI
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
  EXPORTING
    order_header_in = ls_header
  IMPORTING
    salesdocument   = lv_order
  TABLES
    order_items_in  = lt_items
    return          = lt_return.

* A BAPI does not commit on its own - decide based on the return table
READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
ENDIF.

⚠️ Advertencia: Siempre verifique la tabla RETURN para detectar mensajes de tipo E o A antes de confirmar la transacción. Llamar a BAPI_TRANSACTION_COMMIT después de un error guarda un documento incompleto, lo cual es uno de los errores más comunes en las BAPI.

BAPI vs BDC vs RFC

Un BAPI, un BDCy un RFC simple todos mueven datos a SAP, pero difieren en estabilidad y en lo que reutilizan. La siguiente tabla los compara.

Criterios BAPI BDC RFC (personalizado)
Fácil de usar Método liberado de un objeto de negocio Secuencia de pantalla de una transacción Cualquier módulo de función personalizado
Estabilidad en la actualización Garantizado para BAPIs publicados Se interrumpe si cambia la pantalla. Depende del desarrollador
Habilitado para control remoto Sí: No Sí:
Validación empresarial Completo, igual que la transacción Completo, muestra las pantallas reales Solo lo que el desarrollador codifique
Mejores para Integración e interfaces estables Cargas donde no existe BAPI Servicios personalizados punto a punto

La regla general es usar una BAPI publicada siempre que exista, recurrir a una BDC cuando no exista y reservar las RFC personalizadas para servicios a medida.

Preguntas Frecuentes

Una BAPI realiza la actualización pero deja el COMMIT WORK al llamador, por lo que varias BAPI se pueden combinar en una unidad lógica de trabajo. BAPI_TRANSACTION_COMMIT luego las guarda juntas, manteniendoping Los datos son consistentes.

La tabla RETURN de tipo BAPIRET2 contiene los mensajes de la llamada. Una fila de tipo S indica éxito, E error, W advertencia y A cancelación. El emisor la lee para decidir si confirma la operación.

La transacción BAPI abre el Explorador de BAPI, que muestra todos los objetos de negocio y sus métodos, junto con su documentación y herramientas de prueba. La transacción SE37 también muestra una BAPI, ya que cada una es un módulo de función habilitado para RFC.

Sí. Los asistentes de IA en las herramientas de desarrollo ABAP sugieren la BAPI estándar para un objeto de negocio y elaboran el mapa de parámetros.pingy agregar la confirmación y el manejo de errores. El desarrollador confirma los campos y prueba la llamada.

Sí. Muchos servicios OData e integraciones de IA utilizan una BAPI subyacente, ya que esta ya contiene la lógica de negocio. Las capas más recientes añaden acceso REST y lenguaje natural sobre la interfaz BAPI estable.

Resumir este post con: