1 2 3 13 Previous Next

SAP BusinessObjects Web Intelligence

192 Posts

Note : Before we start designing any of the details report , consultant and analyst should discussed this questions with the User first.

User Requirement Gathering Questions


Questions related to All reports :


  1. How many reports User required ?
  2. In which format User needs report and duration required ?
  3. Whether the User wants to implement hierarchy in reports or not ? If yes then it should be present in all reports or some reports ?
  4. Are there any prompts (drilldown, filter) which are common to all reports ?
  5. What are the security constraints common to all reports (i.e access and data displayed level for the user) ?
  6. How the User wants to analyse data based on time dimension (eg Year,Quarter etc) ?
  7. Specify the common formatting pattern (eg. color,table width etc) ?
  8. Any sorting condition which should be common in all reports ?


Questions related to Specific report:



  1. What are the fields and calculations reuired (i.e dimension, measure) ?
  2. How to represent data i.e how many charts and tables present in a report ?
  3. What are the mandatory filters required ?
  4. Any specific condition or filters required in report ?
  5. Whether the User wants to highlight specific data in reports or not ?
  6. Drill should be implement or not ?
  7. What are the security constraints related to access of reports and also the data displayed on report ?
  8. What are the prompts/optional prompts should be implemented User wants to see Hierachiral Data while choosing LOV (list of values) ?
  9. Whether User wants to apply any sort condition or customized sorting ?
  10. Do we need to create any hyper links in report or wants to link reports together. (i.e : link to dashboard) ?


Whats Next ?


1. Document User requirement .

2. Create a mock up in Excel .

3. Get the approval/sign off and start working

There are certain settings which we should follow while importing BO Webi reports into Live office PowerPoint. Some of those settings are as follows.


Best Practices while Importing Webi report tables into Live office PowerPoint:


  1. Always keep size of BO report tables exactly same as it is shown on the power point slide.
  2. After importing the report objects into ppt slide, make sure that you keep ‘Apply report format when refreshing’ check box checked for each table object on ppt slide.

Best Practices while Importing Webi report charts into Live office Powerpoint:


  1. Always try to refresh the chart structure from webi report.
  2. If this could not be possible then keep the size of the chart as close as it is in ppt. If the size is too large in the report then it will be blurred while shrinking it in ppt.
  3. While reducing the size of charts in ppt, make sure to check the ‘Lock Aspect Ratio’ check box for the charts. This will do the compression or expansion in same ratio and will keep font visibility.


Special Note:

  1. Always keep webi report on ‘Refresh on Open’. If this setting is not ‘on’ then ppt refresh will throw error.
  2. Please uncheck any other analysis settings like report level filter in SAP BO Webi report.
  3. Please do not edit the SAP BO Webi report while refreshing the objects in PPT. It usually results into Live Office errors.
  4. Merged cells in webi report don’t work correctly in LiveOffice Power Point. Hence design the report structure accordingly.

As a long time Webi user, and provider of maps integrations, I have always wished there were a proper SDK for integrating custom visualizations in Webi. My first exploration was through Xcelsius which I soon hope to release as a freeware component called "SAP Dashboard Viewer."

Now, I am thrilled that I can offer to the BusinessObjects ecosystem a new premium extension for Webi.


Full Disclosure


My goal is to continue pushing extension points for Webi and show designers / developers what is possible. Why? The more users who express interested and become reliant custom extensions, the better the SDK will get. The beauty of Webi Extension Points is that you only need JavaScript development skills and some patience.


This particular CMaps Analytics solution is not freeware, and for a good reason. This extension includes a supported Google Maps license which is required for any Google Maps integration, our premium maps JavaScript API and cloud services, with support for the extension.


My Approach

With that said, I had two goals to consider when creating a maps extension for Webi:


1. Ensure that someone with skills to create a Webi report, could just as easily enable a map.

2. Provide full support for all of the map visualizations offered through CMaps Analytics API.. We allude to Google Maps because it provides the base layers, but the Javascript API that powers this map is actually CMaps Analytics JS API, which provides hundreds of extra functions needed for Business Apps and analytics.

Here is another article I posted on Linked-In that highlights some of the interesting business cases


Here is the process for building a simple map in BI4 SP04 for the every day Webi Designer.




What's Next

In the next couple of weeks, we are pulling together all all of the lessons learned developing custom extensions. Webi Extension points is a great step forward but it is not perfect, so my hope is that as customer's reliance grow on this technology we can see new exciting ways for interacting with Webi.

Want to get the Extension

We do have the extension available as a test drive for BI4.1, though you will need to check for service pack availability. I would love to hear your feedback first hand so don't hesitate to contact me direct. CMaps Analytics for Webi

Hello Everyone,


I hope you all are familiar with the BW Manual prompt entry feature introduced with the release of BI 4.1 SP 5. If not, please go through my blogs written earlier, explaining the functionality and the steps to enable it.

BW Manual prompt entry functionality is introduced in Web Intelligence

How to enable multi value option in Web Intelligence for Selection option variables coming from BW

I am writing this blog post to clarify few confusions around this new functionality that has been brought to my attention by few users who tried using this functionality.

In order to explain the scenario more precisely, I created a Web Intelligence report before adding the switch: 


in registry (for webi rich client) or in the Adaptive Processing Server (APS).

In the below screenshot, you can see that a selection option variable defined in Bex showed up as a range with “Start Value”  &  “End Value”.





On refreshing the report, notice that Country “Aruba” shows up as the start and end value entered, acted as a range (Argentina – Australia), instead of individual prompt selections.



Later we added the switch to the registry and the APS.  The screenshot below was taken after the switch was implemented and the report refreshed.


Notice the prompt. It has changed to a multivalue prompt with 2 single values instead of a range as previously designed.



Here the report has completed, and Aruba has disappeared from the result set. If an end user is unaware of this change, it will result in incomplete data being returned as the values entered now are individual prompt selections and does not act as a range any more.  (Aruba is missing)




End users can encounter this change in data during migration (migrating to an environment with switch enabled) or if the switch is added to an existing environment with SP5 or above.



One workaround is to define the variable as “Interval” (as shown below) in the back end BEx instead of a selection option variable to ensure that the prompt still shows up as a range even after adding the switch.


While the workaround is viable, it doesn’t allow the ability to use the other conditions that are available with the switch (pattern matching e.g: !5, >7 etc).

Hope it helps clarify the confusion around this functionality.



Hi All,


recently I came across a requirement to merge two Queries where the values of one of the merged dims had leading spaces.

Values from Query 1 dim was :


id            value   

"123"     1

"345"     2

"567"     3


and the values from Query 2 was


id               dim1

"   123"      a   

"345"         b

" 567"        c


Simply merging this dimensions will lead to the following values for the merged dim


merged id

"   123"

" 567"





How to get the merged values as





and use the other objects from the Queries like ?


merged id     val     dim_det

"123"           1           a

"345"           2           b

"567"           3           c


Steps :


1 - merge both queries on [id] onto [merged dim],

2 - create a dimension variable [final merged dim] = Trim([merged dim]),

3 - create a detail variable for [dim],  [dim det] = Trim([dim]) whit associated dimension = [final merged dim],

4 - use [final merged dim], [val] and [dim det] on your report.





