Service Layer, DI API, UI API, B1if o API Gateway en SAP Business One: ¿cuál usar?
Por Zain Abbas, Kodenova · Actualizado el
SAP Business One ofrece cinco puertas de entrada para desarrolladores, y no son intercambiables. Esta guía resume en qué se diferencian, con datos de la documentación oficial de SAP.
¿Qué API de SAP Business One debe usar?
Use el Service Layer para todo lo que corre fuera del cliente de escritorio: portales, apps, sincronización con tiendas y bancos, procesos y el Web client. Use la UI API solo para cambiar pantallas del cliente de Windows, con la DI API para sus datos. Use B1if cuando SAP ya entrega el escenario, y el API Gateway para Crystal Reports.
¿En qué se diferencian?
| Service Layer | DI API | UI API | B1if | API Gateway | |
|---|---|---|---|---|---|
| Protocolo | HTTPS, OData v3/v4, JSON | COM (DLL en proceso) | COM/DCOM al cliente en ejecución | Paquetes de escenarios en un servidor | Gateway HTTPS a servicios de back end |
| Dónde corre | Servidor de aplicaciones en SUSE Linux o Windows | Cualquier Windows con la DI API instalada | En el PC del usuario, dentro del cliente | Servidor de integración; en SQL Server necesita la DI API | Servidor de SAP Business One (puertos 60010 y 60020 por defecto) |
| SAP HANA / SQL Server | Ambos (SQL Server desde 10.0 PL01) | Ambos | Ambos (mismo cliente de escritorio) | Ambos | Ambos |
| Rendimiento | Multiproceso; escala con varias instancias tras un balanceador | Sin salto de red, pero sin soporte de multithreading | Ligado a la pantalla del usuario | Basado en escenarios y mensajes | Limitado a informes |
| Uso típico | Portales, apps, e-commerce, procesos programados | Datos de add-ons de escritorio, servicios Windows | Menús, formularios y validaciones en el cliente | Escenarios de SAP o de proveedores | Salida de Crystal Reports |
| Web client | Sí: lo requiere y sus extensiones lo llaman | No desde el navegador | No | No es tecnología de interfaz | No es tecnología de interfaz |
El Service Layer usa el mismo DI Core y la misma lógica de negocio (OBServer) que la DI API. Por eso los nombres de objetos coinciden y ambos aplican las mismas reglas. El tipo de licencia que necesita cada usuario lo fijan las condiciones de licencia de SAP; confírmelo con su partner de SAP antes de dimensionar un proyecto.
¿Cómo decidir?
- ¿El cambio aparece en el cliente de escritorio? UI API para la pantalla y DI API para los datos. Vea la guía de desarrollo de add-ons.
- ¿Aparece en el Web client? Extensión del Web client (UI API del Web client desde FP 2405, o una app tile), con datos por el Service Layer.
- ¿Corre sin usuario o desde otro sistema? Service Layer.
- ¿Necesita un Crystal Report como servicio? API Gateway.
- ¿El escenario ya existe como paquete de B1if? Use B1if.
- ¿Necesita algo que el Service Layer no hace? DI API en un servidor Windows: objeto RecordSet, importación y exportación XML, o transacciones entre varias llamadas (StartTransaction y EndTransaction).
¿Qué errores son frecuentes?
- Los UDF y UDT nuevos no aparecen en el Service Layer hasta que se reinicia, según SAP.
- No hay transacciones entre llamadas del Service Layer: cada solicitud, incluido un batch de OData, tiene la suya.
- La DI API no admite multithreading. Use una conexión por proceso.
- Los nombres de campos no son columnas SQL. Consulte la referencia de tablas de SAP B1 y arme la solicitud con el generador de solicitudes del Service Layer. La guía del Service Layer explica las cookies de sesión.
- Escribir en tablas de SAP con SQL se salta la lógica de OBServer. Escriba siempre por una API.
Kodenova construye integraciones sobre el Service Layer y add-ons nativos con UI API y DI API, en SQL Server y SAP HANA. Vea integración por API con SAP Business One, desarrollo de add-ons a medida o contacte con Kodenova indicando su versión de SAP Business One.
Fuentes
- SAP Help Portal: About SAP Business One Service Layer
- SAP Help Portal: Service Layer, requisitos del sistema (Linux y Windows)
- SAP Help Portal: Service Layer, arquitectura (DI Core, OBServer, balanceador)
- SAP Help Portal: Service Layer, limitaciones funcionales frente a la DI API
- SAP Help Portal: Working with SAP Business One Service Layer, historial del documento
- SAP Help Portal: SDK de SAP Business One, Data Interface API
- SAP Help Portal: SDK de SAP Business One, User Interface API
- SAP Help Portal: DI API 10.0, enumeración BoDataServerTypes
- SAP Help Portal: SAP Business One Administrator's Guide, 10.0 SP 2505 (Microsoft SQL Server, PDF)
- SAP Help Portal: What's New, Platform and Extensibility (API Gateway desde 10.0 FP 2105)
- SAP Help Portal: Integration framework for SAP Business One
- SAP Help Portal: Making Tax Digital (paquetes del integration framework en SAP HANA)
Servicios relacionados
Preguntas frecuentes
¿La DI API está obsoleta?
No. La DI API sigue en el SDK de SAP Business One 10.0, documentada para .NET, C++ y Visual Basic, y admite SAP HANA y Microsoft SQL Server. SAP describe el Service Layer como su nueva generación de API de extensión, por eso las integraciones nuevas que corren fuera del cliente suelen empezar ahí.
¿El Service Layer funciona con Microsoft SQL Server?
Sí. Nació en la versión para SAP HANA. La guía del Service Layer añadió el soporte para SAP Business One 10.0 PL01 sobre Microsoft SQL Server en enero de 2020, y se ejecuta en Windows además de SUSE Linux.
¿Mi add-on con UI API funciona en el Web client?
No. La UI API clásica es una interfaz COM al cliente de escritorio de Windows en ejecución, así que sus menús, formularios y eventos solo existen ahí. El Web client tiene su propia UI API en JavaScript (desde 10.0 FP 2405) y extensiones de tipo tile. La lógica con DI API puede pasar a un servidor y servir a ambos clientes.
¿Para qué sirve el API Gateway de SAP Business One?
El API Gateway Service, disponible desde 10.0 FP 2105, autentica a los usuarios de SAP Business One y reenvía las solicitudes a servicios de back end, sobre todo al Reporting Service de Crystal Reports. No sustituye a los objetos de negocio del Service Layer.
¿Una integración nueva debe usar B1if o el Service Layer?
Si SAP o un proveedor ya entrega el escenario como paquete del integration framework, use B1if. Para una conexión a medida con una tienda, un banco, un portal o una app, lo habitual hoy es un servicio pequeño sobre el Service Layer, con HTTPS y JSON.
¿Listo para empezar?
Cuéntenos lo que necesita. Recibirá una respuesta técnica clara, un alcance definido y un precio fijo, normalmente en 24 horas.
