on 2023 Jul 13 2:34 PM
I have developed a web app using ReactJS that is hosted on Azure and I want to retrieve data from an S/4HANA On-Premise system. I am looking for a secure and reliable way to establish this connection. The data that I want to retrieve includes orders, customer information, and inventory levels ... The data transfer needs to happen in near real-time.
I have identified the following possibilities for establishing this connection:
Direct access to the SAP system via OData/SAP Gateway. This would require opening the Gateway web service to the outside, which is very unfavorable for security reasons. The connection would look like this:
S/4HANA <-> Proxy <-> Web App
Communication via SAP BTP: This option would involve using the Cloud Connector to connect the S/4HANA system to the SAP BTP, and then accessing the data from the web app via the SAP BTP. The connection would look like this:
S/4HANA -> Cloud Connector -> SAP BTP <- Web App
Use of an SAP Business Connector: This option would involve using an SAP Business Connector to connect the S/4HANA system to the web app. The connection would look like this:
S/4HANA -> Business Connector <- Web App
Use of SAP PO: This option would involve using SAP Process Orchestration (PO) to connect the S/4HANA system to the web app. The connection would look like this:
S/4HANA -> SAP PI <- Web App
In terms of security requirements, the data transfer needs to be encrypted and authenticated, and only authorized users should be able to access the data. In terms of technical requirements, the solution needs to support JSON data format and RESTful APIs. In terms of operational requirements, the solution needs to provide monitoring, logging, and error handling capabilities.
I am not sure which of these options is the best and most secure for my use case.
Are there any other options that I should consider?
Are there any best practices or recommendations for securely connecting a web app hosted on Azure with an S/4HANA On-Premise system? It doesn't have to be Azure. It can also be another provider.
I would appreciate any help and advice from the community.
Request clarification before answering.
A lot of useful ideas have already been mentioned in the comments, but no one has ventured an "answer" yet, so I'll go first... 🙂
Option 1 is ruled out, if you don't want to open your firewall for outside access.
Option 2 is in my opinion "shooting sparrows with cannons" (hope this idiom translates into English... 🙂 ) The task at hand is clearly a job for a middleware, while BTP is a full-blown application platform.
So the best solution would indeed be to use a middleware, which leaves options 3 and 4. Both, SAP PI/PO and SAP Business Connector would probably be well-suited for this task. Both provide the required capabilities in terms of real-time communication, encryption, user management & authorization, monitoring, logging, and error handling. I'm not an expert for PI/PO, but I can provide a few pros & cons for SAP BC:
So much about "pros". There is one "con" that comes to my mind: SAP BC does not have a built-in JSON parser, while PI/PO probably has. However, there are many good open-source JSON parsers, and it is very easy to plug in any third-party/open-source jar archive into your Business Connector and use it in your "Flows". In fact, just a few weeks ago, I wrote a blog on how one can do exactly that: in my example I'm using an Apache open-source library, which creates files in Microsoft Excel format, from a SAP BC RFC Flow to convert an ABAB internal table to an Excel file: Using Java Functionality from your ABAP Programs
Downloading a JSON parser and using it in the Flows that receive the HTTP/REST calls from your Azure application, would work just the same.
An interesting question to consider further is how exactly the S/4 system exposes the data you are interested in. You say "The data that I want to retrieve includes orders, customer information, and inventory levels", but it doesn't say much about the interfaces available for this. If (most of) this data is exposed via BAPIs or remote-enabled function modules, it is very easy to retrieve from the SAP BC: making an RFC call just takes a few mouse clicks and no coding. For SOAP/OData/WebService calls you can use the BC's built-in HTTP client, but you will probably have to write a bit of code to create the correct request body from the JSON data you receive from Azure.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Ulrich,
Thank you for your response. It is very helpful and rounds off the discussion nicely. From your response and the previous answers, I draw the following conclusions:
I thank you and all others for the different perspectives and answers to this question.
Regards
Jim
Hi Jim,
to clarify this:
> However, if I also need write access to the SAP on-premise system, I must use an SAP Cloud Integration in this constellation.
SAP BC also supports both read/write access.
And yes, you are right: if one or the other component is already used for other tasks in the customer's landscape, then it makes sense to "re-use" the existing components as much as possible instead of adding further components to the system landscape (which increases complexity).
Another thought on the question "should the Azure app pull the data from S/4, or should S/4 push it to Azure". The answer to this question depends on several factors:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
In my case, I don't want to store data twice. The data comes from the SAP system and is only displayed to the user when needed. This means that the data is not additionally stored or kept on a non-SAP database. As you write, I do not want to store the data twice for security reasons.
It may be that the data is stored temporarily as a draft for the user. But this is only temporary. For this reason, I will have to look more closely at whether I need a push mechanism at all.
User | Count |
---|---|
91 | |
12 | |
9 | |
8 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.