-Here is an outline of the features delivered with latest versions of SAP BusinessObjects Mobile for Android (referred below as 'MOBI' in short).

MOBI 6.1.7:

SAP BusinessObjects Mobile app for Android version 6.1.7 is a patch release, available in playstore since Feb 18, 2015

Below are the capabilities delivered with this version:

1. MOBI now supports Android 5.0 Lollipop.

2. MOBI SDK enhancements to support side-by-side installation:

MOBI SDK now supports usage of custom package name. This allows Customers to change default package name of MOBI and be able to install their customized build in the device, alongside the MOBI appstore build.

Following post details out the steps to configure SDK build environment:

MOBI 6.1:

SAP BusinessObjects Mobile app for Android version 6.1 has been released during end of Q4, 2014.

Apparently Playstore does not allow us to view 'What is new' text on previous versions of the app. Here is a reference of new features that are available since MOBI 6.1 release (version number 6.1.6) in Android:

12. Performance improvements:

Web Cache support in MOBI for viewing Analysis Applications (Design studio documents): MOBI caches resources from Design studio documents when it is opened for the first time. Hence subsequent viewing of any Analysis application, sharing common resources is faster

SAML2 implementation is not shipped by default with SAP Mobile BI Server. The reason for that is - there is no one size fits all approach. SAML2 authentication response are quite different from one customer to another, even though it conforms to SAML2 specification. SAML2 tickets are different as they have different issuers, different assertions, different certificates, different signatures, different subjects and their attributes. Hence handling each SAML2 ticket need to be implemented differently.

You need to place the CustomFilter class in '<WebAppsROOT>\webapps\MobileBIService\WEB-INF\classes\com\businessobjects\mobilebi\server\filters'

All your dependent libraries (opensaml 2.4 library in my case) should be copied to '<WebAppsROOT>\webapps\MobileBIService\WEB-INF\lib'. Just ensure that your libraries are not already present in that folder, if there do not replace.

In the Payload section add the "SAMLResponse" as key and your BASE64 encoded SAML2 ticket as value

Click Send. If everything is fine you should get a valid logon response with success message, logon token, rights info, user info etc.

Important Note

Please note that since this is a custom implementation this will be gone if and when you upgrade the Mobile Server to a later version. Hence, the suggestion would be to back-up the following and perform above steps on the new war file

In this blog we will understand how to set up the Mobi Android SDK project with Android studio. We will also understand the changes to be made to create new product flavors of the SDK project which in simple words mean we create an application which can be installed along side the Mobi application published by SAP on google Play store.

The blog is divided into four major parts:

*Installation of Android Studio

*Configuring the SDK project in Android Studio

*Modifying the project to enable “Side by Side” installation along with Mobi application present on Android Play Store( Supported from Mobi Android SDK version 6.1.7)

*Signing the release build

Installation of Android Studio

(Note: Please make sure you install JDK 7 since that is the minimum required java version for Android Studio to run.

Android Studio is now the official Android IDE. For “side by side” installation of the play store app and the SDK app the gradle build system present in Android studio is required. Eclipse does not support this feature)

 Start installation by double clicking the downloaded Android studio Installer. Click on ‘Yes’ if you are prompted with a security warning

 Click on Next to Continue the installation

Select all the components for installation

Select the location for all the components to be installed. ( Default recommended)

Click on “Next” and “Install” in the subsequent Windows to proceed with the installation!

Now select the “SDK Manager” option from the tool bar to install the following Components

Once the Installation is done Close SDK Manager and also Android Studio!

Configuring the SDK project in Android Studio

Download the zip file SAPBusinessObjectsMobileAndroidLib-X.X.X.zip

Extract it to the folder SAPBusinessObjectsMobileAndroidLib-X.X.X

(Note: The zip file name may vary from the actual file which you download from SMP and hence the name of the extracted folder name will also not be the same. The name used here serves as a placeholder)

Download the Android support Library version 19.1 from the below URL:

(Note: lintoptions is a child of the “android” tag while configurations is a root level element. Please refer to the screenshot below to know where to place them)

Click on “Sync now” present on the yellow bar found above the file editor

Now select File->Project Structure->app (under Modules)->Select Dependencies tab->Click the green ‘+’ button on the right corner and select the “Library Dependency” option.Now select the play-services (com.google.android.gms:play-services:6.5.87) option from the popup and click on OK. Click on OK in the Project Structure Popup as well!

Let the build happen.

The project is all set! You can run the application by clicking on the button in the tool Bar

Modifying the project to enable “Side by Side” installation along with Mobi application present on Android Play Store

 Open the build.gradle file under app (as done before)Add the following lines and then click on “Sync now” like before.

productFlavors{

<Your-Flavor-Name>{

applicationId <Unique-Application-id>

}

}

Example-

productFlavors{

sdk{ applicationId "com.sdk.mobi"

}

}

(Note- Please make sure your applicationId is not com.sap.mobi )

 Now open the AndroidManifest.xml (Under Android->app->manifests)

 Change the android authority attribute under the provider tag! This value should be the same as the applicationId given in the previous step.

 Open the file defaultSettings.xml and change the value under the feature.package.name.default tag to the applicationId given in the previous steps.

 Now select Build->Rebuild Project.

 The project is all set! You can run the application by clicking on the button in the tool Bar.

Creating Multiple Applications

You can create more than one application by having multiple product flavors. You can select different build variants from build variants tab.

An important step after this is to make sure you change the values in AndroidManifest.xml and defaultSettings.xml with the application id of the variant chosen currently. ( As shown in the previous section)

'

Signing the release build

Select the ‘release’ build variant under the build variants tab and then Sign your application!

The Mobile Page Layout has been implemented mainly for supporting all layout scenarios of Webi Reports, as per the Report Element arrangements, defined on BI Launch-Pad. This layout model helps user to design the Webi Reports with minimal design work, and user does not need to strain to place the report element in exact pixels or to align the report elements with accurate coordinate details.

In this approach, the report elements are arranged and resized for the improved space efficiency and aesthetics, which work best when the report is displayed on tablet or a mobile device. The report page is cut up in to multiple columns and as per the coordinates the report elements will be grouped on the specific column. The report elements of a particular column will share space according to the proportion of actual size of the Report elements.

It is recommended to use Mobile Page Layout, rather than Card Layout, as the Mobile Page Layout covers all the layout scenarios of a Webi Document, such as pagination, space efficiency, report element spanning.

A Report Page cut up into multiple columns:-

The number of columns, created on the page, will be equivalent to the maximum number of report elements, which are located horizontally, without horizontal overlap with other report elements. In the below specified diagrams, it is explained with some examples.

Arrangement in Webi

Number of Columns

Detail

1

In this layout, at maximum there are three reports elements, placed horizontally. The report elements are 1, 2 and 3. The Report element 2 comes to 2nd Column, because right side of Report element 1 ends before the left side report element 2.

2

In this layout, at maximum there are around 5 report elements, placed horizontally. The report elements are 1, 2, 5, 6 and 7.

3

In this Layout, the report element 2 remain on the first column itself, as it is overlapped with report element 1, and will be rendered one below the other.

Following statement will be easy to perceive, with the understanding of above examples.

In technical terms, a report element (2) will be placed in to a new column (on the right side), when at least one of its left side report element’s (1, 4, 8) right side boundary ends before the report element’s (2) left side boundary.

Why do we have column-based layout in Mobile Page Layout Model?

For aligning report elements boundary to a nearest vertical or horizontal line, the layout needs to follow either a column based rendering or a row based rendering. The main reason for following column based rendering in this layout model is to have space efficiency under a Vertical Table which may grow or shrink vertically, based on the number of rows, when filters are applied.

Pagination of Mobile Page Layout:-

