""

Technical

Creating Dynamic WebI Documents

Often we are forced to find a solution to make our Web Intelligence reports more dynamic, because of a specific user need or for the purpose of sales demos. In this case we can add some interactivity to make our presentations livelier and more visually appealing. In this post you will find some examples for achieving more dynamic WebI reports that don’t come with the out-of the-box WebI standard module:

  1. Dynamic columns
  2. Hiding and Unhiding blocks
  3. Hiding and Unhiding blocks in sections

The techniques explained below are valid not only for tables but also for graphs.

1. Dynamic Columns:

The purpose of this technique is to change the value of a dimension column according to a selection from its input control. Below you will find the high level guidelines for creating dynamic columns:

  • Create a dummy table in the Universe; ideally a derived table with the name of the descriptions you want the user to display and to show in the document. You can see a sample below:
Dummy Table WebI
Dummy Table WebI
  • These dynamic variables should come in a separate Query and be linked with the real data coming from a second Query. Alternatively all data could come from a single Query. If the variables and the data to present are not linked, our solution will not work.
  • The next step is to create the Input Control making sure that the filter applied affects either the entire report or a specific table, depending on where the dynamic columns are located.
  • Once we have all this, we need to build the table or block where our "Dynamic Column" will be located and build a conditional formula with IF and ELSE features. Using our example, if our dynamic variable is called Input control, if the information we want to show is located in the Period table and if the dynamic source fields are Month, Week & Day, then the formula should be the following: =If("inputControl"="Month";[Period.Month];If("inputControl"="Week";[Period.Week];If("inputControl"=”Day”;[Period.Day]))) Make sure the formula sentence is properly defined so that a meaningful result will be displayed when the user applies the "All values" option.

For a more detailed explanation on this topic you can check the Clariba blog article:  How to Use WebIntelligence Input Controls Efficiently from 22nd January 2011 at www.clariba.com/blog.

2. Hiding / Unhiding blocks

  • The purpose of this technique is to hide one table and show another with dimension columns by changing its value according to a selection from its Input Control:
  • Create a dummy table (like in the example above) with the options we want to show to the user and for the purpose of linking two Queries (i.e. with the word “LINK”)
  • Create a table with all the data you want to show.  After that, it is necessary to uncheck one of the properties that our block/table has by default. Select the proper block, go to properties, deploy the "Display" option and make sure that the "show when empty" property is not active.
  • The next step is to create the Input Control, making sure that the filter applied affects the entire report.
  • Next we need to play around with the filters for the different blocks. The object with the word “LINK” needs to be used like a filter for every single block (equal to). After that we apply a filter with the object we used before for the Input Control, making sure that the option for this filter is “not equal to” the value that corresponds to the actual table. We need to do the same with all tables.

3. Hiding / Unhiding blocks in sections:

Imagine we have a report where we want to split a trends table into sections showing the trends in "Months", "Weeks" and "Days". The section could be too long and the user may not want to scroll down to find a specific one.

  • In this case,  we would make three different tables, one for Months, one for Weeks and the last for Days and place them in the section, making sure that we change the names on the top of the table so that users can  easily recognize them.
  • Select the different blocks and disable "show when empty" selection from the properties. Create three different Input Controls with all values, one for every possible trend. Establish connections between these and their corresponding table.
  • Make sure that the Input Control has one value by default, so only one table is visible. This way when the user makes a selection in a single "trend" Input Control, the corresponding block will be displayed correctly; whereas if the user deselects all the options in the Input Control tables, all the blocks will be visible.

The techniques explained above were developed by our team of Web Intelligence developers to provide business users with the added value of interactivity in their queries, analysis and navigations.

If you have any questions or feedback about these solutions, please feel free to leave a comment below or send an email to info@clariba.com

Easy-to-maintain WebI Reports

Creating Web Intelligence reports is not the most challenging task for a BusinessObjects consultant, but it can be very time-consuming. Imagine your client asks you to create one document with 50 reports, and he's not sure yet how the reports should look. How can you create all these reports and at the same time make sure that they're easy to update?

