This blog is cross posted from pascalrenet.com
I recently started looking into the possibilities of integrating a smart mobile device with the SAP Transportation Management software. As far as I know SAP has a couple of offerings (one running on Android and another running on IOS) in that space, both requiring NetWeaver Gateway as well as the SAP Sybase Unwired Platform. This seemed an unwanted overhead for someone that just wanted to get a presentable proof of concept app off the ground and so ventured in other directions.
This post will attempt to summarise my thought process and present what I was able to clobber together.
Firstly I tried to brainstorm some of the characteristics that this app had to have - in no particular order.
Criteria | Characteristic |
---|---|
Usability | The intended audience of this app are the drivers, their job is to drive not understand how an app works. The app therefore has to be intuitive and super simple to use. |
UX Design | Using this app must complement the driver's day to day tasks and activities, not hinder them. Delivering a user engaging interface that places information where it is supposed to be in a layout that is adapted to the mobile device is part of that experience. |
Device agnostic | In this BYOD era, applicable to both employers and sub contractors, you cannot afford to develop for only one platform or device. It was therefore important to keep a develop once - deploy to many attitude. Using a framework such as phonegap can help in that respect. Based on that the choice was naturally to go down the path of HTML5, rather than native development. |
Limit data exchange | In the interest of time and money, limit the amount of data exchanged between the device and the server (use of manifest payload on device, AJAX update). |
Local storage capable | In vast areas such as Australia, you are bound to sometimes be in a location where you have no mobile network coverage. It is therefore important to be able to report an event when it occurs, store it on the device and sync it with your backend system when coverage is restored. |
Multiple event type support | We have setup several event types within our EM environment (Depart, Pass, Arrive, Load start/finish, unload start/finish, ETA/ETD update, Delay, etc...). I should be able to report any one of them. Some may be specific to a planned event (i.e Arrive at location X), some may not be (i.e Delay due to heavy traffic) |
Zero paper based | In an effort to be environmentally aware, reduce where possible, the amount of paperwork the driver has to carry with him. This means delivering on the device all the information the driver needs (planned times, expected pick and delivery locations, cargo items, consignees, etc...) |
Safety | Send the driver special warnings when carrying dangerous goods, access to special safety checks documentation. |
Efficiency | Receive the information in near real time and avoid subsequent double entry. |
Integration | This app should as much as possible integrate in our current infrastructure. |
Time zone support | We operate is several time zones - the teams must be able to operate and analyse information in their respective time zones, not in UTC timezone. |
Now that I had a rough idea of where I was going, I started looking at the integration possibilities. This meant identifying what was available in SAP standard first as this was going to drive how I could integrate with it (should I go via PO, should I hit TM directly....). I was quite enthused to find that EM had all that I needed to get this proof of concept of the ground and pave the way for this then becoming a basis for a productive solution.
EM has all the BAPI's I need (both to extract the information I need as well as update events in EM). The great thing with BAPI's is that I can either invoke them directly with an RFC connector, or I can expose them as web services. For this proof of concept I went with the former - an RFC connector and I used php as the programming language to invoke it. So at the end of the day my setup looked as shown below.
SAP TM is of course used to create the freight orders and the associated objects and this information is then replicated in SAP EM. The process was going to be:
Easy!
The picture below shows graphically the various screens of the app (which is still work in progress).
Technically this is how things play out.
My usual method of working is to first worry about how the technical pieces are going to hang together and then about the design. In this case I started with Jquery Mobile, which out of the box already offers an visually pleasing interface design, that can be tweaked to your liking. That is what I did - below is a picture of the app running on an Ipad.
That's it! All up including the design, this took just a little over a day to do - and that is what I wanted - to quickly come up with a working demo.
There are still a few more bells and whistles that I want to implement though.
As indicated above, you want this app to report all possible events, but how do you do enable this without having so many buttons that it makes your app look like a christmas tree! One of the things I am working on is the introduction of a slide in (and out) panel, for each event, that allows you to report any (un)expected event.
As shown above, tapping an event reveals a drawer like panel that allows you to report events such as unload start/finish, load start/finish, delay and depart or arrive.
Up till now I took the stance that the driver would report the event at the time it happened (or close enough for it not to be an issue). However there are always unexpected things that do not always make this workable, the driver should therefore be able to override the reported event time. Therefore a new popup will ask for confirmation before posting the event time back to the backend.
That's it for now. I'd be very interested to hear from others what they are doing in that space.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |