The barcode scanner incident

Published by Tobias Hofmann on

7 min read

SAP decided to pull the plug on the hybrid SDK Kapsel for their mobile platform (on premise and cloud). You could see that this would come since 2018, when SAP reduced the support cycles for Kapsel to 2 years. While version 3.0 was supported for 5 years, since then it is shortened down to 2 years:

  • Kapsel SDK 3.0: 2013 to 2018
  • Kapsel SDK 3.1: 2018 to 2020
  • Kapsel SDK 3.2: 2020 to 2022

State of Kapsel SDK

Kapsel is not dead. You can download the SDK and develop apps with it. As SAP understands enterprise software, they will continue to support it as long as customers use it (remember Web Dynpro Java). And yet Kapsel is dead, as it is no longer under active development. What is dead is the Fiori Mobile Client from SAP that is available in the app stores. SAP Note 2992772 describes that SAP is going to remove its Fiori App from the public app stores (“SAP plans to remove the SAP Fiori Client app from the Apple App Store and Google Play Store by the end of first quarter of 2021”). That is: SAP is not going to continue to provide an out of the box solution to run Fiori apps on their mobile platform as a hybrid app. This is not as bad as it might sound, as you can use Kapsel SDK and build your own custom one. Is this good news? Ask yourself: do you really want to start a new project with an SDK that is supported only until 2022? In case there is no SDK 3.3, you are out of support shortly after your app is live.

QR code and barcode scanning

The kind of problem this creates is clear when you look at a feature you need in hybrid/native apps: barcode or QR code scanning. Many apps use a barcode or QR scanner to make the life of the users easier. Customer develop new Fiori apps or enhance existing apps to include this feature. What these solutions have in common is the need of a feature that can scan barcodes. With Kapsel, it is easy to add a working barcode functionality to a Fiori app. And that is when the mobile product strategy from SAP is creating severe problems for customers.

  • Kapsel includes a barcode scanner plugin. The support timeframe is too short and uncertain as to use it for new projects.
  • The open source barcode plugin the Kapsel one is forked from has not seen active development for 2 years. Here SAP support add(ed) value as SAP provides active support. Unfortunately, see point above regarding support.
  • There is no barcode scanner functionality available in Fiori (UI5). Scanning a barcode is widely enough used to create demand for such an official control, and at the same time is specific enough to not have it as an official UI5 control.
  • Mobile Development Kit (MDK) includes a barcode control.
  • Redevelop your Fiori app as a native app (iOS or Android)

As a customer, you have one choice: MDK. It is less effort to develop the Fiori app again in MDK than as a native app and you get a barcode scanner feature. Negative aspect is that you will have to develop your apps using MDK. MDK does not allow you the reuse your existing UI5 app and add mobile features as needed. While customers love to be able to offer a mobile app to their users, they do not really want to spend twice the money and time. For the UI5 developer it means to add another skill. Therefore, developing all barcode apps in MDK again is rarely a feasible option.

Best option would be to have an official UI5 barcode control from SAP mobile. Currently, this is not offered. There is SAP Note 2991445 which tells customers to use a JS library (QuaggaJS) for barcode scanning. How to do so and develop the UI5 control is up to you. In case the code isn’t able to read your barcode: no support from SAP.

In the FMC EOL note mentioned above, SAP links to Adobe’s announcement on why their PhoneGap build is ended (the note is already at version 13, seems the mobile team is trying to include more information to calm down customers). Main reason is the rise of progressive web apps (PWA). With PWA, HTML5 apps can run offline, receive push notifications and with newer browsers, access native features like camera or GPS, and be an icon in the app launcher. In the transition phase, hybrid apps are not abandoned. Ionic uses capacitor that also runs PWA for hybrid apps. No doubt: the world is moving away from hybrid apps and towards PWA. For SAP mobile, the future is low code / MDK.

Customer reactions

How is this received by customers and the developers? Let’s say, feedback could be better. For many, the end of Fiori Mobile Client allowed them to really understand that hybrid apps are phased out by SAP. And they are caught unprepared by this “news”. Investments were made into Fiori and UI5 development and Kapsel helped to justify this. At several occasions like events and webinars, customers asked the following questions:

  • When Fiori is going to support PWA.
  • What alternatives to Kapsel SAP is offering.
  • How to read barcodes with Fiori apps.