That is indeed a very important question. Imagine you've already created the 50 reports, one in each tab, and your client suddenly decides that the label for totals should not be "Total (1000 EUR)" but rather "Thousand Euros". And instead of this gray background you decided to use by default, the client would like to have their corporate blue.

What will happen if you didn't think about it (or read this article) before? You'll end up changing the 50 reports one by one. Ok, it shouldn't take more than 60 or even 30 minutes, but you probably have a better use of your time, right?

So let's look at a few tips:

  • Use variables. The variables are not only quite useful for creating new measures, they're also great as labels. If you had created a variable Label_total (as a dimension) with the value "Total (1000 EUR)" and written in each total name cell "=[Label_total]", then the change would be quite easy. Just edit the variable and there you are! The label is now correct on your 50 reports.

  • Use alerters. Alerters are like "conditional formatting" in Excel. Define a condition, a format, and if the condition is met, then the cell with the alerter will be formatted. This is necessary when you really need formatting to depend on a condition, but it's also a useful tool for easy maintenance. For the condition, choose something always true (for example create a variable always equal to 1, and define the condition in the sub-alerter as "Is this variable equal to 1"). For the formatting, just choose how you want the cell to look (for example with the grey background). Apply this alerter to all cells which should have this background. Now, if you need to change the color, you only need to change the alerter, not all the cells in the 50 reports! Note that unlike in Excel you can also put text in the formatting. So you can actually also use alerters for labels; the downside being that you lose in clarity (you can have something written in the cell's formula and something else displayed because of the alerter).

Hopefully this post has provided you with some time-saving tips for your WebI reports that will also help you to easily maintain and update them. If you have some other WebI tips to share, please feel free to leave a comment below!

Installing Business Objects on Linux – Part 1: Preparing Your System

At Clariba we have seen a clear dominance of Windows operating systems during our Business Objects implementations. But what happens when we face the challenge of a Business Objects implementation on a Unix-like system? What are the main differences? How does the consultant need to prepare? What are the pre-requisites? What are the risks and possible ways to overcome them?

We were recently challenged with these questions and we wanted to keep track of this experience and share it with everyone. So I will share below some tips for implementing Business Objects on a Unix-like architecture, more specifically: Linux.

The intention of the first part of this article will be to focus on how to prepare your Linux distribution so the installation runs smoothly. I will follow up with a future article to go into additional details about the Linux setup.

Step 1 – Defining your environment

In any implementation, prior to execution, it is vital to define the scenario you will be facing. This is even more important when implementing on a Linux system. The most important fact you need to know is what type of Linux you will be using and if it is supported by Business Objects.

Officially the Linux distributions supported by Business Objects are Red Hat and SUSE (although other distributions like CentOS have also been proven to work due to similarities with Red Hat).

Linux Operating Systems
Linux Operating Systems

It is a must to go through the supported documents pdf for Linux available at the SAP Marketplace. In this document you will find specific details on the versions and patch level that you need to comply with in order to install Business Objects.

BOE XI 3.1
BOE XI 3.1

Step 2 – Preparing the Linux box

Root Access and Installation User First of all you need to have root access to the system. Although this is not required for the setup, along the way there will be modifications that need to be made to the system that require root privileges.

Also make sure there is at least one additional user in the system. This user will be the executor of the Business Objects setup. Most current Linux distributions already create an additional user at setup.

Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5

Install Files Download the installation files for Linux and save them on a folder that references the installation sources (i.e. /boinstall). Also create a new folder where the BO system will reside (i.e. /bobj)

Installing files in Linux
Installing files in Linux

Modifying Your System Now it is time to get our hands dirty. The following modifications need to be made to your Linux system in order for the Business Objects installation to run smoothly. It is advisable to have a minimum level of knowledge around Linux administration and terminal console commands to facilitate the editing of some of the files mentioned below.

1) Modifying Locale variables The first thing you will need to do is to update a couple of locale variables. Navigate and open the file: /etc/sysconfig/il8n You need to add the following two lines to it:

LANG=en_US.utf8 export LC_ALL=en_US.utf8

