You are on page 1of 28

BO List of values

Last Updated on Wednesday, 10 October 2012 05:24


Written by Saurav Mitra
A list of values contains the data values associated with an object. These data values can originate from a
corporate database, or a flat file such as a text file or Excel file. List of Values is a powerful feature that
allows users to select from a pick list when setting conditions in a query.
Implementation Steps:
1. Open DESIGNER and Import Universe.
2. Select a class and a specific object by double clicking.
3. Select Properties tab.
4. Give a list name.
5. Click Edit button.
6. Drag the selected object in the condition pane ,give desired operator and type the values manually.
7. Run and Click save and close.
8. Check values by clicking the display button.
9. Save and Export the Universe. When we perform this action a .lov file that gets created in the same
folder where the universe is stored and get exported along with the universe in the repository.
10. Open a Web Intelligence Document and select the exported Universe.
11. Select any object along with the object on which .lov file is created in the Query pane.
12. Select the object having the LOV in the query filter pane , select an operator (in list) and try to
insert values from a list.
13. We will see that the list of values window will just show the values that was previously selected and
saved as a .lov file in the Universe level.
14. Run the query and we will see that only the selected values in the universe level of the object on
which .lov file is created appears in the result with corresponding mapping of other objects
selected in the query pane.
Using Cascading List of Values (LOVs)
Similiarly you can create Cascading List of Values. Cascading List of Values is a Hierarchical LOV selection
method which allows users to select highest level of list first followed by the next hierarchical level when
setting conditions in a query.
1. Open DESIGNER and Import Universe.
2. Select Tools- > List of values - > Create Cascading List of values.
3. Select some objects of same or different classes from the available pane by pressing Ctrl key and
add them to the cascading list of values Panel by clicking the right arrow key. The hierarchies /
priorities can be changed by the up or down arrow key. Allow the user to give some prompt values
by giving a prompt text.
4. Click Generate LOVs.
5. Save and Export the Universe. When we perform this action a .lov file that gets created in the same
folder where the universe is stored and get exported along with the universe in the repository.
6. Open a Web Intelligence Document and select the exported Universe.
7. Select any number of objects along with the objects on which the cascading .lov file is created in
the Query pane.
8. Select the object having the LOV in the query filter pane , select an operator (in list) and try to
insert values from a list.
9. We will see that the objects with a higher hierarchy in the cascading list will first ask for the values
from the list and then only object with the lower hierarchy can be populated with available values.
Conditional Column Hiding in BO 3.1
Webi Report Followup Post
Last Updated on Wednesday, 17 October 2012 03:57
Written by Riddhiman Basu
Since my last post, I have been asked by people about how would I be hiding a column conditionally when
it is not the rightmost column of the table, rather is in the middle.
I will take a similar example as the previous one to illustrate this. However, this time I will base the
condition on an input control rather than a query filter.
Once again, I am using the standard efashion universe. I have developed a report with Store
Name, Lines, Margin and Sales Revenue without any filters in the query panel. The report will look as
below.
Click on the images below to magnify
In addition, I will have created an Input Control on the Lines object as follows:
Now, I want that the Margin column will only be displayed, when the Accessories value is selected in the
Input Control. For all other selections(even All Values), this column will be hidden. To achieve this, the
steps will be:
1. Click on the Margin column and modify the formula for the column(=[Margin] initially) in the function
panel as
=I f ( Repor t Fi l t er ( [ Li nes] ) =" Accessor i es" ; [ Mar gi n] ; [ Sal es r evenue] )
2. This formula will strip the Margin values from its formatting. So now select the column, right click and
choose Format Number. In the Format Type, select Currency as $ as below. Then click ok.
3. Next click on the header of the Margin column and modify the formula for the cell(=NameOf([Margin])
initially) as
=I f ( Repor t Fi l t er ( [ Li nes] ) =" Accessor i es" ; NameOf ( [ Mar gi n] ) ; NameOf ( [ Sal es r evenue] ) )
4. Now click on the Sales Revenue column and modify the formula for the column(=[Sales revenue]
initially) as
=I f ( Repor t Fi l t er ( [ Li nes] ) =" Accessor i es" ; [ Sal es r evenue] ; " hi de" )
5. Now click on its header and modify the formula of the cell(=NameOf([Sales revenue]) initially) as
=I f ( Repor t Fi l t er ( [ Li nes] ) =" Accessor i es" ; NameOf ( [ Sal es r evenue] ) ; " hi de" )
6. Now create an alerter and put the condition as Cell Contents Equal to hide
7. Click on Format and set the font color, background color as colorless and border as none
8. Save the Alerter, click on the Sales Revenue Column and apply this alerter. Similarly apply on its header
9. Now select any other value from the Input Control. The Margin column will be hidden
10. Now select Accessories again. The Margin column will appear
So what I have effectively done is moved the Sales Revenue column left and hidden the originalSales
Revenue column based on the same condition. As a result, the Margin column appears to vanish and
reappear based on Input Control selection
Note: ReportFilter() function is used to capture the selections in an Input Control or Report Filter used in a
Webi Report. The reason I have used this function instead of the actual value, as in the previous case is,
there is an option for selecting All Values. If I had based the logic on values ofLines, the selection of All
values would have looked like
If you are using the condition based on a query filter on Lines, you will be able to use the values in the
formula as in the previous example.
About the Author
Riddhiman Basu is currently employed as a Business Objects developer in a multinational company and
has experience in working on BO XI R2, R3.1 and SAP BO 4.0 versions of Business Objects
If you have any doubt or question on above, please Ask your question here. We will surely help you out!
If you want to learn more about SAP BusinessObjects, visit our SAP BusinessObjects Tutorial page.
What is Derived Table in SAP
BusinessObjects
Last Updated on Friday, 17 February 2012 16:39
Written by Adhir Kirtikar
A Derived Table is a logical table created in Business Objects Universe using an SQL query. A derived table
in a universe is analogous to a view created in database with a SELECT statement.
How to Implement Derived Table
1. Open/ Import a universe.
2. Click Insert - > Derived Tables OR right click on an empty space in the universe canvas and click
derived Tables.
3. Write the SQL statement which is to be used for the derived table in the "Enter SQL Expression"
area. Name the derived table with an appropriate name.
4. If the SQL of the derived table contains any calculation, enter a valid alias for that column. e.g.
SELECT calculated_column AS CAL_COL FROM TABLE
5. Click "Check Syntax". If the SQL gives error, debug it. If the SQL parses correctly, click OK.
6. The Derived Table can be seen in the universe canvas with columns as named in the SQL query.
These columns can be dragged to the "Universe Window" (on left side of the canvas) to create
Objects of the derived table.
7. Link the derived table with the database tables if required using appropriate joins and contexts.
Advantages of derived table:
It can be created using an SQL statement with complex expressions, joins and prompts which are
not possible to create in BO Universe using normal approach.
It acts just like a normal table in the universe and can be used to join with other database tables
and derived tables present in the universe.
Multiple levels of nested derived tables can be created, in which, one derived table is used in
another derived table query.
Since a derived table is based in a universe and is not dependent on any DDL, theres no need for
any interaction from the DBA or ETL team for its creation.
Changing the structure of the derived table is as easy as changing the SQL statement it is made up
of.
Disadvantages of derived table:
Derived tables do not store data and hence every time a report using this table is run, the whole
SQL query is executed. This may cause poor performance of the report.
If the database tables used in the derived tables are huge and the query is complex, it may cause
memory issues on the server.
Since the derived table is a logical table, indexes cannot be used for faster data retrieval.
Points to remember:
Use Derived Tables as a last resort since it slows down the execution of reports.
Use only when an urgent (but temporary) fix is required and ETL implementation of this fix will take
time.
Use only when theres a requirement for a prompt to be embedded in the table structure.
Use only when the BO universe methods are incapable of creating an implementation with complex
joins and calculations.
Top 5 BusinessObjects (BO) Scenario
Based Questions
Last Updated on Monday, 18 June 2012 09:41
Written by Riddhiman Basu
In this tutorial, we will look into some of the fundamental and widely asked scenario based questions in
BusinessObjects (BO) interviews. Let's get started.
Scenario 1:
Suppose in a Universe structure we have tables as shown in the
diagram below. Tables A,B and C are in context ABC and C,E and
F are in context CDE Now if there is a requirement which
requires a j oin between Table E and Table B, we can define a
new context BCDE. But what is the easiest way to implement
this?
Define a shortcut join between tables B and E. To do this, join the tables normally. Then open the join
editor and check the box shortcut join.
The join will show as a dotted line between the two tables. This kind of a join does not create loop and
cannot be placed in any context. The shortcut join between Table B and Table E will only work when
objects from both the tables are selected in the query panel of report.
Scenario 2:
We have obj ects from 3 tables A,B and C in the query panel of a
report. Among them C is a lookup table which holds values with
respect to keys. Table B holds the foreign key to the table C. A
filter condition is applied to Table C in Query Level. The
resulting Query is:
SELECT A. a, B. b
FROM
A, B, C
WHERE A. bf k=B. pk
AND B. cf k=C. pk
AND C. val = XXX
Now, we define Primary key and foreign key relations for Tables
B and C. Suppose the surrogate key corresponding to val XXX is
12. How will the query change after implementing this index
awareness?
The resulting query will be:
SELECT A. a, B. b
FROM
A, B
WHERE A. bf k=B. pk
AND B. cf k=12
The table C will be eliminated from the Query and the foreign key to C in table be will be equated to 12,
the key corresponding to XXX. The join with C will be eliminated.
Scenario 3:
A User named User1 wants a privilege of running a BO Report for
40 mins and retrieving a report with row limit 40,000. However,
in the SQL parameters of the universe, the row limit is set to
10,000 and the execution time limit is set to 10 mins. How can
you give the user the required rights?
Go to Tools - > Manage Security Click on Mange Access Restrictions. Create a new restriction. In the
Controls tab of the restriction, set the row limit to 40,000 and execution time limit to 40 mins.
In the Main Window, apply this restriction to User1
Scenario 4:
In a report we have a table like this:
Di mA Di mB Measur e 1
AA 12 100
BB 34 50
CC 21 40
DD 43 90
EE 45 200
FF 54 75
There is a report filter applied on this block which restricts both
DIM A and DIM B in the table, i.e only select values of DIM A, DIM
B and the corresponding measures from the query are displayed
in the table. Another column needs to be added which will
calculate the average for each row based on the sum of Measure
1 in the table (not all values in report). What would be the
formula?
For this we will require the sum of Measure 1 in the table, which can be achieved only by In Block keyword.
The formula will be
Sum( Measur e 1) / Sum( Measur e 1 I n Bl ock)
Scenario 5:
In the embedded sheet of an Xcelsius dashboard, we have data
like:
Fi el d A Fi el d B Fi el d C Fi el d D
Xxx Tyu 100 98
Xxx Yyy 45 76
Xxx Dev 56 87
Yyy Wes 78 13
Yyy Ri d 200 106
In the dash board, we need a selector on Field A for a chart
which will plot the values of Field C and Field D against all Field
B values against one Field A. How can we achieve that?
This can be achieved using filtered rows. In the Selector Properties, select Insertion Type as filtered rows
and map the Labels by selecting all values of Field A(including the duplicates).
The labels will display unique values and when a particular value is selected, all rows corresponding to the
value of Field A will be selected as output. The chart component needs to be mapped to the output this
selector.
BO Linked Universe
Last Updated on Wednesday, 10 October 2012 05:26
Written by Saurav Mitra
Linked Universes are universes that share the same components such as parameters, classes, objects and
joins. When universes are linked, one plays the role of derived while other the core universe.
Types of Universe
1. Core Universe
Universe to which other universes are linked.
Represents a reusable library of components.
Can be a kernel or master universe depending on the way the core universe components are
used in the derived universe.
2. Derived universe
Contains a link to the core universe
Link allows the universe to share the common components
Universe Approach
1. Kernel Universe Approach
If the linked universe is a kernel universe, then components can be added to the derived
universe.
Any changes made to the kernel universe are automatically reflected in all the derived
universes
2. Master Universe Approach
If the linked universe is a master universe then the derived universe contains all the
components of the core universe.
No new classes and objects are not added to the derived universe but are hidden according
to the user needs.
The components visible in the universe are always a subset of the master universe.
Any changes made to the kernel universe are automatically reflected in all the derived
universes
3. Component Universe Approach
Merging two or more universe into one universe.
Below a new universe is made by merging universe 1 and universe 2.
Advantages of Linked Universe
Reduced development and maintenance time as any changes made to the core universe are
propagated to the derived universe.
Centralize often used components in core universe, and include them in all the new universes.
Facilitate specialization by splitting the responsibility between database administrator for core
universe and specialized universe for more functional universe.
Points to remember-Linked Universe
Linked universes share the same data account.
Linked universe must be in the same repository.
Core universe must be exported and re- imported at least once.
You have the authorization of linking.
Only one level linking is allowed.
The two universe structures must allow joins to be created between a table in one universe to a
table in another universe to avoid Cartesian products.
Contexts must be redetected.
Steps to create a Linked universe
We have two universe say Link_SMS and Link_Voice
Step 1: Link_SMS universe
Step 2: Link_Voice universe
Step 3: Edit>Links>Add Link..>OK
Step 4: After Linking the Core universe components appear dimmed in the derived universe.
Step 5: Save the derived universe and export both the core and the derived universe to the same
repository.
Conditional Column Hiding in BO 3.1
Webi Report
Last Updated on Wednesday, 17 October 2012 03:27
Written by Riddhiman Basu
In several reporting scenarios, BO developers may require to hide columns in a block based on
specific conditions. This article will illustrate an example for doing this.
We will be using the standard efashion universe. We have developed a report with Store Name,
Lines, Quantity Sold and Sales Revenue with a filter Lines=Accessories in Query panel. The report
will look as below.
Click on the images below to magnify

Now, I want that the Sales Revenue column will only be displayed, when the Lines is Accessories.
For all other lines, this column will be hidden. To achieve this, the steps will be:
1. Click on the Sales Revenue column and modify the formula for the column(=[Sales Revenue]
initially) in the function panel as:
=I f ( [ Li nes] =Accessor i es; [ Sal es Revenue] ; hi de)

2. Click on the header of the column and modify its formula as:
=I f ( [ Li nes] =" Accessor i es" ; NameOf ( [ Sal es Revenue] ) ; " hi de" )

3. Now create an alerter and put the condition as Cell Contents Equal to hide

4. Click on Format and set the font, background and the borders as colorless

5. Now refresh the report and change the filter to anything other than Accessories (I have taken
Sweaters). The sales revenue column will no longer be visible

6. Now again refresh the report and put the filter as Accessories, the column will become visible
again

The conditional hiding may be based upon various conditions (like Report Filter, Input Control
based etc) where the formula for the column will change a bit. However the implementation of the
alerter will remain the same.

You might also like