The Pagination of a Webi Report in mobile device will be done as per the Page Format setup of the report, defined in BI Launch Pad. The default Webi Page Format is A4 size with Portrait orientation. When the page format is configured for other page size and orientation, the pagination with respective size is done in the mobile device screen as well.

Page Format

On BI Launch Pad

On Mobile Device

A4_Portrait on BILaunchpad

A4_Landscape on BILaunchpad

As shown in the snapshot, the arrangements of A4-Portrait of Webi Page in BI Launchpad will be same for both Portrait and Landscape orientation of Mobile WebI Page, i.e. when the orientation of mobile device screen is changed, the report elements will be just stretched to different dimension, and will not be moved to other page.

A Report element will not be spread across multiple pages:-

In BI Launchpad, a Report element can be bigger than a Page size, hence it will spread across multiple page as show in the following snapshot.

But when the same report is rendered on Mobile Device screen, the Report elements will not be split or spread across multiple Pages. Instead a report element will be clipped with the page, where its origin resides. For instance, in the above example, the Pie Chart is spread on Page1 and Page2. But in the Mobile Device, the Pie chart will be displayed on Page1. And the vertical table in BI Launchpad is originated on Page1 and spread on Page2, Page3 and Page4. In the Mobile Device the table will be clipped and displayed inside Page1. Hence the report will be displayed in Mobile Device as per the below specified snapshot.

This webi report in Mobile Device has single page (only Page1) and the other pages (Page2, Page3, Page4) are not listed, as there is no report element, with its origin, on those pages.

Dimension of a Report element on Mobile Device:-

Along with the space optimization on Mobile Device, Mobile Page Layout decides dimension of each Report element, based on the size proportion of a Report element against the size of a Report elements available on the particular page. For instance, the below Webi Report Page has Report elements with various different dimension and unaligned origins.

When the same Report Page is rendered on Mobile Device, Based on the origin and dimension, each Report element will be aligned into a column, and the report element will be rendered one below the other inside the column.

The above Report Page will be displayed in Mobile device as per below snapshot. There are 2 columns, one column covers RP1 and RP2. And the other column covers RP3, RP4 and RP5. Here each column will get width based on the proportion of that column with all other columns.

Column width:-

On the first column, there are Report elements with maximum width as 2 inches (Width of RP1 or RP2). On the second column there are Report elements with maximum width as 3 inches (width of RP3). Here the width proportion of the columns is 2”:3”. When it is rendered on Mobile Device which has around 750 pixel width, as per the proportion, the first column will get 300px and the 2nd column will get 450px.

Report element height:-

On the first column, there are 2 Report elements, one of which(RP1) has 3 inch height and other Report element(RP2) has 1 inch height. Here the height proportion is 3”:1”. When these report elements rendered on Mobile device, as per the proportion, RP1 will get 675px height and RP2 will get 225px height.

On the Second Column, there are Report elements (RP3, RP4, RP5) with equal height of 2 inches. Here the height proportion of the report elements is 2”:2”:2”. Hence on the mobile device, each Report elements on the Column2 are rendered with equal height of 300px.

Report elements of a Column will have equal width:-

The report elements of a particular column will have same width, which will be equal to the width of the column.

Space between Report elements:-

Each Report elements and columns are rendered with 10px gap, on all of the sides. Even when there is more gap or no gap between report elements on BI Launchpad, there will be always a constant 10 px gap between report elements, when it is rendered on Mobile Device.

Report elements can be spanned across multiple columns:-

A report element can be designed for spanning across multiple columns. For instance in the following Webi report page, the Line Chart is spread on both Column 1 and Column2.

The above webi report page will be rendered on Mobile Device as per the snapshot given below.

Tables on Mobile Page Layout :

Tables on webi report may grow and shrink vertically, based on the applied filter values. On the mobile device, whenever a Table shrinks on its height, the Report element, which resides under the table will occupy the space. If the below report element is another table and it is not spanned across multiple columns, then it will be moved up to occupy the space created by the shrunken table.