What we are doing is correcting a small spelling mismatch on the US utf8 standard value. The above instructions on the file will ensure that those variables are correctly set at boot time. However they can also be run separately on a terminal console at any time.

To make sure your variables are correctly set you can type “locale” on your terminal console. A listing with your available locale variables should pop up.

Modifying locale variables in Linux
Modifying locale variables in Linux

2) Permissions to Source and Install folders You will need to set execution and write permissions to the folders created previously for the source install files and the folder where the Business Objects system will reside. To do that you need to run the following commands on the console as root:

chmod -R 755 /boinstall /bobj chown -R usergroup:user /bobj /boinstall

Note that I’m using the folder names suggested earlier for the folders; usergroup:user is the default non-root user that would be running the installation and a default group it belongs to.

Be very careful with the spelling of these lines. Chmod is a powerful Linux command that could render your system unusable if not used wisely.

3) Setting up Hosts file Go to /etc/hosts as root and open this file for edition. You will need to add a line to resolve your Linux system IP through the network. It should look similar to the following:

192.168.0.1    linuxsystem

There should already be a line for 127.0.0.1 which is the localhost or loopback network interface definition. Save the hosts file with the new line for your system.

To test that your hosts files line has been correctly setup, try to execute a ping command from the console to the name of your system:

ping linuxsystem

You should receive a response if the hosts file has been set correctly.

Ping Linux system
Ping Linux system

4) Disable SE Linux Still logged in as root, modify the SE Linux functionality. There are three levels for it:

  • Enforcing: The default mode which will enable and enforce the SELinux security policy on the system, denying access and logging actions
  • Permissive: In Permissive mode, SELinux is enabled but will not enforce the security policy, only warn and log actions. Permissive mode is useful for troubleshooting SELinux issues
  • Disabled: SELinux is turned off
Security Level Configuration
Security Level Configuration

You will need to change it to Permissive or Disabled.

5) Adding libstdc++ libraries In some cases (CentOS) these libraries are not available by default. You can try to add them from the Linux repositories running the following command:

sudo yum install compat-libstdc++-33

This library can also be found on different places and formats on the web. If not installed, Business Objects setup will fail, indicating the missing library.

In summary...

if you have completed the steps above, you are now ready to install Business Objects on your Linux box.

We will be covering the Linux setup in the second part of this article. Stay tuned for Part 2 coming soon and please feel free to leave questions or feedback below using our Comments form.

It is a must to go through the supported documents pdf for Linux available at the SAP Marketplace. In this document you will find specific details on the versions and patch level that you need to comply with in order to install Business Objects.

It is a must to go through the supported documents pdf for Linux available at the SAP Marketplace. In this document you will find specific details on the versions and patch level that you need to comply with in order to install Business Objects.

How to Use WebIntelligence Input Controls Efficiently

Input Controls provide your WebI reports with the interactivity you need for the proper selection of information, but this functionality comes at a price. When the amount of data handled is high, performance issues may appear during developments. In order to help with this issue, we recommend the following design technique, which can be used to improve the performance of your interactive navigation.

Follow this 8-steps process to become familiar with this solution:

  1. Create a WebI document with two Queries: a) One Query containing the "cube" with the data we want to monitor together with a dimension [Link1] containing the word "LINK" and b) Another Query with two dimensions: [Input Controls List] containing a single list* of the dynamic object to use and an object (Link2) containing the word "LINK" (* A derived table containing hardcoded values can be used)
  2. Create a Merged Dimension (e.g. [LINK]) that unifies the 2 linking dimensions)
  3. Create a detail variable called ICF (Input Control Flag) with the formula [Input Control List] and use [Link1] as associated dimension
  4. Create a dimension variable called X-Axis. This will contain the dynamic object to be used in the reports. It consists of basically a big IF sentence, using the [ICF] from the 2nd query and the objects we want to use as axis from the 1st Query. See as an example: =IF([ICF]="Business Unit";[Business Unit];IF([ICF]="Customer Type";[Customer Type];...))
  5. Create components in a report (e.g. a table and a graph), containing the X-Axis and the measure we wish to show.
  6. Create the input control with the following features: a) Use the [Input Control List] dimension b) In dependencies, select the components (tables, graphs, cells, etc.) that will be affected by the input control.
  7. Create the following filter in every component to be effected: [LINK] Equal to {‘LINK’}
  8. Last but not the least, in Document properties "Extend Merged Dimension Values". This is very important for the correct functionality of the solution.

