A free PSD file with a SAP HANA XS OData Icon. Great for projects which utilize the XS OData feed from HANA.
zSCN for SAP SCN makes reading the SAP Community Network easier and quicker. With the ability to login to your SCN account from your device makes your spaces, bookmarks and friends simple to access. Contents are downloaded from the RSS feeds and can easily be read directly on the website and content links can be shared via twitter or email.
- Blogs, messages and documents are all displayed on a single page
- Each space includes relevant tweets
- Share articles via email or twitter easily
- Free and available here on the App Store
A couple of months ago I was working on creating services for a SAP App store app called Production Insight for SAP. While working on the app I constantly found myself using RESTClient for Firefox to test, debug and view the attributes of my service while I was developing in XCode. Eventually I pulled up the metadata and service implementation on my iPad and used it as a second screen for reference. This made my life much easier. After having done this a couple of times over the past few months, I figured it wouldn’t be a bad idea to create an app which not only lets you view the service and its details, but also save requests, test them against multiple servers and also view the details easily. Which is why I built “Blaze”, it does all this and a little more. It is a free app and available in the app store as of yesterday, if I could put a “demo” or “beta” sticker on it: I would. (but apple won’ approve anything like that!) for all you “gatewayers” out there, please test it out and let me know what you like and don’t. My intention is to create a iOS client for gateway which is useful to developers like myself. The app can also handle other OData servers and services like Netflix and XS Engine from HANA.
Here are a couple of the app’s features:
- Easily create and test new gateway services
- Browse the service catalog of your servers
- Save service calls as favorites for easy testing
- Adding favorites saves request headers and methods
- Handles both XML and JSON based services
- Preview mode formats the response for easy reading
- Links mode shows all links in the document which enables quick and easy drill down
- Add headers easily with a list of choices
- Also supports other OData Service Implementations such as Netflix and HANA XS Engine
- This version currently requires SAP Netweaver Gateway SP04, the main reason for this is to easily browse the service catalog using JSON, if you don’t have SP04, you can set the app to “other” type and it should work. <- feedback needed
Here is a short demo video of the app in action:
And here are a couple of screenshots:
When I started developing iOS apps a couple of years ago, I was concerned that enterprise apps were going to quickly succumb to the world of development scope creep. Since the apps were fairly focused and provided a single function or process solution, what if the business wanted more? For example, you have a CRM app displaying your customer contact information and some high level details regarding order history and credit limits, but what if the user wanted some additional details from your BI solution drilling down into historical orders and profit analysis? Well, in that case, you had a few options:
1) Extend the scope of the app – by adding functionality and options, sometimes a reasonable option if the scope is not excessive or the functionality is relative to the app. In our above example, probably not.
2) Build another app with replicated functionality – duplicate code to display the customers and overview details in both apps.
3) Build 2 separate apps – But this would require the user to re-enter information (such as searching for and entering the Customer ID) in the 2nd app.
The fourth option is to use option 3 but with a twist, by enabling communication between the 2 apps by using URL Schemes. As the majority of iOS developers know, you can open other standard iOS apps like Safari, Mail or the Phone using the UIApplication SharedApplication class, what many developers and mobility architects overlook is that, not only standard apps can be called from your code, but any app which has a URL scheme defined. This gives you the ability to separate processes by application, and in the event a user would like drill deeper into additional information or functions, you can pass information to another app where that can be handled. What if the app is not installed? Good question … You device will smartly open the Apple App Store giving you the ability to install the missing app. Configuring and consuming the communication between 2 apps is very simple and straight forward.
You can read about the URL Schemes within the apple documentation here:
Within the SAP Suite of iOS Apps you can also find URL Schemes already configured and in use, some examples of these are:
CRM @ SAP
Find account by number: crmatsap://openAccount?accountid=<number>
Open opportunity by number: crmatsap://openOpportunity?opportunityid=<number>
Open account by number: crmatsap://openAccount?accountid=<number>
Open Product by ID: pricingapp://openProduct?productid=<productid>
If you are still not sure if iOS URL Schemes are right for you here are a couple of Pro’s and Con’s
– Use other custom apps to augment yours
– Use other companies apps to augment yours
– No need to redevelop similar functionality
– Communicate between apps
– Launch your app from a hyperlink (online/in a web page?)
– No need to be online for base functionality
– Shouldn’t pass sensitive data
– Clearly define the scope of each app and avoid over simplifying (e.g. an app for searching for customers by name, another for searching by ID.)
– Should not be a critical function, since there is no guarantee that the data is being received by the other application
I am curious to know how many app developers out there are using URL Schemes within their custom development?
After hearing about folks hacking Apple’s Siri to do things like starting their Viper and controlling their thermostat, I thought about utilizing voice based integration with SAP to retrieve data. By default, Apples technology is pretty well locked down, but it didn’t take long for a developer to introduce a small workaround using a ruby app and a DNS filter. The filter intercepts the call to apple and allows you to inject your own questions, responses and data. If you are interested in learning more, this summary can guide you through the process of setting up and actually communicating with SAP from Siri.
Click here for a short demo video on youtube.
What you will need:
– iPhone 4S – (SiriProxy has a test console, if you don’t have one)
– Ubuntu (Virtual Box Virtual Machine) – this is quick and easy to download, and get up and running quickly with Oracle’s VirtualBox. (Download)
– SiriProxy – You can use this guide from within your Ubuntu box to get this up and running in less than a hour. (Download & Install Instructions)
– SiriSAP Plugin – You can download this here from the SDN CodeExchange (Download)
How does SiriProxy work?
SiriProxy intercepts the iPhones DNS calls to Apple (specifically guzzoni.apple.com) and reviews your request, in the event a loaded plugin contains the requested text, it will process the request “locally” rather than sending it to Apple.
Below is the general network path a Siri requests traverses.
With SiriProxy and SiriSAP Plugin, the calls are routed through your Ubuntu server and essentially “preprocessed”:
How does SiriSAP Plugin work?
The plugin gives you the ability to write your own search text and pulls data from SAP’s Gateway system. As an example, you could say something like: “Show account name”, the plugin will process the request, pull data from SAP CRM (Using Gateway) and present the results to the user.
The plugin is written in Ruby as a gem and utilizes a HTML/XML Parser called NokoGiri which makes processing very quick and easy. One limitation I found with SiriProxy is the inability to have your own custom response types, for example, SiriProxy only supports “Answer snippets”, maps, and answers. Below is an example of how a simple interaction would occur:
In this example we:
1. Intercept the call
2. Let the user know we are processing their request
3. Remove any spaces
4. Pass the account number to a method (show_account_name).
5. The method Opens the SAP Gateway CRM request “Account Collection”
6. We use NokoGiri to parse the HTML/XML
7. We search the HTML/XML for “orginizationname” and return the contents