Blog

mzl.gatrjtcj.480x480-75

iOS CRM Beta released, a SAP CRM integrated iPad app

Introduction

So its finally ready for a quick demo, the app has taken a little bit longer than expected to develop but has been a really good experience. Having worked very little little with CRM, it was interesting to get a bit of background knowledge and information about the product and its potential.

Background

I decided I wanted to build an enterprise app for the iPad while I was at TechEd a couple months ago, but wasn’t sure which direction to take – Should I go with a manufacturing related type app which assisted material handlers in the warehouse or something which is a little bit more generic and could be used by a wider audience. After meeting a couple great people at a Web Service Class (CD360) we got chatting and they planted the seed for something linked to CRM since users are often out of the office, don’t always want, or need, to take a laptop with them, and iPads seem to lend themselves well to such an environment.

Logically it made sense to start with something basic and I decided to go with viewing Accounts and adding or editing contacts for the accounts. Siva Reddymeka from SAP pointed me in the right direction for which Web Services could be used and off to Xcode I went.

Programming for the iPad for me is fairly cumbersome and slow, debugging is less than perfect and the Interface Builder is quirky. Memory management was another story altogether … Having worked with .NET for practically all my development life, lets just say it took some getting used to ;)

I also knew that Sybase had an iPhone product already and knew it was only a matter of time before they would release something for the iPad but decided to go with the idea anyway and see what I could come up with.

“Project Gateway” was another consideration of mine during planning but why wait? SOAP webservices are not perfect, I know … but instead of spending days/blog posts and efforts complaining and debating the nuances I decide to just get on with it. XML without a decent parser is not easy to work with, but do-able.

This is generally how all my dev work starts, scribble (which coincidentally was added to by our 16 month old) … ;)

image

App functionality

I wanted the app to be able to view the accounts and as mentioned, add and edit existing contacts. The webservices IMO are not all that well thought out. For example, the Read Customer by ID does a great job of pulling in the customer details and all of its relationships (contacts) and also displays 95% of a contacts details but no name, which means a 2nd WS call needs to take place to actually fetch that portion of data. Sure, I understand the services need to be granular, but if I am already getting phone number, email and department, surely an additional xsd element just makes sense?

Here is a list of the webserices I make use of:

BusinessPartnerCRMElementsByElementsQueryResponse_In

CustomerCRMCreateRequestConfirmation_In

CustomerCRMChangeRequestConfirmation_In

CustomerCRMByIDQueryResponse_In

I also did not have access to a CRM system so simply used the ES Workplace systems. If anyone has any interest in EA, ES or even generally interest in SAP can signup for an account and get access to a SAP SCM, SRM, ERP, CRM and PI test systems :) Really great if you ask me!

Code snippet

This is taken from handling the rotation of the business card:

- (void) viewDidLoad{

UIGestureRecognizer *recognizer;

recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
self.swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
swipeLeftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeLeftRecognizer];

self.swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
[recognizer release];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetRotate)];
doubleTap.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTap];
[doubleTap release];
}

App features:

  • Login system (remember me)
  • Ability to add your own CRM system Web service end points
  • Search for Accounts by Name
  • Search within search results for reduced WS calls
  • Geo-coding of address to google maps
  • Logo display from simple attachment (called “Logo”)
  • Display of Marketing attributes (with specific names)
  • Display of all account contacts
  • Rotate contact card
  • quickly switch between contacts via gestures
  • email contacts and accounts easily
  • open contacts and accounts web URLs easily
  • Add/edit contacts
  • Retrieved data is cached for better performance and reduced traffic

Here is a short demo of the app in action.

 

 

Additional Details

I plan to release the app for free over the next couple weeks, it still needs some touching up and few odds and ends added to it prior to that.

 

Conclusion

Overall, I think the opportunities are endless, these mobile devices are changing the way WE (as a SAP customer) can do business. The “Real time” concept is slowly creeping out of the 4 office walls and is letting exterior supporting employees be involved with day to day business operations globally by using simple, intuitive and “always on” and “always connected” devices.