If we want to take this to the next level and have full dynamic reports we could have 2 additional input controls, e.g. one additional Y-Axis and one measure. To achieve this it would be enough to create 2 additional queries with new Input Control Lists and follow the steps 2-7 for them. In the case of the measure it is better to use sum/if clauses in step 4. Once implemented, this solution will allow easy scalability as new content can be quickly added with few modifications in the front-end interface.

If you have any questions or feedback about this solution, please feel free to leave a comment below or send an email to info@clariba.com.

Rapid Solutions for Business Intelligence with SAP Rapid Marts

As a BI consultant or an IT/IS specialist in your a company, perhaps you are looking for ways to to extract data from SAP R3, Siebel, Peoplesoft or Oracle source systems in record time.

Do you think that your knowledge of the source system database and links between tables is not deep enough to build a star schema data model?  Does the customer or internal department want the data extraction to query the data and in addition, some predefined reports on top of that information?

If you answered yes to the questions above, it is more than likely that your best solution is to implement an SAP Rapid Mart.

A Rapid Mart is a pre-built data warehouse solution based on DataServices, Relational Databases and BusinessObjects BI tools. It is best explained by looking at it from a consulting perspective. Imagine that a company wants to build a custom data warehouse solution. The consultants install DataServices to extract, transform and load the data from the FICO module of SAP R3. Then they design the reports to show to the users, check the details from the source tables (fields, joins, etc.), and design a Star Schema data model supporting these reports and also the ad-hoc query reporting.... After a few months they deliver a first version to the end-users. But as the business grows, the end-user will be asking for a new development to build a new extraction for the FICO module or maybe the SD one. With Rapid Marts, the whole solution is already there.

The steps of a Rapid Mart implementation are as follows:

  1. Run the script that generates the target data model (this builds the data warehouse as a star schema)
  2. Import the “atl” files (that builds the ETL – Extract, Transform and Loading) to Data Services
  3. Configure the ETL with the source and the target database
  4. Continue with other customization that may need to be done (this depends on each of the Rapid Marts available and data on the ERP)
  5. Import the predefined reports with the Import Wizard tool from SAP Business Objects.
  6. Set up the security for the reports (which users will have access to the predefined reports imported with the Rapid Mart solution)

With an “out of the box” ERP, you will need a maximum of five days to implement the complete solution. End-users will not only have access to some predefined reports, but also the ability to build new ones.

However, in addition to the previous steps, you may choose to consider further customization that is not included the Rapid Mart installation guides. Generally these steps are related to the integration of a company’s content with the SAP BusinessObjects platform:

  1. The company’s ERP could be customized. This could be an easy customization, such as using some ERP fields to save different types of data, or it could include a bigger development, which also needs to be added to the Rapid Mart customization. Depending on the type of customization, some additional days need to be added to the development plan. As an average (and depending on the type of the customization), Clariba estimates up to 10 days to fit the new ERP development to the Rapid Mart.
  2. If there are confidentiality concerns within the same company (in regards to the data available for ad-hoc query & analysis and the predefined reports), Row Level Security could be implemented. Depending on how easy it is to implement (this differs depending on the company’s security) it could take five to 10 days.
  3. Finally, if you want to build a dashboard on top of Rapid Marts you will likely require specific information for top management users. These users may only need to check high level KPIs and may require access to the information directly instead of having to build their own reports. Building a dashboard on top of the Rapid Mart data will ensure that top management can have all the information they need in order to make proper decisions. Clariba is experienced in building dashboards on top of Rapid Marts as we offer a packed solution that includes a Rapid Mart deployment with an operational dashboard on top of it.

In summary, by implementing SAP Rapid Marts you can look forward to the following quick wins:

  • Integrated Data Model and ETL Framework (best practice blueprint)
  • Updated universes and updated reports for all Rapid Marts (Rapid Marts versioning comes with the ERP versioning)
  • Low development and maintenance costs
  • Tested and guaranteed

If your company has decided that Rapid Marts are the rapid solution you are looking for, do not hesitate to ask Clariba for further information or to demo the Rapid Marts capabilities. If you are a consultant with additional suggestions or questions about Rapid Mart implementations, please feel free to leave a comment below.

Xcelsius - Finding the Location of a Click

While developing an Xcelsius dashboard for a Clariba customer, I came across two interesting challenges related to the location of a click on drillable charts.

Finding the location of a click on a drillable chart – Part 1

I was working with a drillable chart with two series and I wanted to know where the user had clicked (i.e. which series and which position).

With only one series there wouldn't be any problem. Xcelsius can send the selected series to a cell, and the selected position to another cell. But with more than one series, each series can still send a position, but Xcelsius does not allow all the series to send the information to the same place. So the information has to be sent to different places. As a result, it's hard for the developer to know which point was clicked last, as the information sent before is not deleted.

Solution The idea is to use the series name in a VLOOKUP function to find out which position was sent last.

For the details, I have used the attached Xcelsius file:

As Xcelsius forces us to send the information from the different series to different places, let's do it.

In the attached file, I sent the positions to two different places (Drill!B2 for section 1, Drill!B3 for section 2). But how did I know which value was sent last? I simply used the series name. I have configured the chart to send the series name to Drill!B5, and I use a VLOOKUP function to find the relevant position (see the formula in cell Results!B4). I can then use this position to find the label (or any other relevant information) with the OFFSET function (cell Results!B1).

Finding the location of a click on two drillable charts  – Part 2

In the second scenario, I had two drillable charts with the same horizontal axes and the same series. I wanted to know where the user had clicked (i.e. which graph and which point - series and position)

With Xcelsius it is not possible to send the name of the clicked graph somewhere. Each series can send a position (or value, row or column), but Xcelsius does not allow all the series to send the information to the same place. This is the same challenge as Part 1 in that the information has to be sent to different places. As a result, the developer doesn’t know which point was clicked last, as the information sent before is not deleted.

Solution The idea is to send rows with position and graph name (instead of sending only the position), and to use the series name in a VLOOKUP function to find out which row was sent last.

For the details of the solution I have used the attached Xcelsius file:

When the user cliced on a dot in a chart, I wanted the graph to send 2 pieces of data: the graph name and the position (in the horizontal axis). Instead of sending only the value or the position, I configured the charts to send a row (columns also work). The sent row had the two pieces of data in it. In the example file I configured the quantity chart to send the data from Drill!E2:F3, and the value chart to send the data from Drill!E5:F6.

When the first series is clicked, the data is sent to Drill!B2:C2; the second series is sent to Drill!B3:C3.

So now we have the chart names in Drill!B2:B3 and the positions in Drill!C2:C3. But how do we know which row was clicked last? For this we use the series name. I configured each chart to send the series name to Drill!B5. Now, if I click in the chart Quantity, on the dot Section 2 / Month 2, then "Section 2" will be sent to Drill!B5, and Drill!E3:F3 will be sent to Drill!B3:C3.

Then I simply put the information together. I found the chart name with a VLOOKUP function on the series name (formula in cell Results!B1), the position with another VLOOKUP (cell Results!B5), and the month with an OFFSET on the position (cell Results!B2).

This has been a quick look at the ways to find the location of a click on drillable charts… I would be interested to hear if anyone else has found a solution for similar challenges. If you have any feedback or ideas, please feel free to leave a comment below.

Integrating BOXI R3 with Microsoft Sharepoint: A Practical Guide to Getting Started

In October I introduced the topic of Integration capabilities between SAP BusinessObjects and Microsoft SharePoint, highlighting the benefits of the integration for those companies that want to streamline their Business Intelligence content through their company portal. In this article I reported a comparison of the integration software that SAP offers to BO customers, based on the different system configurations, and presented the features of the leading product currently available, called Integration Option for Microsoft Sharepoint – IOMS.