recently I came across a requirement that was to test if a value was in list where the list was in a variable. The variable, [list] = "123;234;456;1114678;768;999111", I I need to test if the value of a certain dimension , [numero], was in the list [list]. As you know, the InlList operator can be used only with a literal list (that´s it a text, like "123;234;456;1114678;768;999111", not in a variable. Then testing for [numero] InList([test]) will throw an error.

To overcome this situation, one can test for the Pos of [test] in [list], if the result is >0, [numero] is present in [list]. The downside is when [numero] is contained in another value for instance , "111" is not part of the list, but is contained in "1114678". To parcialy overcome this issue, you can test for ";"+[numero] and [numero]+";". So my formula will be :


If( (Pos([list];";"+[numero)>0)or (Pos([list];[numero]+";")>0);"InList";"NotInList")






I would like to share a way of removing all spaces from a Text.

My text is [Text] = "Rogerio Plank Goulart" and I want to see this as "RogerioPlankGoulart".

To do so, Replace all spaces (" ") with null (""), use Replace([Text];" ";"").


You can either prefer to Show each part of the text in a separate line to do so, use Replace([Text];" ";Char(10)). It will show [Text] as










this blog post is about how to get the number and the names of reports in a document.

As this is a Javascript code, it will only work when viewing-editing the document in HTML mode.


The information about the reports can be found in webiViewFrame.DS.arrReports, the number of reports is given by webiViewFrame.DS.arrReports.length and the name of them is given, looping through arrReports

for (i=0;i<webiViewFrame.DS.arrReports.length-1;++i)

{ name = webiViewFrame.DS.arrReports[i].name }


To set the script, drop a blank cell over the report and set it's text to


numberOfReports = webiViewFrame.DS.arrReports.length;

for(i = 0;i<numberOfReports-1;++i)




Set the property of the cell "Read As" to HTML.



I would like to share a way to assign specific colors to a selected data series in a chart. In this sample, I will alter the color of a pie slica. I ´ll use the sample report "Input Controls And Charts" located at Public Folders->Web Intelligence Samples.


The pie chart is this sample report is shown below. pie chart.png


I´ll change the color of the slice Lines = Acessories to red.

To do so, click on the slice , from the menu choose click on the tab Formatting , click on cell and Background color. Choose the color you want, in this case red.




Below s the result of this operation.


final chart.png



Alternatevely, instead of clicking in the slice, you can click of the slice label on the legend.


This approaqch also works on different charts like bar, lines among others.



Hi ,


In WEBI 4.x there is a functionality that autosaves the document that you working on in the ~WebIntelligence folder under My Favorites.

But what if you need to save it overitself, just like you´rte pressing the save button.


Steps :


- Drop a blank cell onto the report;

- Set it´s value to :


        setInterval(function () { self.parent.save();} , n*1000);


where n is the number of seconds to the autosave

- Set the cell´s property "Read As" to HTML.





I would like to show how to avoid timeout , from client side, in a WEBI Doc, through the use of Javascript. This will only work if you´re working with the document in HTML work.

Here are the steps :


- Drop a blank cell over the report;

- Set it´s value to



     <META HTTP-EQUIV="refresh" CONTENT="120">



      < BODY>



- Set the cell property "Read as " to HTML.

- Save the report

The number in red is the interval, in seconds, for the refresh.

How does it work :

The page will do a soft refresh (not refreshing the Doc, but the iframe where the HTML code is, sending to the server a request. So,




It works in both BO 3.1 and BO 4.x

I would like to tell the users the importance of Reset Dimension Parameter in Rank Function.

Recently, I was asked to create a simple rank report that shows the Rank in ascending order.

The rank should be based on the sales value & partners, but specific to the country. for e.g., if there are 10 partners in a country there sales should be ranked independently from 1-10. Other partners in a different country should be given separate ranks.

For this scenario, The Rank function has a reset dimension parameter, that helps us to get to this very easily.

It has below syntax,



=Rank([Total_Sales];Top;([Country Name]))

Top – refers that the rank will applied in ascending order.

[Country Name] – this is reset dimension.

Hope this example helps to understand the importance of Reset Dimension Parameter in Rank Function.

Kindly share your feedback on this.


I am writing a blog on the Main Differences between the HTML query panel (web) and the Java query panel (Advanced) in Web Intelligence. I hope this blog post might help. Request to rate and comment on this blog.


The Java Report Panel has the following that HTML Report Panel does not:


At the query level:



•Object Comparison

•Database Rank (Query Rank)

•Combined Queries (Union, Intersect, Minus)

•Edit and Save SQL, with the HTML Report Panel you can only view.

•Customize the Scope of Analysis

•Purge the data from the micro cube before saving


At the Report level:


•Rank is possible (Workaround for HTML: Use the formula language to add a # rank e.g. =Rank(measure; (dimensions); [TOP|BOTTOM];(reset_dimensions)]))

•Create alerter (in HTML interactive you can view and turn on/off Alerters that have been created by others using the Java report panel). Workaround: Java Report Panel uses variables as input to trigger Alerters.  Interactive View users can edit variables that change what the Alerters display.

•Structure View

•Print directly via a printer driver in stead of converting to PDF first.


The HTML Report Panel has the following features that the Java Report Panel does not:


Left-hand "Context Panel”

•Document and Data Summary

•Document Structure and Filters – Java Report Panel lists filters within the Report Map, but doesn't have the same User Interface

•User prompt input panel enables on report modification of the filters – In Java Report Panel user “refreshes” to change prompts.


•Edit in-place of cells (Java Report Panel uses formula tool bar only)

•Multiple levels of undo/redo (Java Report Panel has one undo)


The best Web Intelligence experience has always required Java in the web browser and BI 4.0 is no exception.

HTML is (web) and Java-based is(Rich Internet Application)

The web version continues to evolve but is always behind its more powerful Java-based relative..

Important :

You can perform numerous actions on documents with InfoView/Interactive without having to actually open Webi and edit the document in the Java Report Panel itself.


You can modify reports using HTML with the Web Viewer in Design mode, but it is equivalent to the Interactive Viewer in XI 3 and not a true (fully functional) report panel.


Here some more differences between Java and dhtml:


In BI 4.0, the following features are currently exclusive to the Java-based Rich Internet Application:

•Query support for BEx and Analysis Views

•Custom Cascading Style Sheets

•Custom number formats

•Conditional formatting

•Many usability features in the Java-based User Interface, including Data View

• Edit or create BEx data provider 

• BI Web Services

• Data Tab

• Create conditional formatting (aka alerters)

• Change Data provider

• Create report on analysis view



Thank You




there are a lot we can acomplish using Javascript from within a WEBI document. But it will only work if your viewwing the document through the HTML client.


For this first blog post, I will show how to set a Document to autorefresh itself each n seconds.


What you have to do is :

- Create a Document and set it to refresh on open;

- Drag a blank cell over the report and set its text to







where n is the number of secons to refresh,


Save the report.

Re-open , right click on the blank cell inserted , choose 'Format Cell' and under 'Read content as' choose HTML.


Save the report again.


That´s it, it will refresh each n seconds without manual intervention.





It works in both BO 3.1 and BO 4.x

Hi All,


In this blog post Getting to know about the Context Operators (IN, ForEach and ForAll). First let me explain on this; IN, ForEach and ForAll these three operators are called Context operators. Do you know, why today i would like to share my knowledge about this topic because context operators mostly used in webi report.


Even you know by using (IN, ForEach and ForAll) operators; you just like Kill Two words with one stone, in other words to solve two problems at one time with a single action.


Have you ever noticed that IN, ForEach and ForAll these three webi functions like poweful keywords which most/ mostly serachable in Google search engine. Also in this blog post i covered all aspects about context operators; when any why required at the time of creating webi report.


I explain on these three operators below using an example:

In context operator - when / why we use?

For to me using In context operator to specifies dimensions explicitly in a context.

Example:- you have a report showing Year and Sales Revenue, but our requiremnent is to add one more column which showing maximum revenue by quarter. also you have the Quarter object in query panel but you do not include this dimension in the report block. Instead, you want to include an additional column to show the maximum revenue by quarter in each year.

Solution:- By Using the In context operator, you can achieve the Max Quarterly Revenue using below formula.

Max ([Sales Revenue] In ([Year];[Quarter])) In ([Year])

Finally Your report looks like this:




ForEach context operator - when and why we use?

For to me using the ForEach operator to add dimensions to a context.

Example:- How To show the maximum revenue for each Quarter in a report which having the Quarter dimension in query panel but does not include it in the block:

Solution:- Using the ForEach context operator, you can achieve the same result with using below formula:

Max ([Sales Revenue] ForEach ([Quarter])) In ([Year])

How does work/ Above formula explanation:- You know Year dimension is the default input context in the block. So, by using the ForEach operator, you add the Quarter dimension to the context, by giving an input context of ([Year];[Quarter]).

Finally Your report looks like this:



ForAll context operator - when and why we use?


For to me using the ForAll context operator to remove dimensions from a context.


Example:- You have a report showing Year, Quarter and Sales Revenue and you want to add a column that shows the Yearly total revenue.


Solution:- Using the ForAll context operator, you can achieve the same result with using below formula:


Sum([Sales Revenue] ForAll ([Quarter]))


How does work/ Above formula explanation:- By default you have input context (Year; Quarter), for total revenue by year the input context needs to be (Year); Therefore, you can remove Quarter from the input context by specifying ForAll ([Quarter]) in the formula, which looks like above.


Note:- You can also achieve the same result by using the the In operator; in this case the formula is below:


Sum([Sales Revenue] In ([Year]))


Finally Your report looks like this:




I hope you enjoyed lots and learned something new while reading this document.





Filter Blog

By author:
By date:
By tag: