Guía de ejecución de SAP BAPI para Jitterbit App Builder
Descripción general
Un BAPI (Interfaz de programación de aplicaciones empresariales) es la interfaz principal de SAP para leer y actualizar datos en un sistema SAP, invocable tanto desde dentro de SAP como externamente, a través del protocolo RFC o la tecnología ALE/IDoc. Los BAPIs se definen en el Repositorio de objetos empresariales (BOR) de SAP como métodos de tipos de objetos empresariales de SAP que realizan funciones empresariales específicas, e se implementan como módulos de función habilitados para RFC creados en el Function Builder de SAP Workbench ABAP. Para más información, consulta la introducción a BAPI de SAP.
Esta guía describe cómo ejecutar módulos de función BAPI de SAP desde App Builder: conecta un servidor de datos al sistema SAP, crea tablas de staging locales que reflejen la estructura del BAPI, rellénalas con los datos a enviar y luego activa la ejecución del BAPI a través de RFC.
Requisitos previos
Antes de poder ejecutar BAPIs desde App Builder, necesitas lo siguiente:
-
Una compilación de versión de App Builder que incluya los componentes SAP adicionales. Cada versión de compilación lanzada tiene su propia descarga de
thirdpartysap, enhttps://download.jitterbit.com/vinyl/<version>/vinyl-<version>-thirdpartysap-win.zip(por ejemplo,https://download.jitterbit.com/vinyl/4.66.0.39333/vinyl-4.66.0.39333-thirdpartysap-win.zippara la versión 4.66.0+39333). Este paquete coloca las DLL de SAP (bibliotecas de vínculos dinámicos) que App Builder necesita para conectarse a SAP en la carpetaApp Builder/Bin. -
Una conexión de servidor de datos al sistema SAP en el que deseas llamar BAPIs, con Tipo establecido en SAP ABAP sobre RFC. Esta conexión utiliza el proveedor ADO.NET de CData para SAP ERP, que a su vez requiere los dos siguientes requisitos previos. Consulta Conexión del servidor de datos SAP si aún no has configurado una.
-
SAP NetWeaver RFC SDK: Coloca las DLL del SDK en
C:\Windows\System32en el servidor donde se ejecuta App Builder. Para más información sobre el SDK y dónde descargarlo, consulta la documentación de NetWeaver RFC SDK de SAP. -
Microsoft Visual C++ 2015-2022 Redistributable (x64): Instala este paquete de archivo de sistema de Microsoft en el servidor donde se ejecuta App Builder. Descarga el paquete.
Para más información sobre estas dependencias, consulta la documentación de CData para configurar dependencias del proveedor ADO.NET.
Conexión del servidor de datos SAP
Para conectar App Builder al sistema SAP en el que deseas llamar BAPIs, configura una conexión de servidor de datos:
-
Selecciona IDE > Servidores de datos.
-
Haz clic en el botón + Servidor. Se abre la página Servidor. Establece valores para lo siguiente:

-
En la sección Configuración del servidor:
- Nombre del servidor: Nombre identificable para la conexión del servidor. Por ejemplo:
SAP ABAP sobre RFC (BAPI). - Tipo: SAP ABAP sobre RFC.
- Nombre de host: El nombre de host del servidor de aplicaciones SAP. Por ejemplo:
example.jitterbit.com. - (Opcional) Servidor de mensajería: El nombre de host del servidor de mensajería de SAP, utilizado junto con Grupo para una conexión con balanceo de carga en lugar de conectarse a un único servidor de aplicaciones.
- (Opcional) Grupo: El grupo de inicio de sesión de SAP a través del cual conectarse, cuando se utiliza Servidor de mensajería para una conexión con balanceo de carga.
- Id. del sistema o nombre R3: El ID de sistema de tres caracteres (SID) del sistema SAP. Por ejemplo:
EH8. - Número de sistema: El número de instancia del sistema SAP. Por ejemplo:
0.
- Nombre del servidor: Nombre identificable para la conexión del servidor. Por ejemplo:
-
En la sección Configuración de seguridad:
- Cliente: El número de cliente de SAP (mandante) en el que iniciar sesión.
- Nombre de usuario: El nombre de usuario que App Builder utiliza para autenticarse con el sistema SAP.
- Contraseña: La contraseña de ese usuario.
-
-
En la sección Staging: - (Opcional) Fuente de datos: La fuente de datos local donde viven tus tablas de staging BAPI.
- (Opcional) Descripción: Ingresa una descripción para esta conexión.
-
Haz clic en el botón Guardar.
-
Expande Testing, luego haz clic en el botón Probar conexión para verificar la conexión.
Búsqueda de módulos de función personalizados
Por defecto, el Patrón de importación de la fuente de datos SAP solo muestra procedimientos almacenados que coinciden con BAPI*. Para buscar e importar un módulo de función personalizado, como uno con prefijo Z, agrega una propiedad avanzada StoredProcedureFilter a la conexión. Por ejemplo, StoredProcedureFilter=Z* además muestra procedimientos que comienzan con Z.
Nota
Si un módulo de función no se devuelve mediante Patrón de importación, o su ejecución falla con un error Procedure not found, confirma que su nombre está cubierto por el valor StoredProcedureFilter configurado en la conexión.
Tablas de staging BAPI
Para pasar datos a SAP, App Builder los compila en tablas de staging locales antes de ejecutar una BAPI. Cada componente del módulo de función BAPI (sus parámetros de importación, parámetros de exportación y cualquier estructura padre o hijo) tiene su propia tabla de staging, con columnas que contienen los valores que espera el módulo.
Además de estas columnas de parámetros BAPI, cada tabla de staging también necesita un pequeño conjunto de columnas específicas de App Builder, prefijadas con _, que vinculan las tablas de staging durante la ejecución. App Builder no envía estas columnas a SAP; las usa solo para preparar la ejecución. Una vez que los datos están preparados y listos, una acción RFC ejecuta la BAPI, usando la columna _id para determinar qué conjunto de registros pasar.
Nota
App Builder registra cada conexión SAP y ejecución, junto con datos de parámetros específicos de BAPI, en los Registros de base de datos.
Crear tablas BAPI de staging locales
Crea una tabla de staging local para cada componente de la BAPI que deseas ejecutar, ya sea manualmente o importando la estructura usando el campo Patrón de importación en la fuente de datos SAP (consulta Búsqueda de módulos de función personalizados si el módulo de función que necesitas no aparece).
Los parámetros de importación de una BAPI (datos enviados desde App Builder a SAP) y los parámetros de exportación (datos devueltos desde SAP) a menudo abarcan más de una estructura: un componente padre que contiene los datos de nivel más alto, y uno o más componentes hijo que contienen datos de nivel inferior, típicamente incluyendo un componente hijo /RETURN que devuelve mensajes de éxito o error. Si creas las tablas de staging manualmente, necesitas una comprensión clara de esta estructura y de los propios parámetros de la BAPI, ya que App Builder confía en ella para ejecutar la BAPI correctamente.
Nombra cada tabla de staging hijo según su padre; por ejemplo, una tabla padre llamada BAPI_PO_CREATE1 y una tabla hijo llamada BAPI_PO_CREATE1/POHEADER. Luego agrega las siguientes columnas a cada tabla de staging:
-
Agrega una columna
_id, configurada al tipo de dato UUID, y selecciona Clave principal y Generado automáticamente, para que App Builder pueda identificar únicamente cada registro preparado. -
Si la tabla es un componente hijo, agrega una columna
_ParentId, también configurada a UUID, y define una relación muchos-a-uno con la tabla padre, vinculando su columna primaria_Ida la columna_ParentIdde esta tabla. -
Si el orden en que se ejecutan los registros es importante, agrega una columna
_indexpara mantener un valor de indexación que App Builder pueda consultar durante la ejecución. -
Agrega cualquier otra columna de clave externa local o de auditoría que necesites, prefijada con
_, para vincular registros BAPI a tu propio modelo de datos. Por ejemplo,_POHeaderIDte permite consultar datos BAPI preparados para un registro PO local, y_ExecutedOnrealiza un seguimiento del historial de ejecución. -
Agrega las propias columnas de parámetros de importación y exportación de la BAPI, como
PURCHASEORDER,PO_ITEM,DELIVERY_DATEoQUANTITY, reflejando la estructura del módulo de función.
Ejecutar una BAPI
Una vez que tus tablas de staging estén pobladas con datos, activa la ejecución de la BAPI sobre RFC registrando una acción RFC en un evento de objeto de negocio o tabla, desde App Workbench > Reglas. En el campo RFC de la acción, selecciona el módulo de función SAP a llamar. App Builder proporciona cuatro opciones integradas:
-
BAPI_OBJCL_CHANGE -
BAPI_OBJCL_CREATE -
BAPI_OBJCL_DELETE -
BAPI_TRANSACTION_COMMIT
BAPI_TRANSACTION_COMMIT aparece al final porque confirma cualquiera de las otras tres acciones que ya se ejecutaron.
Ejemplos de módulos de función BAPI
Los siguientes son algunos de los muchos módulos de función BAPI que se pueden ejecutar desde App Builder. La columna Componentes secundarios enumera los componentes secundarios del módulo de función principal, cuando corresponda.
| Módulo de función | Descripción | Componentes secundarios |
|---|---|---|
BAPI_PO_CREATE1 |
Se utiliza para crear una nueva OC. | /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN |
BAPI_PO_CHANGE |
Se utiliza para actualizar valores en una OC existente. | /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN, /POPARTNER |
BAPI_PO_RELEASE |
Se utiliza para liberar una OC después de manipularla. | — |
BAPI_PO_GETDETAIL |
Se utiliza para recuperar los valores de Notas de encabezado y Texto en la OC. | _PO_GETDETAIL/RETURN, PO_HEADER_TEXTS |
BAPI_SALESORDER_CREATEFROMDAT2 |
Se utiliza para crear órdenes de venta. | /ORDER_HEADER_IN, /ORDER_PARTNERS, /ORDER_ITEMS_IN, /ORDER_SCHEDULES_IN, /RETURN |
BAPI_CONTRACT_CREATEFROMDATA |
Se utiliza para crear contratos. | /CONTRACT_HEADER_IN, /CONTRACT_PARTNERS, /CONTRACT_PARTNERS, /CONTRACT_ITEMS_IN |
BAPI_EXCHANGERATE_GETDETAIL |
Se utiliza para recuperar tipos de cambio de divisas. | — |
Z_ADAPT_DATA_EXTRACT |
Una función personalizada utilizada para extraer información del plan de inversión. | — |
Solución de problemas
Si un módulo de función BAPI o personalizado no se ejecuta con un error Procedure not found, confirma lo siguiente:
-
Los requisitos previos (SAP NetWeaver RFC SDK y Microsoft Visual C++ Redistributable) están instalados en el servidor que ejecuta App Builder.
-
El nombre del módulo de función está cubierto por la propiedad avanzada
StoredProcedureFilterde la conexión del servidor de datos. Consulta Búsqueda de módulos de función personalizados. -
El módulo de función personalizado existe y está activo en el sistema SAP de destino. Un módulo de función personalizado (por ejemplo, uno con prefijo
ZoZZ) solo está disponible en un sistema SAP determinado después de que se haya importado el transporte que lo contiene. Verifica con el administrador de SAP o inspecciona el módulo de función directamente utilizando Function Builder (SE37) u Object Navigator (SE80), para confirmar que está presente y activo. Si no es así, el transporte SAP correspondiente debe importarse en ese entorno antes de poder invocarlo. -
El usuario de SAP configurado en la conexión del servidor de datos tiene autorización
S_RFCpara el módulo de función. El objeto de autorizaciónS_RFCse verifica por grupo de funciones en lugar de por nombre de módulo de función individual, por lo que el rol de SAP del usuario debe otorgarS_RFCconRFC_TYPEestablecido enFUGRyRFC_NAMEestablecido en el grupo de funciones que contiene el módulo de función personalizado, no un comodín en el nombre del módulo en sí. -
Activa el registro de datos para generar archivos de registro y datos que puedas descargar e inspeccionar.
-
Consulta la documentación de CData ADO.NET Provider para SAP ERP para obtener información detallada.