In follow up to the initial investigation, one of our customers recently asked us to implement IOMS on an existing BusinessObject XI R3 Edge and Microsoft Sharepoint Server 2007 platform. Based on this customer success story, I will explain the requirements and the steps I went through in order to set up and install the IOMS software.

Choice and download of IOMS

A general note before any installation: the IOMS software obviously needs to be compatible with the current version of BusinessObjects. Several versions of IOMS are therefore available for download from http://service.sap.com according to the following schema:

  • BOXI 3.1 SP1 > Integration Option SP1

  • BOXI 3.1 FP1 > Integration Option FP2

  • BOXI 3.1 SP2 > Integration Option SP2

  • Etc…

Installing the IOMS Package

The first challenge I faced during the installation was related to the fact that Microsoft Sharepoint and Business Objects were installed on different servers. This is a common practice to maximize the performance of each systems, but how do we ensure that this configuration allows for the integration?

One important prerequisite was that the IOMS software had to be installed on the SharePoint Server, but during the first installation attempt, the following error messages appeared.

Installation Errors

The issue can be solved as follows:

If you are trying to integrate IOMS with BusinessObejects Enterprise, the .NET SDK has to be installed on the SharePoint Server before installing the integration kit. Note that in addition, the BO Enterprise Web Tier needs to reside on the same server as SharePoint, therefore it is necessary to configure the BO platform accordingly.

If you are trying to integrate IOMS with BusinessObejects Edge, despite what the error message suggests, a full installation of Edge needs to be performed on the SharePoint Server. The same license of the existing operational BusinessObjects Edge can be used. Also if there is a fix pack or service pack on the existing BusinessObjects Edge 3.1 the same should be installed on the SharePoint Server. Do not install the SDK on the SharePoint Server, as this conflicts with Edge. After the installation, all the BusinessObject Services on the SharePoint Server need to be stopped and only then the installation of IOMS can be completed. BusinessObjects Edge will remain a “silent” installation on the server.

Another crucial point we encountered during the kit installation relates to the configuration of the BusinessObjects InfoView interface, and resolves an open question from our previous blog article.

During the installation of IOMS, the administrator is asked to choose the preferred interface for viewing BusinessObjects objects inside SharePoint. Both .NET and Java are available, which confirms that IOMS is not intended to work only with BusinessObjects systems configured with IIS web servers.

Integration Option

The subsequent steps of the installation wizard allow you to specify the server name/IP and authentication settings necessary to connect to the operational BusinessObjects environment. I don’t have a specific recommendation to make about this point; just remember to check the connectivity to the BusinessObjects server (via cmd… ping BO server, or simply test InfoView with Internet Explorer).

Configuring the deployment of the Web Package

After you install the Integration option for Microsoft SharePoint software, the icons or shortcuts are not added to the Start menu. IOMS is not an application, but an add-on software that includes a package of BusinessObjects-specific web parts that are added to the SharePoint deployment.

As a result, eight new BusinessObjects web parts can be selected at any time from the Home Gallery folder in SharePoint:

  • Content Explorer Web Part

  • User Actions Web Part

  • Advanced Search Web Part

  • Dashboard Web Part

  • Document Viewer Web Part

  • Xcelsius Viewer Web Part

  • Crystal Report Viewer Web Part

  • Analytical Report Viewer Web Part

The most important of them is the Content Explorer Web Part. This is the reproduction of Infoview within SharePoint and is mandatory to work with the BusinessOjects content, as it includes the logon window to the operational BO system. Any other Web Part needs to be used in combination with the Content Explorer.

BusinessObjects

And here is a picture of how the final BusinessObjects-Sharepoint deployment  in use would look like:

BusinessObjects Integration in SharePoint

After installing the Integration option for Microsoft SharePoint software, the administrator can finally configure additional options that are specific to each deployment. It is also worth mentioning the SSO authentication with AD credentials, allowing you to navigate BusinessObjects within SharePoint without repeating logon credentials at the moment of use.

The details of this configuration are reported in the IOMS Administrator Guide, but based on our experience this is often a tricky configuration that involves the modification of .NET system files. Stay tuned for a complete troubleshooting guide on SSO configuration to be published in future blog articles.

In October I introduced the topic of Integration capabilities between SAP BusinessObjects and Microsoft SharePoint

Loading Message Solution for Xcelsius

One of the most challenging issues that Xcelsius developers face everyday is related to the performance of dashboards. Sometimes performance can be improved by changing the connection properties, changing the queries, reducing the Xcelsius components or reducing the formulas within the Excel sheet that populates the dashboard.

However even after making these adjustments, it’s possible that the dashboard may still take longer than expected to load. In fact, the calculation of some critical formulas such as SUMIF or VLOOKUP can take several seconds to update the values. But rather than explaining to users that the dashboard is locally calculating the values and that they simply have to wait for a short while, why not show them the loading progress in action…

What I have created is an “enable” button for our filters that will show the loading message for a defined period of time before showing the data. Please note that this is meant for Excel triggering and not for queries (even if it can be easily adapted by using some of the outputs as triggers for the data connections).

The components I used are as follows:

  • Combobox 1: This is filtering only the labels and sending the selected one to a destination (using filtered rows settings).
  • Combobox 2 (behind 1): This filters the entire table only when the play button sends values greater than 0 (so it is in PLAY mode) and less than our max time (in this case 6 seconds). It uses filtered rows and sends the output to a destination. Note: it filters the value 1 from the column with a formula that says: IF what I selected from combobox 1 is equal to what I see in the related column of my source table, then 1 else 0.
  • Spreadsheet Table: I needed an output control to show the values, but of course in real life this could be any other component.
  • Play control: This manages both our loading message and the combobox 2. It has the auto rewind option enabled but neither the auto play nor the auto replay. We should calculate the time that we need to show our loading message and set the play control to that value (or that value +1. it depends on the logic you want to use).
  • Background: This is meant to create the real loading effect that thanks to the “Block mouse events” option avoids any inappropriate clicks of our users while the dashboard is thinking.
  • Text label: This says “Loading…” but could say something else. The important thing is that the user needs to understand that the dashboard is calculating the values.
  • Horizontal progress bar: I used this control that shows the output values of the play button to have more loading effect.

Note: the last three components have been chosen within the out of the box ones to keep things simple. In a real case I would use some flash animations or the loading component that has been released by Donald MacCormick within the xcomponents solution.

The formula I used to show the loading message (and enable combobox 2 as already explained) says the following: IF the output value of the play control is greater then 0 and less than the maximum I need, then 1 else 0.

I hope you find this solution helpful and easy to implement. Feel free to check out the SWF file to see an example of how the loading message solution works and download the test XLF in the zip file below. Let me know if you have any questions or comments.

SWF file: loading message_solution

XLF file: test_v3

SAP BusinessObjects Dashboards running on Android

While Apple and Blackberry users struggle to find ways to visualize the latest versions of flash content with their devices through several applications and plug-ins, Google with its open source philosophy, seems to be in first position in this race.

The latest release of Android, v2.2 (“Froyo”) based on Linux Kernel 2.6.32, natively supports the Adobe flash technology used by SAP BusinessObjects Dashboards (formerly Xcelsius) and SAP BusinessObjects Explorer. The difference is that it allows for the interactive visualization of Dashboards, WebIntelligence reports and exploration spaces without the need for a third-party application, unlike iPhone, iPad and Blackberry.

This means that your company can leverage the effort spent building Xcelsius dashboards by providing mobile employees with a very powerful and interactive interface to make business decisions in the field. It is clear that not all dashboards would be suitable for mobiles and screen dimensions should be taken into account when developing, however below you will see an example which was not specifically designed for mobile but actually fits perfectly in my HTC Legend.

Dashboards on Android

Adobe announced officially on October 25, 2010 that Google's Android OS 2.2 already includes the Flash Player 10.1 plug-in as well as the brand new HP Palm Pre 2, but did not say yet when it will release the versions for the BlackBerry OS, Microsoft's Windows Phone, the Symbian OS, or Nokia/Intel's MeeGo.

Apple has insisted that iOS-based devices like the iPhone and iPod touch will never offer a Flash player. Instead, the company is looking in another direction, surprisingly towards an open standard this time: HTML5.

