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.

¿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.
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.
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.
Paso 4) Para crear el método, seleccione Sí en el siguiente cuadro de diálogo.
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.
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.





