End-user configurable OData endpoint

Hello experts,

We are trying to develop a mobile app that connects to SAP Business One Service Layer, which provides an OData v4 interface.

We can connect fine and exchange data successfully (with the caveat of the missing $select parameter, see here), but the concept of our app should allow each customer to connect directly to their own endpoint. The reason is that many customers still don’t want to expose their ERP systems to the Internet and we also want to avoid the overhead of setting up API proxies for each customer.

Is there a way of setting this up with AppGyver? As far as I can tell from my tests and readings, the OData endpoint seems to be fixed from the data source definition.

Any insight would be appreciated.

Thanks and best regards,

Joerg.

Hey,

right now, this is not possible with the OData connector, but an upcoming (slated for January) release will bring in an improvement that lets you parametrise the base URL and bind the dynamic part directly to e.g. an app variable from within the data configuration screen.

In the meantime, the other option is to recreate the OData resource as a REST API integration, which then allows you to modify the base URL by adding a Path parameter that can then be bound to e.g. an app variable when using the flow function.

Hi Joerg,

may I ask you how you set up connection from AppGyver to SAP B1 SL?

I was working on that via SAP Cloud Connector running on SAP Business One onpremise env.
Set up connection between on prem and SAP BTP.
But I cannot find a way to actually configure and interact with Service Layer APIs from external systems.
Also posted a question here: Expose SAP B1 Service Layer APIs via Cloud Connector.

Thanks for any hint

Hello Thomas,
I have not used Cloud Connector, but instead made a direct connection to Service Layer.
The steps should be more or less:

  • Set up an oData endpoint (use Basic authentication here to be able to access the metadata)
  • Create a POST Login request in the login form submitting the user info
  • The cookie from the login response is stored automatically (in the Android preview app at least), so from there on you can send any request to B1 (GET, POST, PATCH, etc.)

Here’s the logic for my login button. If the login is successful I retrieve the AdminInfo object (company name, etc.) and store it for later usage. If it fails, I show the error message returned.


Hope this helps.
Best regards,
Joerg.

1 Like

Thanks for you hint!
I’m stuck more on the starting part of the process: making a direct connection to Service Layer, so before working with AppGyver implementation.
Mine it’s way more a network / infrastructure issue… can you share how did you set up those steps?

Sorry, but I never did set up Cloud Connector, since I don’t like the hoops you have to jump through to get it all set up. If you plan to develop for multiple customers, Cloud Connector is not an option for us, since it complicates setup by a lot. What we are looking for is “install app, configure a handful of settings, and done”.