Finally, on the BI vendor side, it is also interesting to note that as a result of an increasing demand for BI content in Apple devices, SAP BusinessObjects, which used to endorse an application called Roambi Mobile Dashboards by MeLLmo, Inc., is currently developing its own solution for an interactive BI experience which we will certainly have to keep an eye on.

If you have any comments about developing dashboards for mobile devices, feel free to leave a note below.

A Quick Integration of Personal Data with your SAP BusinessObjects Platform

Dealing with personal files has become a harder task with the latest integrated platforms. Higher centralized security together with the presence of web-based tools has reduced the amount of control that users have over the information.

In order to give some power back to users, SAP BusinessObjects has provided rich client tools that enable users to access some of their personal files. However this feature is limited to excel and text formats and causes the corporation to lose control of the files inventory because users are then able to store files in their own machine.

For those companies who wish to have a tight administrative control on their content but at the same time provide quick access to personal files such as text, Excel or even through free hand SQL’s (FHS) , the concept of Universes on top of personal data might be a good solution.

Universes on top of Excel, Text or Free Hand SQL

The concept is simple: the idea is to demand from users which data they want to monitor in their systems and give it back to them in Universe format. They may then use it in their reports as if it was corporate information, either through merging dimensions in WebI or building Queries as a Web Service to populate front-end modules such as WebI itself or Xcelsius.

Universes on top of Excel or Text files will typically have the following features:

  • ODBC generic connections using the Microsoft Excel or Text native drivers
  • Every text file or every Excel tab will appear as a Universe table
  • Tables in Designer do not generally have joins, that is to say, tables show like isolated “islands”
  • A Universe class is typically corresponding with an isolated table and it can be secured so it can be seen for the user only

In the case of FHS, if personalized SQL sentences are needed, we will act similarly but with the following differentiations:

  • The Universe connection is the native connection of the data source
  • Every table in the Universe is a derived table containing the query

Text files Roadmap

Read and apply the following guidelines to use text files as personal data sources:

  • Place all the text files in a common folder
  • Define a Microsoft text driver pointing to that folder
  • The folder acts as a database
  • Text files act as tables
  • The key here is to define well the schema.ini file. Normally the assistant fails to create it so it needs to be adjusted manually (see sample below)
  • Create an empty universe using an ODBC generic connection pointing to the driver, add the text files as tables, link them if necessary, create objects and export (use aliases if format brings Errors)
  • Export the universe

Fig1. A sample of a schema.ini file

Excel files Roadmap

Read and apply the following guidelines to use Excel files as personal data sources:

  • Place all the Excel files in a common folder
  • Define a Microsoft excel driver pointing one of the files in the folder
  • The folder acts as the database instance
  • The Excel files act as the databases
  • The Excel tab files act as the tables
  • Create an empty universe with a Microsoft Excel connection pointing to the driver. Keep in mind that there is no alternative as an ODBC generic connection will not work!!
  • Add the tables, link them if necessary, create Objects and export (use aliases if format brings Errors)
  • Export the universe

A very good feature we can take advantage of is that a driver pointing to one file will be enough to retrieve all Excel files in that folder.

Free Hand SQL Roadmap

Read and apply the following guidelines to use personalized SQL calls as personal data source:

  • Define a native driver pointing to the desired database
  • Create an empty universe with a proper connection pointing to the desired database
  • Create derived tables without linking. The content of them will be the [SELECT XX FROM XX WHERE…] sentences that we want to pull from the database. Use AS command if we want to give a different name to the field
  • Create Objects
  • Export the universe

Conclusions

With these pieces of advice a system to access personal information can be built into your corporation’s BI system. With a minimum of three universes we can query these three types of files. A drawback is that for Excel or text formats only single access is possible, so only one user at a time can access that information. This can be bypassed configuring universe security accordingly so one class can only be seen by one user.

This method provides quick visibility on personal data which is ideal for actions that require a single access like building prototypes & demos or for sequential scheduling and distribution of reports.

If you have any questions or comments about this concept, please feel free to get in touch.