Skip to Content

What SBO API to use in what scenario?

Hi there,

I am investigating the possibilities in the SAP Business One Environment for accessing/connecting/integrating external systems. I am a bit baffled about what API is to be used in what scenario. Is information on this available? Advice on what you should not do would be appreciated as well.

Seemingly there 6 APIs and each of them has a slightly different focus, nevertheless there seems quite a bit of overlap. Furthermore the licenses required are different depending on the API.

UI API which seems to center around SBO front-end. If that is so, does it mean that it does not help when accessing the SBO through web access? Is it mainly for customizing the front-end?

DI API is COM based which is said to comparatively easy to use (at least from .NET), but has some limitations concerning concurrency and speed. Furthermore it provides functionality to create, edit and delete user tables and user objects (which DI Server does not provide).

DI Server is more difficult to work with, more targeted at connecting with websites, provides a better performance for such a scenario and it supports a wider range of client technologies. It has another license which is not user based (which might be cheaper or more expensive depending on the use case).

B1WS provides web services using WSDL. It is a wrapper around DI Server that (if we are to believe SAP) makes it easier and quicker to develop add-ons based on the SAP Business One DI Server. That should mean that it has similar capabilities and limitations as DI Server. Some people claim that is buggy. Does it require the same license as DI Server?

Services Layer API is only available in SBO HANA. It is based on DI API and therefore should have similar capabilities. How about the performance? It seems that it can be faster than DI API. Why?

B1if provides integration through web services, html calls, accessing DBs, file upload etc. Data transformed into xml before being consumed and afterwards it gets exported from xml to other formats. Some people claim that debugging with B1if gives you headaches. It seems to provide functionality the other APIs also provide.

If I misunderstood anything, corrections are welcome.

Especially the B1if seems to be a bit of a "can do everything" gismo. Which API should be used in what use case?

Best regards

