I have a customer whose site is planning to introduce SAP for inventory control, work orders and scheduling, and so on. They have asked me if it's possible to build an Ignition perspective based user interface for things like raising a work order, or checking parts out of a store - their ideal is to be able to use a tablet to scan a QR code on a part bin and have it retrieve the record from SAP, allow the user to add details like quantity and associated job/asset/etc, and have the results pushed back to SAP.
They have three sites, and one of those sites (not the one I'm at) has a dedicated MES gateway, which already has the Sepasoft SAP ERP connector and Business connector. They have provided me the attached architecture layout.
I am working at Site C, and currently only have access to the gateway at Site C. If they wanted to go down this route, what would the most typical approach be? Would all of the SAP-related development be done on the MES gateway on site A, and the tablets pointed to projects on that gateway? Or can the SAP interfacing be done there but all the data passed to the local gateway projects?
I guess right now I'm at the "I don't know what I don't know" stage - any direction anyone is able to give me to work out what questions I need to ask and what information I need to gather would be appreciated!
Basically, if BC can retrieve data from SAP and deliver it to the Site C Gateway, then everything should be good to go and create project on site C. The best would be to have MQTT in the middle if it is the purpose of this broker. We do that with our customer. MQTT and MES works well.
Thanks for the replies. I plan to use the SAP business connector because it's already there and designed for exactly this purpose. What I'm seeking a little more guidance on is how and where I'd do the interfacing.
Let's say a tech on Site C wants to check a part out of the store by scanning a QR code. I need to do two things: retrieve data on the part corresponding to that QR code from SAP, and then push information back to SAP indicating that x quantity of that part were checked out of inventory and assigned to y equipment.
How would this typically be set up? The technician on site C would have a tablet running a perspective session - would that perspective session be running off a project on the central MES gateway on (remote) site A? Or, would it be running a project off the (local) site C gateway, and that project just passes the request details up to the (remote) MES gateway on site A, which receives the request, gathers the requisite information, and then pushes the data back to the (local) gateway on Site C to be displayed on the technicians tablet?
In my not so expert opinion, the remote gateways should be sending requests to the MES gateway that marshals the requests and replies with the results.
This will keep your SAP interface code in one manageable place rather than in three different sites. They may also consider a redundant gateway and redundant paths to the MES server.
I think your biggest issue will be marshaling all of the requests at the MES server. I would definitely have a conversation with the team to know what requests take priority over others and build that into your code. For instance, they may want production reporting to be higher priority than getting a part number from stores. This marshaling system would queue up requests as they come in and drain them in order of priority.
Be mindful of sendMessage as (I think) it executes asynchronously. You will need some way to identify the requests you send to then match them with their respective results.
There may also be some load balancing tricks that can be done to lighten the load. I say all of this assuming many requests could be sent in stereo and many large replies being sent back. I.e, someone asks SAP for all work order history for the last three years. If it’s a very busy plant, you could have many 100,000 rows with 100s of columns.