BAPI's - Business Application Programming Interface

Las BAPI's son funciones que sirven para realizar acciones sobre los objetos de negocios de SAP. Son en realidad métodos de los objetos de negocios, y gracias a ellos podemos realizar cargas evitando utilizar Batch Inputs por Call Transaction.

Hagamos primero una introducción al origen de esta funcionalidad.

Los Objetos de Negocios de SAP conforman una parte esencial del marco de trabajo del mundo de los negocios.  Estos objetos cubren un amplio rango de los procesos de datos y negocio de SAP y pueden ser implementados usando metodos estables y estandarizados, las BAPIs.

La aparición de BAPIs en SAP fue a partir de la versión 3.1 y se hizo para permitir la integración de software entre SAP y otros fabricantes de software.  El número total de BAPIs se ha ido incrementando con la liberación de nuevas versiones de SAP.

Básicamente las BAPI's son funciones como cualquier otra función en ABAP, así que poseen las mismas características: parámetros de entrada, de salida, tablas, excepciones..

Todas las BAPI's cumplen con lo siguiente:

- Soportan el protocolo Remote Function Call (RFC)

- Son métodos de un Objeto de Negocios

- Se procesan sin devolver ventanas de diálogo al programa que las invoca

La mayor ventaja de utilizar BAPI's por sobre los métodos tradicionales de carga de datos (por ejemplo, CALL TRANSACTION) es que como éstas son un estándar de SAP, nos aseguramos que los desarrollos propios que utilicen BAPI's serán compatibles con las futuras versiones de SAP. Esto no sucede con los CALL TRANSACTION, porque entre versiones es muy común que se modifiquen algunas dynpros de una transacción y esto hace que el Batch Input falle.

En la transacción BAPI se encuentran todas las BAPI's que hay en el sistema SAP.

Transacción BAPI

Veamos una BAPI ejemplo. Navegamos el árbol hasta encontrar la bapi BAPI_SALESORDER_CREATEFROMDAT2.

Esta BAPI se utiliza para crear pedidos de venta. Por lo tanto, abrimos el nodo SalesOrder en el índice alfabético y ahí aparece nuestra BAPI.

BAPI - Índice Alfabético

Si hacemos doble click en el nodo SalesOrder nos despliega la información del objeto de negocio:

SalesOrder - Objeto de Negocio

Si desplegamos los métodos del objeto de negocio BUS2032 Pedido de Cliente vemos todas las BAPI's del mismo (recordar que las BAPI's son los métodos de los Objetos de Negocio):

BAPI's del objeto Pedido de Cliente

Como podemos ver, nuestra BAPI está dentro de las listadas. Las que aparecen en rojo son BAPI's que no están activas. A la derecha de la BAPI tenemos un ícono: el cuadrado verde indica que esa BAPI está activa y es recomendada para su uso. En cambio, si tiene el símbolo rojo STOP no se debe usar esa BAPI; sólo está en el sistema por cuestiones de compatibilidad con versiones anteriores.

Veamos ahora la BAPI en cuestión:

Vista de BAPI_SALESORDER_CREATEFROMDAT2

Como podemos ver, la BAPI es un módulo de funciones de la SE37, como cualquier otro. Si quisiéramos ver qué otras BAPI's existen para el objeto de negocio, a veces basta con ir al grupo de funciones de la BAPI. De no ser así, habrá que ir al objeto de negocio y ver sus métodos.

Los objetos de negocio se pueden navegar con la transacción SWO1. Esta transacción nos permite ver los objetos de negocio diferenciados por componente de aplicación.

Busquemos la BAPI en cuestión mediante la SWO1:

Transacción SWO1

Área Ventas

Objeto de Negocio Pedido de Cliente

Como vemos, con ambas transacciones llegamos al objeto de negocio BUS2032 - Pedido de Cliente.