Nils

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    avatar image
    Former Member
    Dec 20, 2017 at 11:09 AM

    SAP Business One provides APIs and one Integration Framework (B1if). UIAPI is a special API, you will use it if you want to modify screens of SAP Business One or add your own screens. The other APIs are for interacting with the business logic, e.g. CRUD (create, read, update, delete). The Integration Framework, you are using if you want to provide processes between SAP Business One and other touch points (vendor, supplier, webshop, …). Inside such a process you will use an API to e.g. create an object in SAP Business One, but you will use other APIs, provided by the touch points, as well.

    If you focus on HANA customers, resp. SAP Business One cloud, based on HANA, the preferred API to use is the Service Layer. For the most prominent objects the SAP Business One locking logic is optimized by using HANA lock functionality. Especially with high number of concurrent user, this is a very important effect and of course in addition the performance is better due to reduced and shorter locks. In addition Service Layer is loosely coupled via HTTP. That’s the reason why you have stability/performance improvements.

    If you focus on SQL Server customers, you have to use the DI-API/DI Server/B1WS. DI provides COM i/f, but also an xml interface, to be used inside integration processes. The DI Server is just providing most of the DI calls via HTTP.

    When you use DI-API inside an integration process, the Integration Framework provides a lot of functionality around the DI to make it more easy to use and more stable (di proxy, direct commit, batch processing, update.with.fallback.to.insert, etc.).

    Inside an integration flow you can also use the conditional processing to implement the call via DI API and via Service Layer and during runtime, based on the used database, the right API is used. This gives you the flexibility to focus on bot, HANA and SQLServer customers.

    The Integration Framework is a full blown integration middleware (like DELL Boomi, Mulesoft, SAP SCPi) and is NOT an API. With the Integration Framework you can model flows. Flows are triggered (e.g. by timer, by an event sent from SAP Business One, …), they are processed and can have an outbound (e.g. file system, FTP server, SAP Business One, …). The processing you model with a graphical modeler (you have all constructs available: sequence, conditional, iteration). In the processing flow you can have calls (e.g. http, SAP Business One, file, ws, …) and transformations. Transformations you can implement with XSLT, JavaScript and/or Java .

    Add comment
    10|10000 characters needed characters exceeded

  • Dec 20, 2017 at 12:03 PM

    Hi Nils,

    "Advice on what you should not do would be appreciated as well."

    Do not ever, ever, ever use direct sql on B1 system tables and fields.


    "UI API ... Is it mainly for customizing the front-end?"

    Yes, you can use it to manipulate the B1 client GUI.


    "DI API is COM based which is said to comparatively easy to use... but has some limitations concerning concurrency and speed. Furthermore it provides functionality to create, edit and delete user tables and user objects (which DI Server does not provide)"

    That is correct. It is best used with on-premise applications. It is meant for direct manipulation of the database.


    "DI Server is more difficult to work with, more targeted at connecting with websites, provides a better performance for such a scenario and it supports a wider range of client technologies. It has another license which is not user based (which might be cheaper or more expensive depending on the use case)."

    Indeed. It is basically a web service. This is the best option for web applications with an unknown amount of concurrent users, like a web store for example.


    "B1WS provides web services using WSDL. It is a wrapper around DI Server that (if we are to believe SAP) makes it easier and quicker to develop add-ons based on the SAP Business One DI Server. That should mean that it has similar capabilities and limitations as DI Server. Some people claim that is buggy. Does it require the same license as DI Server?"

    Yes on all counts, and yes to the question.


    "B1if ... Some people claim that debugging with B1if gives you headaches. It seems to provide functionality the other APIs also provide."

    Again yes on all counts. The best choice for data exchange scenarios (moving data from one system to another).

    "Which API should be used in what use case?"

    See answers above.

    Regards,

    Johan

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Dec 24, 2017 at 04:31 AM

    Hi,

    I strongly recommend that to use B1iSN9.0/B1if (in the most cases, they are the same) as an Integration Middleware for the integration solutions connecting B1 to ecosystem for business network integration, such as SAP Business One, Database, File, EDI, ALE/iDoc, Web Services, HTTP(s) etc…, I have developed many B1 integration projects by using B1iSN&B1if. following some examples, this will give you a hint of what does B1iSN/B1if can do.

    1. Order Integration between B1 and B1 (1. PO2SO, 2. SO Update, 3. DN2GRPO, 4. INV2PINV, Through DI-API XML Interface)

    2. Order Integration between B1 and Headerquater MDM/ECC: (B1<->B1iSN<http call>SAP PI<->ECC/MDM), You can also directly use RFC/iDoc for connecting to SAP ERP.

    1. B1 sends PO to ECC, 2. ECC send back PO Acknowledgment, 3. ECC send Delivery and Invoices.

    3. Integration between B1 and MES (Web service, SOAP)

    B1 sends Orders and ItemMasterData to MES, MES send back production and inventory movement info back to B1 (e.g. Goods Issue, Goods Receipt, Inventory Transfer)

    4. Integration between B1 and Third party logistic system (Send XML messages attached in the email by SMTP)

    5. Integration between B1 and Third party logistic system (RESTful Webservice, HTTP+Json)

    6. Integration between B1 and any other system as long as it supports File, EDI, ALE/iDoc, Web Services, SMTP/POP3/IMAP, HTTP(s) etc

    By using this integration middleware (based on MOM/SOA/ESB concepts), You don't have to take a lot of times to develop customized integration solutions by using VB/C++/Java from the low level programming, and the integration middleware provides powerful integration flow design, functions, debug, monitoring, error handling and etc.

    If customer needs to develop an B1 Add-on(Windows Form, normally Add-on works inside B1) then please go to UI-API/DI-API, otherwise, I strongly recommend to go to B1iSN9.0/B1if.

    PS: There is a slight difference between B1iSN9.0 and B1if, B1iSN9.0 contained pre-configured B12ECC related scenario packages and B1if contained pre-configured B1 mobile solution packages and dashboard. to me they are the same, you don't have to look it into details at this moment.

    Best regards

    Jim Jin

    Add comment
    10|10000 characters needed characters exceeded