When a Table grows on its height, it can grow up to the allotted height, which is derived from the proportion with other report elements on the same column.

When the table content needs more height than the allotted size, then the Table will be vertically scrollable, within the allotted height. And when there is more number of columns, which could not be accommodated on the given width (column’s width), then the table will be horizontally scrollable, within the allotted height.

On BI Launchpad

On Mobile Device

Based on the filter the Table has shrunk

and have just 4 rows

Table has shrunk,

and the gap is filled with Bar chart

Horizontal Alignment of report elements across columns: -

The horizontal alignment of report elements across columns is achieved by keeping size proportion of the report elements equally on those columns. For instance, the following Webi Report page has 3 columns, and on each column report element height proportion is equal across the column.

On the first column, the report element size proportion is 1.5”:2”:3”, likewise on the 2nd column also the size proportion as 1.5”:2”:3”. So RP2 and RP5 are horizontally aligned, as RP1 and RP4 heights on Mobile device are equal. And RP3 and RP6 are horizontally aligned, as RP1 + RP2 and RP4 + RP5 heights on Mobile device are equal.

On the third column, the report element size proportion is 3.5”:3”. Based on this proportion, the sum of height of RP4 and RP5 will be equal to height of RP7. So RP8 will be horizontally aligned with RP3 and RP6.

As the horizontal alignment of report elements are decided based on the height proportion, it is not necessary to keep the report elements exactly aligned origin on BI Launchpad.

Hence the above webi report will be rendered on Mobile device as per the below snapshot. Horizontal Alignment could not be achieved or will not consistent for the report elements, which comes below a Table, because when the table shrinks the report will be moved up automatically for space optimization, so alignment with other column report element will be disturbed. So it is suggested to use Charts or spanned Table, above the report elements, which need to be aligned horizontally.

Horizontal Alignment when there are Tables in the WebI Report:-

When a table comes above to another Report element, due to the variable height of the table according to the number of rows, the other report element will keep on moving up and down. In such scenario, horizontal alignment across multiple columns can not maintained consistently.

In the above example report, the Pie Chart and the Line Chart is not horizontally aligned. In this scenario, we can follow following steps to arrange the report elements in horizontal alignment.

Make sure the table height is constant(for example, the number of rows of the table, or the content of the table should not be varied while applying different filter values)

Now the need is to slightly bring up the divider(between the bar chart and the line chart) in the second column.

This can be achieved either by reducing the bar chart height or by increasing the line chart height.

With some trials, we can achieve the horizontal alignment.

Sections on Mobile Page Layout:-

When a Webi Report, which has sections, is displayed on Mobile Device, at a time a single section’s report elements only rendered. User can navigate to different section by selecting an item from the left side section navigation panel. For instance, the below webi report has 3 Charts are each section and it has one non-section report element(Vertical Table), above to the sections.

When the above webi report is opened on Mobile Device, initially the non-section report element will be displayed and no sections will be displayed. If there is no non-section report element, then initially the first section (2004) will be displayed. Then user can navigate to next section (2005), then the previous section will be cleared and the page will be rendered with the non-section report element (Vertical Table) and new section content (2005), as specified in the below snapshot.

Free cell on Mobile Page Layout: -

Like other Report elements, Free cell follows all above-mentioned logics like size proportion, Spanning across columns and horizontal alignments. In addition to that the free cell can be used for creating empty space on the Mobile Device Report page, by keeping blank cell without any text.

One of the pain points observed when upgrading SAP BI Mobile SDK for iOS is migrating the preferences specified in DefaultSettings.plist file.This article provides a sample script to migrate the preferences.

We will be looking at two different approaches to write shell scripts.

Approach 1: Writing a shell script to overwrite specific values of the plist.

Let's consider the customization of the following 3 features:

feature.email.enabled.default

feature.streamwork.enabled.default

feature.predefinedconnections.list.default:0

Sample script:

MOBI_BASE_PLIST="./DefaultSettings_v5.0.plist"