Looking at the overall reactions, my guess is that the product team did not expect this. Their answer of course was to use MDK. Take a look at note 2992772. To me it gives the impression the SAP mobile team was not expecting questions regarding barcode scanning. They added this information after announcing the end of FMC. Somehow, I expect that a product team knows how their offering is used. You might think the SAP Mobile team should know this kind of data. SAP is able to get in contact with its user base very easily via support. They have contacts at almost every customer, have max attention personal located onsite, key accounts, sales, consulting and the OSS tickets from customers as well as contact at webinars or events. That no feedback was collected prior seems unlikely. So, what kind of feedback was collected? My guess: by talking to the happy customers. Talk to those that easily do whatever SAP says.

What seems strange is that they are asking their SAP mobile customers how they use FMC in SAP Note 2981575. The root cause is not about the end of FMC app. It is about what this means and what customers expect from SAP mobile:

  1. Provide a barcode scanning functionality for Fiori
  2. Provide support for barcode scanning plugins
  3. Make Fiori a PWA app

I do not see much movement from SAP to offer Fiori as PWA. This is not only a SAP mobile tasks, and involves more teams and an overall strategy what SAP wants to offer to customers in regard to feature and access to SAP with Fiori. I also do not see that SAP mobile product management is releasing a UI5 control for barcode scanning. Positioning MDK as the solution for mobile app development seems sales driven: being able to talk about a low code solution to customers. Last time we had this was with native apps, and this is not the greatest success story. As long as you cannot run and extend any UI5 Fiori app in MDK, it’s only going to cover a small sweet spot in the mobile area at customers. And the footprint may be too small to gain general usage traction (like mobile cards). As always: SAP is a big company, there are many big SAP customers and many of those will spend money on MDK and assure that it is a success for SAP. For the rest: if you do not match the criteria, most probably the offering won’t match your needs and don’t add much value to your business.

UI5 controls

In case you need a barcode or QR scanner UI5 control you can use my custom controls:

  • QR scanner. UI5 control that uses jsQR for reading QR codes.
  • QR scanner demo. A sample UI5 project showing how to use the QR scanner control.
  • Barcode scanner. UI5 control that uses Quagga JS (2) for reading 1d barcodes.
  • Barcode scanner demo. A sample UI5 project showing how to use the barcode scanner control.
Let the world know

Tobias Hofmann

Doing stuff with SAP since 1998. Open, web, UX, cloud. I am not a Basis guy, but very knowledgeable about Basis stuff, as it's the foundation of everything I do (DevOps). Performance is king, and unit tests is something I actually do. Developing HTML5 apps when HTML5 wasn't around. HCP/SCP user since 2012, NetWeaver since 2002, ABAP since 1998.


Daniel · January 14, 2021 at 11:09

Hey Tobias
Thanks a lot for the QuaggaJS-control. Unfortunately it isn’t working on iOS Safari. The camera is authorized but didn’t show a picture.
on Android Chrome the picture but it’s slow and didn’t hardly recognize any code… is something wrong with the control or with my implementation?

    Tobias Hofmann · January 16, 2021 at 18:44

    Hi Daniel,
    the current code starts the video with a framerate.of 15. In 1 second 15 frames are captured, which makes the video look not smooth. These 15 frames are send to Quagga to analyse the picture and find the barcode. This should work nice on a laptop, but may be too much on for a phone.
    The picture capturing process is (not yet) optimized to take like 1 or 2 frames per second and analyse these, and let the video run at 60 fps. This would make the video look smooth to the user, and at the same time analyse enough frames to get a result (but the line around the barcode won’t be of much value).
    I tried it with my Android (Pixel 3a) and it worked. EAN codes were scanned successfully. You can try the UI5 app here:

      Daniel · January 19, 2021 at 09:26

      Hi Tobias
      On iOS, no video / picture with your implementation.
      On Android (Samsung A21) occurs a picture. The video isn’t smooth at all. The barcode is recognized.


Philipp Doppelhammer · January 20, 2021 at 15:00

Hi Tobias,

Many thanks for creating this very informative post!

I am a Solutions Architect from Scandit – I am currently working on a guide on the best ways to integrate our data capture products into SAP Fiori apps. Your post brought a lot of light into my research. From my perspective it seems SAP tries to move clients into web-based Fiori clients (no cordova-based “Custom Fiori Client” possible anymore) or Android/iOS native apps using the SAPUI5 libs.

Btw, if the performance of Quagga is not sufficient in some use-cases, I would invite you to try out our Web SDK:

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.