среда, 25 сентября 2013 г.

SAP BO tips for Interview

Several years ago i fall my interview, after this i took all important definitions and learn them by heart. It was very helpful!

What is the universe?
The business objects universe is the semantic layer that isolates business users from the technical complexities of the databases where their corporate information is stored. For the ease of end user, universes are made up of objects and classes that map to data in the database, using everyday terms that describe their business environment.
Size 1 Mb, max 500 objects.
Does universe store data?
You associate data to universes by mapping to a data source. Data is not stored in the .unv file.
What are the main advantages of a universe?
·       Only the universe designer needs to know how to write SQL and understand the structure of the target database.
·       The interface allows you to create a universe in  an easy-to-use graphical environment.
·       Data is secure. Users can see only the data exposed by the universe. Users can only read data, not edit it.
·       The results are reliable and the universe is relatively easy to maintain.
·       Users can use a simple interface to create reports.
·       All users work with consistent business terminology.
·       Users can analyze data locally.
Describe the connection types and their purposes.
·       Secured: Use this connection to enable your universe to be exported to the Business Objects Enterprise repository.
·       Shared: Use this connection to share your universe across the network with the other designers.
·       Personal: Use this connection if universe is solely for a single user and there is no need to neither share nor publish this universe to the Enterprise system.
What are the types of objects that can be created in a universe? Provide a brief description of each type.
·       Dimensions: These objects relate to the key information being retrieved from the database. The can be date, character, or number type, and may contain a calculation. They are used in queries and condition/filters and can also be used to drill on hierarchies and link between queries.
·       Detail: These objects relate to supportive information and are associated with dimensions. They can be date, character, or number type, and may contain a calculation. They are used in queries and condition/filters but cannot be used to dril on or link on between queries.
·       Measures: These objects are dynamic aggregates and are always a number type, containing functions like Sum, Count, Average, Max, Min. Depending on the other objects in the query, they dynamically aggregate themselves when displayed in the report block.
·       Predefined Condition/ Filter: These objects contain a name, a description and a restriction. They are designed to give the user a choice as to whether to apply a condition filter or not. They can be quite basic, or can contain a complex where clause.
What are the different join types allowed in the universe structure. Provide a short description of each type.
·       Equi: This join works on the principle of the data in the fields that are a joined maych, for example Customer_ID=Customer_ID, therefore returning data from both tables where the data matches.
·       Outer: This join works in the same way as an equi-join, however there may be data in one table but not the other, and the requirements is for the data to be returned regardless. For example, a join between Customer and Sales would be based on Customer_ID, however a customer may still be prospective and not have any records in the sales table, but all customers must be reported on regardless of sales.
·       Complex/Theta: This join works on the Between principle. For example, a sales date may be joined to a begin and also an end date in a table which is date based, for example sales date between begin date and end date.
·       Self-restricting: This join works as a restriction on the table. If there is a field that can be used as a flag on a table, then this join would allow that flag to be referenced every time the table is used in the SQL statement.
·       Self-referencing: A self-referencing join is a join from one column of a table to another column of the same table. This join should not be used as it creates a loop. Ideally,  if this join exists, then the table should be aliased and the appropriate join and cardinality should be assigned.
·       Shortcut: A shortcut join is a join that provides an alternate path between two tables. It improves the performance of a query by not taking into account intermediate tables, and shortening a normally longer join path.
What are the different types of SQL traps that can be found in a schema? How can each of these types be identified? How can each type be resolved in the universe schema?
·       Chasm trap:
Identify – A chasm trap is essentially a many-to-one-to-many relationship and may be seen as a parent table with two child tables, the child tables having the many end of the relationship. If a query is run with a chasm trap, depending on the objects used, either too many or not enough rows (but aggregation may be affected) are produced.
Resolve – Best resolve by using contexts or modify SQL parameters (select for each measure).
·       Fan trap:
Identify – A fan trap is identified as a one-to-many or a one-to-many-to-many relationship. In itself, this isn’t an issue is if there are two fields being used as aggregates and they are at different levels in the path. This can give the same result as a chasm trap.
Resolve – If they can be avoided by using the lowest level of granularity then this is the best practice, however that isn’t always possible. In which case, a combination of aliases and contexts resolves the fan trap and modify SQL parameters (select for each measure).
What are loops and how you would test a measure to make sure the aggregation levels are projected correctly?
Loops are joins between tables that (eventually) come back to the starting point, forming a circle, or loop. Usually the error Incompatible combination of objects alerts you to the fact you may have a loop.
Loops can be resolved by creating aliases and contexts manually. However, depending on the complexity of a universe, this can be a cumbersome task.
Describe how you would test a measure to make sure the aggregation levels are projected correctly.
To test a measure correctly, a minimum of three queries should be created.
1.      The measure on its own.
2.      The measure with two different dimensions, in different queries. Once the table has been projected, remove the dimensions and then add them again using the drag and drop method. This checks the aggregation in the report is correct.
3.      Applying a total to the tables checks (if they are all the same total) the aggregation level from the database.
Explain two drawbacks of using restrictions at the objects level.
1.      Conflicting restrictions in the objects may be confusing if those objects are placed in the query. For example: UK customers, US customers. Effectively you are saying they must be UK and US at the same time, this is a conflict so no data is returned.
2.      Creates a flat level at the end of the class making drilling through the hierarchy difficult.
Describe the use of the @selection function.
The @select function has no benefit to the end user. However, it does have benefit to the designer, as this is how they can reuse code between objects.
@prompt: You can use @prompt to create  an interactive object. Are usefull when you want  to force restriction in the inhered SQL but do not want to present value of the condition. It forces an end user to enter value for a restriction when that object is used in a query.
@where:  they can reuse code between objects.
What is a hierarchy?
A hierarchy is the order of dimensions in a “class” in one-to-many order.
Hierarchies can be default (or natural) and custom and time hierarchis.
(Automatic/Using DB functions/Table based)
Describe what a derived table is and how it is generally used in a universe schema.
A derived table is and how it is generally used:
·       When it is not possible to create a table at the database level, especially if there is a need to link two otherwise un-likeable tables together.
·       To create a table based on a restriction – instead of aliasing tables based on their flag and using self-restricting joints
Describe what index awareness is, and how it is used in a universe schema.
Index awareness is a way of utilizing the indexing in the database to enable queries to be more efficient in the SQL that they generate. It is set up via the object properties.
What are the pros and cons of delegated functionality in a universe-based reporting structure?
Delegated or “smart” measure objects were discussed in the core Universe Design class. The objective is to shift the responsibility for the aggregation to the data source, instead of the universe. This allows for complex and weighted calculations of dimensional subsets, but requires a refresh to the data source in order to display the results in Web Int report.
@Aggregate awareness.
@Aggregate awareness directs query to run against aggregate tables or summary tables, whenever possible.
Using summary table data speed up response time:
·       There are fewer rows to process.
·       Value calculation is not required.
·       Fewer, if any, joints are required.
Aggregate Navigation – tool you use in Univ Designer to set incompatibilities objects and tables in the structure of the universe.
 In BO, universe security can be managed at these levels:
·       Connection credentials and data store.
·       Central Management Server.
·       Universe (restrictions – objects, rows access, query, SQL generation controls and connection controls).
Restriction sets:
·       Connection – you can select an alternative connection for the universe.
·       Query controls – options to limit the size of the result set and query execution time.
·       SQL generation options – options to control the SQL generated for queries.
·       Objects access – you can apply column-level security.
·       Row access – you can define a WHERE clause that restricts access to row and limits the result set returned by a query.
·       Alternative table access – you can replace a table referenced in the universe by another table in database.
Forced restrictions – clause where
Optional restriction – predefine condition
Objects restrictions problem:  Multiple Objects, Hierarchy Problems, Name confusions, Restr conflicts.
The CMS is responsible for authenticating users and groups, and keeping track of the availability of the other BO Enterprise services. It also maintains the BOE system database, which includes information about users, groups, security levels, BOE content, and services. The CMS also maintains a separate audit database of information about user actions and managers the BO repository.
CUID - Component Unique ID
BIAR – Business Intelligence Archive Resource file

SAP BO Web Intelligence Calculation Context

SAP BO 4 on Linux connection to Oracle

If you want to connect SAP BO server to Oracle server you should

1) Install Oracle Instant Client 64x
2) Set Variable $ORACLE_PATH and $TNS_ADMINS ->
modify .bash_profile in home of bo user:

export LANG=en_US.utf8
export LC_ALL=en_US.utf8
export ORACLE_HOME=/usr/lib64/oracle_instant_client64
export TNS_ADMIN=$ORACLE_HOME/network/admin

3)Define Oracle server in file tnsnames.ora (TNS_ADMINS):
QA =
     (ADDRESS = (PROTOCOL = TCP)(HOST = <IP of host>)(PORT = 1521))
   (SID = QA)

The same operation you should do with client in windows

четверг, 19 сентября 2013 г.

SAP BusinessObjects and Teradata Pre-Sale Presentation

SAP BO 4 Java Heap Space WIS 10901 error

We have lots of source such as Mysql, Sql Server or Postgresql. The easiest way to get data - use JDBC connection. But during work you can get error:

(CS) "Unexpected behavior: Java heap space" . (WIS 10901)

Let's see how we could solve it:

Goto the Business Objects installation folder under <.......>/dataAccess/RDBMS/connectionServer
Make a copy of the file cs.cfg
Edit the file cs.cfg
Inside the section <JavaVM> </JavaVM> Add the following lines

<-- For Linux/Solaris/Windows -->

<-- For AIX -->

Save the file
Restart Business Objects Services


Just instal Full Oracle Instant Client 32x

SAP BO 4 Database error: (CS) "Unexpected behavior" . (IES 10901) (WIS 10901)

During the work with Web Intelligence Rich Client I got the error:

Database error: (CS) "Unexpected behavior" . (IES 10901) (WIS 10901)

Of course service.sap.com offered the solution, but as always they didn't help me, but maybe some of you can try it:


ORACLE_BASE and ORACLE_HOME environment variables were not set to the correct 64 bit path.


1.   Set ORACLE_HOME and ORACLE_BASE to the correct paths.

eg. ORACLE_BASE=<Oracle_client_install_folder>/product/11.2.0/client_1/BIN


2.   Reboot the Server machine.

But I solved it in other way - just use full Oracle Client, it's pretty heavy around 1 GB but help you.

среда, 18 сентября 2013 г.

SAP BO 4 Installation on Linux Part2

When you fixed all requirements of SAP BO, you can continue

8. Enter Product Key, if you have no any key, you could download it from service.sap.com temporary key on 3 months.

9.Choose languages

10. Select a user install or a system instal, i choose system instal

11. Select Install Type

12. Select Default (DB2) or Existing DB

13. Select Java Web Application Server

14. Select a version control system for version management

15. Configure Server Intelligent Agent (SIA). In addition, i would like to mention about ports - it's very important use only empty ports, especially if you have several BO servers on one linux machine. Just check it before choosing:

check port #netstat -tulpn | grep 6410

check pid #ps -ef | grep 4992 

16. Enter a port for the CMS

17. Configure CMS Account

18. Configure DB2 Server

19. Configure Tomcat

20. Configure HTTP Listening Port

21. Introscope Integration

                                             START INSTALLATION

вторник, 17 сентября 2013 г.

SAP BO 4 Installation on Linux Part1

If you will get task to instal SAP BusenessObjects on Linux OS and you never work with terminal, the task could seem challenging:)

Lets, try to install SAP BO.

Before installing on Red Hat Linux according SAP BO installation manual, you must ensure all the required libraries are installed. Ensure you have root access, then use the Yum software installation tool to run the following commands:
  • ●  yum install compat-libstdc++-33-3.2.3-69.el6.i686
  • ●  yum install compat-libstdc++-33.i686
  • ●  yum install compat-libstdc++-33-3.x86_64
  • ●  yum install glibc.i686
  • ●  yum install libstdc++.i686
  • ●  yum install libX11-1.3-2.el6.i686 

1. Add user for our bo installation, perform command:   #useradd bo4user , create folder for BO installation #mkdir /data/bo4user and assign it to new user #chown bo4user bo4user
2. Change our user to new one: #sudo -iu bo4user
3. Go to location of SAP BO distributive. (of course we should download it and copy to new folder):
#cd /opt/bo4_distri/DATA_UNITS/BusinessObjectsServer_lnx
4. #./setup.sh
5. Choose Language

6. Specify the Destination Folder, for bo installation:

7. Prerequisite check

And here I got some problems:

7.1  Failed: Operating system patch level (Optional)
        Information: Missing patch: unsupported.linux.release

7.2 Failed: Integrated database - home directory (Optional)
        Information: DB2 requires 755 permissions to be set in the user's
home directory.  Please set the permissions if you wish to install the
integrated DB2 database.
7.3 Failed: Network settings (Critical)
        Information: Running ping failed against localhost,, or
the machine's hostname.  Please configure your machine to allow it to be
contacted in order to proceed.  INS00293
7.4 Important one, but not my case - if you choose DB2 as repository DB you should setup kernel parameters according to DB2 requirements:

7.4.1 Modifying kernel parameters (Linux)* from http://pic.dhe.ibm.com

Starting with Version 9.7 Fix Pack 2, you no longer need to update Linux kernel parameters related to interprocess communication (IPC). For Version 9.7 Fix Pack 1 or earlier, the enforced minimum settings for particular kernel parameters might not be sufficient to run a DB2®database system and you might need to update them before installing a DB2 database product.

Before you begin

You must have root authority to modify kernel parameters.


To update kernel parameters on Red Hat and SUSE Linux:
  1. Run the ipcs -l command to list the current kernel parameter settings.
  2. Analyze the command output to determine whether you have to change kernel settings or not by comparing the current values with the enforced minimum settings for Version 9.7 Fix Pack 2 or later fix packs in Kernel parameter requirements ( Linux ). The following text is an example of the ipcs command output with comments added after // to show what the parameter names are:
       # ipcs -l
       ------ Shared Memory Limits --------
       max number of segments = 4096               // SHMMNI 
       max seg size (kbytes) = 32768               // SHMMAX
       max total shared memory (kbytes) = 8388608  // SHMALL
       min seg size (bytes) = 1
       ------ Semaphore Limits --------
       max number of arrays = 1024                 // SEMMNI
       max semaphores per array = 250              // SEMMSL
       max semaphores system wide = 256000         // SEMMNS
       max ops per semop call = 32                 // SEMOPM
       semaphore max value = 32767
       ------ Messages: Limits --------
       max queues system wide = 1024               // MSGMNI
       max size of message (bytes) = 65536         // MSGMAX
       default max size of queue (bytes) = 65536   // MSGMNB
  3. Modify the kernel parameters that you have to adjust by editing the /etc/sysctl.conf file. If this file does not exist, create it.The following lines are examples of what should be placed into the file:
    #Example for a computer with 16GB of RAM:
    #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
    kernel.sem=250 256000 32 4096
  4. Run sysctl with -p parameter to load in sysctl settings from the default file /etc/sysctl.conf:
       sysctl -p
  5. To have the changes persist after every reboot:
    • (SUSE Linux) Make boot.sysctl active.
    • (Red Hat) The rc.sysinit initialization script reads the /etc/sysctl.conf file automatically.
I will continue in part2 after fixing current issues.

понедельник, 16 сентября 2013 г.

SAP BO 4 Web Intelligence Error Illegal access to the viewer, please use a valid url.

I just restarted my BO server and try to create report in Web Intelligence, but got error:

Illegal access to the viewer, please use a valid url

I begin to surfing in Internet, and find some causes:

License key has expired

Logon to Central management Console.
Click on License Key.
Add a valid License key.
Restart the Server Intelligence Agent.

But it wasn't my case. And soon i got it:)
The problem was in wrong autostart of Webi Services, they were disabled.
After enabling them, it starts works good.

среда, 11 сентября 2013 г.

SAP BO 4 on linux, consuming lot of space, important thing - Core Files!

I can't understand why my bo platform consumes o much place, it was 400 Gb after several months of work. Firstly, I thought that problem was because of huge amount of schedule reports.

But I was wrong.

The problem was in Linux Core Files:

A core file is an image of a process that is created by the operating system when the process terminates unexpectedly. This file can be very useful in determining what went wrong with a process. The production of core files can be enabled by default, depending on the distribution and version of Linux® that you have.
Path: <....>/sap_bobj/enterprise_xi40/linux_x64
Some of files are very heavy - apr. 20 Gb.

The reason of creating this files - Falling of Web Intelligence Processing Server. If I Webi server could use 20 Gb Ram (in CMC you could define thresholds), and huge report consumes more than 20Gb, webi server will restarted, and core file will created. Make sense?:)

It's easy to solve this problem, just switch off this feature in Linux.

Some commands:
ulimit -c
# check the current corefile limit
ulimit -c 0
# turn off corefiles
ulimit -c x
# set the maximum corefile size to x number of 1024-bytes
ulimit -c unlimited
# turn on corefiles with unlimited size
ulimit -n unlimited
# allows an unlimited number of open file descriptors
ulimit -p
# size of pipes
ulimit -s
# maximum native stack size for a process
ulimit -u
# number of user processes
help ulimit
#list of other options