MOBI_MODIFIED_PLIST="./DefaultSettings_v4.4.plist"

MOBI_NEW_PLIST="./DefaultSettings_v5.0.plist"

declare -a cust_arr=( \

"Customizations:feature.email.enabled.default" \

"Customizations:feature.streamwork.enabled.default" \

"Customizations:feature.addconnection.SUP.enabled.default" \

"Customizations:feature.predefinedconnections.list.default:0" \

)

echo "The script uses files in following locations, please exit and change the paths in script if needed: "

There will be situations where we would like to hyperlink to a report from an email or pdf. In case if your users use both mobile app as well as browsers,

you need to make sure you put both these links in all your communications to make it easy for the user.

Here is a simple method to overcome the issue with a single URL for both mobile and laptop/desktop. When the user clicks on the link depending on the device the URL is accessed from he/she is redirected appropriately.

Developed the script in simple asp format(on IIS server of course), but with this logic you should be able to develop script in any language of your choice.

SAP Business Objects Mobile 6.1.6 App for IOS got released 3rd November 2014.

Mobi now aligns with Flat UI design & supports IOS 8

Mobi now supports hierarchical display of categories

(disabled by default, enabled with “feature.home.category.nested.enabled=true” in client settings)

User can double tap on a report part to zoom in and zoom out

Notifications

Mobi App Icon now has a badge to show new notifications. New Notification Panel allows user to view all notifications in one place.

User can also tap on available notifications to view target documents. Now you have one “Auto update” for both BI Inbox and Documents. It can be disabled, enabled only for WIFI or enabled for both WIFI and cellular data. Newly added documents are also available as notifications in notification panel. Mobi application does not require a user action to get notifications & BI inbox content. It automatically gets them for an active connection.

Hyperlink Content in “work offline” Mode

Downloaded hyperlink content can now be accessed in “work offline” mode. This option is enabled with “feature.hyperlink.offline.enabled=true”.

This may require internet access based on the URL used in hyperlink.

Hyperlinks can now be created to access local html pages bundled with application built using Mobile BI SDK

Explorer Content Listing on Mobile BI

Currently all explorer content is listed on mobile devices, irrespective of being assigned to mobile category or not (category assignment possible for explorer artifacts since BI 4.1)

A new property is being introduced in mobi.properties to change this behavior. “default.listing.explorer.category.only=true” will force explorer documents to list only when they are assigned to mobile category

This property has a mobile server dependency

Dashboards Listing on Mobile BI

Currently Dashboard content is listed on mobile device if any of the following is true

If it is assigned to mobile category

If it is enabled for mobile while saving

A new property is being introduced in mobi.properties to change this behavior. “default.listing.xcelsius.category.only=true” will force Dashboard documents to list only when they are assigned to mobile category (it should be noted this property only influence listing and in order for dashboard documents to be correctly displayed on mobile, they should be saved for mobile from dashboard designer)

This property has a mobile server dependency

Dashboards Performance Improvements

Targeted performance improvements to reduce the initialization and loading time for dashboards (Has dependency on BI 4.1 SP05)

An option to enable “Prefer Cache” for downloaded dashboards. When it is set to true, application loads the dashboard content from cache even if the live connection is available. This option is available with client settings property “feature.dashboards.prefer.cache.enabled=true”

SAP Mobile BI App is available for Apple, Android & Blackberry devices. Content support across platforms and devices with different form factors is as follows

iPAD

iPhone

Android Tablet

Android Phone

Webi

Yes

Yes

Yes

Yes

Webi As Pdf

Yes

Yes

No

No

Crystal

Yes

Yes

No

No

Crystal As Pdf

Yes

Yes

No

No

Hyperlink

Yes

Yes

Yes

Yes

Dashboards

Yes

No

Yes

No

Design Studio

Yes

Yes

Yes

Yes

Explorer

Yes

Yes

No

No

Lumira

Yes

No

No

No

Note: As on today SAP Mobile BI App is not available on windows 8 tablet or phones.

Disclaimer and Liability Notice

This document may discuss sample coding or other information that does not include SAP official interfaces and therefore is not supported by SAP. Changes made based on this information are not supported and can be overwritten during an upgrade. SAP will not be held liable for any damages caused by using or misusing the information, code or methods suggested in this document and anyone using these methods does so at his/her own risk. SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of this technical article or code sample, including any liability resulting from incompatibility between the content within this document and the materials and services offered by SAP. You agree that you will not hold, or seek to hold, SAP responsible or liable with respect to the content of this document

The compatible MOBI app version with iOS8 will be V 6.0.9. We have already uploaded the new patch (v 6.0.9) to AppStore and should be available for download soon.

If you have upgraded your device to iOS8, you might face few UI issues and abnormal exit of application on some specific workflows. We have fixed these issues in the next patch version 6.0.9

If you are using older version of MOBI app (like version 5.x or even 6.0.8) built using SDK, we recommend you to download the latest SDK package (version 6.0.9) from Service Market Place (SMP) and rebuild the app before moving to iOS8. SDK package will be available for download from SMP once app is live in iTunes.Please continue to use XCode 5.x to build the application. Compilation using XCode 6.x is not yet supported and application may exhibit user interface issues.

A user can directly import connections from Configuration Server (MOBIServer). In order for end user to be able to do that, mobile server administrator need to add the connections and their details in server.properties.

The list of parameters that can be used while defining connection in MOBI Server are as follows

Parameter

in server.properties

Basic

SSO

SUP

SMP

Possible Values

Name of connection

DisplayName

Y

Type of connection

BOBJ_MOBILE_CONNECTION_TYPE_STRING

Y

"BOESMP" for SUP Rest Connection,

"SUP" for SUP Legacy Connection,

Value not specified means BOE Connection

CMS Name or Cluster

BOBJ_MOBILE_CMS

Y

same as the CMS value entered on connection screen. It can be IP, Qualified name or cluster name (@abc)

Note: While modifying a connection normally you have to repeat each parameter twice - one with "Prev" and another with "New" suffix. However, in case of SUP connection that is not required. This is because you can have only one SUP connection.

You can directly import these connections from the Configuration Server (MOBIServer)

Administrator can configure these connections at following location

Copy the server.properties from default folder in to custom folder (<WebAppsROOT>\MOBIServer\WEB-INF\config\custom)

Then modify the server.properties file in custom folder

Choose your new connection identifier, say we choose 'mysso'. Add that to mobi.connections

Provide the connection properties and save the server.properties file

Now deploy the MOBIServer again after changes mentioned above.Once done, you can execute the following URL to check if the properties are configured correctly or not. [http://<server>:<port>/MOBIServer/MobiConfigurationServlet?RequestType=ServerList ]

You can use SAP BI Links to create connections. Following are two sample connection links

You can use MDM tools to publish connections if devices are IOS7 and above

For devices with iOS 7 or higher, Apple provides the "Managed App Configuration" functionality. This functionality allows a Mobile Device Management (MDM) server to push down a configuration dictionary into the managed app's NSUserDefaults for the purpose of remotely configuring settings

You can configure a single predefined connection or multiple predefined connections in the application by specifying values for the conn.list.(n) property on the MDM server, where 'n' is the array index starting with a value of 1. Each array item is of the type "String" and the value of each item corresponds to a connection URL.

For example, you can specify a predefined connection URL for a BOE server connection with the syntax shown below

conn.list.1=<specify the sap bi link for SSO connection here>

You can use SDK to generate build that already has connection created.

With the iOS 8 set to release this fall, we would like to understand which iOS version you are using today and what plans you may have to upgrade to iOS 8, once it becomes available. Today, App Store distribution by OS shows us that 90% of iOS devices is already using iOS 7 ( link)

So that we can better plan for iOS 8 support, please respond to this short, 2-question survey (link below).

If you have additional questions/inputs, you can also reach me via this blog or email