Skip to Content
Author's profile photo Paul Aschmann

iOS CRM for SAP and iPad – A free Mobile CRM App


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.


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) … 😉



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:





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.



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.


If you are interested, check out my other App: SAP Note Viewer for iPhone

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      i have followeed up on the tip and signed up for the(ID)ES. i think i already have a ticket in mind: Safari is not supported for HU2 SID and my userid is not authorized to view webgui which i think is the expected but not desired bahavior.

      BTW, great story about the development process.


      Author's profile photo Paul Aschmann
      Paul Aschmann
      Blog Post Author
      Thanks for the feedback Greg, interesting that Safari is not supported. I have no prob with FF - FYI.

      My account access took a while to get created and updated etc. so it *could* simply be that, but doubt it.

      Another FYI is that you can only use WebGUI to access the systems, not SAPGUI, been there ... wasted hours trying 🙂

      Author's profile photo Former Member
      Former Member
      i know what needs to be changed to support Safari: ~USERAGENTCHECK needs to point to 0 in GUI Configuration of Service Data of webgui service.

      if only i knew how to open a
      CSN ticket

      Author's profile photo Paul Aschmann
      Paul Aschmann
      Blog Post Author

      I have emailed you a contact name/email who might be able to help, let me know if anything changes.

      Cheers, Paul

      Author's profile photo Former Member
      Former Member
      Hi Paul

      A concern that I have about many apps, not just yours, is that when I save my logon details, how do I know they won't be sent to some third party without my knowledge? For example, recently there was a blog about a cool Notes browser app for iPad and iPhone. If I save my SMP username/password in there, am I opening myself to a risk of those details being misused?

      Again, I'm not picking on either of these apps, I'm just asking a generic question about the way mobile apps work when they are connecting to corporate systems.


      Author's profile photo Paul Aschmann
      Paul Aschmann
      Blog Post Author
      Hi Michael, you pose a very valid question.

      As a disclaimer 🙂 and to address your concern, I am the dev of the 3 apps you have mentioned and neither of them connect to any outside service except for which have been specified (in the CRM config) or in the case of the Note Viewers to SAP's sites. No username or password is submitted unless actually requested by the servers (HTTPS).

      Specifically from a Apple perspective a big advantage to having something like the "App Store Review Process" is that apple has a pretty strict and clear set of guidelines as to what developers can and cannot do, the testing for the apps is thorough and many of these scenarios are considered. Any apps transmitting data across a network (cellular or wifi) to or from the device needs to be specified (what service or URL is being used) during the review and I would assume that the incoming and outgoing data is scanned to ensure that connections to such an external or non listed sites is avoided. As you may know the saying goes "where there is a will, there is a way".

      If you think about it, these days with so many apps providing "augmented" services for large systems or foundation level websites it is common problem across the board. Think of Facebook connect, tweetdeck,, the list goes on where external companies and individuals are providing an add on feature which requires the user to authenticate where such malicious activities can occur. Unfortunately these days its literally impossible to be 100% secure whether at your desk, online or offline, locked in a server room or on a mobile device. I recently wrote a article about the stuxnet virus (How secure is your enterprise data?) which somewhat highlights that.

      If you would like a more technical solution to decide for yourself which apps, websites or software you can trust, I would suggest something like Wireshark which will allow you to capture network traffic and determine destination connections to ensure validity.

      Thanks again for the valid point,

      Cheers, Paul

      Author's profile photo Former Member
      Former Member
      Did you run into any issues trying to figure out how to populate the request in service CustomerCRMChangeRequestConfirmation_In so that the changes you requested actually worked?

      We are struggling with this service because the response will say that it is successful but, when you look in CRM no change was made.

      Is there documentation on how to populate the request of this service based on what type of change you need to make?


      Author's profile photo Paul Aschmann
      Paul Aschmann
      Blog Post Author
      Hi Amber,

      I recall that had similar issues. Could you be more specific with what you are trying to achieve? (i.e. Change/Create Customer or Customer Contact etc.)

      Have you successfully completed the test call in ES Workplace? That would be my first recommendation: (Signup is free).

      Fill me in and I would be glad to help ...

      Author's profile photo Former Member
      Former Member
      We are trying to change a contact's default work address by calling the CustomerCRMChangeRequestConfirmation service.

      Here is the request:

                        41f5526f-450b-03a9-e100-00000a0428c0                  true





      We get a successful response but, when you go and look in CRM the default work address has not changed.

                     Object BUSINESS_PARTNER with key 0750005832 was changed successfully


      Author's profile photo Ulli Hoffmann
      Ulli Hoffmann
      Hi Paul,

      I was just wondering whether you decided to release the app in the Appstore or not. I couldn't find it there? I'm interested in how you lead the user through configuration and getting the app to work in a corporate environment.

      Thanks, ulli