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

SAP BO bursting report i.e. schedule one report according security to many users

Everyone use to schedule reports for business users, however, what to do if you have special security profiles for users, for instance, we have "Sales report" and want to schedule it for our users from different cities and they can see only data of their own city.

As usual, we can schedule it several times with condition such as where city = ... But what to do if we have 30 cities and their number constantly grow?

Special for this case SAP BO suggest us use "Bursting" which can be set in CMC.

Let's see step by step manual:

1. Create report










2.Create profiles in CMC. Choose users and data values.
 










2.1 In Properties name our profile













2.2 In Profile Targets choose Universe and object includes data values.

2.3 In Profile Values determine users and data values, which they will receive.


2.4  As a result we may see data values according users.


3 Public report


3.1 Name report


3.2 Choose report for sending



3.3 Choose users marked in profiles (2.3)


3.4 Determine profile on Personalization


3.5 Format of report

 3.6 Method of sending. Please pay attention on “From” & “To”, we have to use the same phrase.


 3.7 Determine recurrence

 3.8 Check sending, by clicking “Run Now”
















That's it.
As a result, every user will get data according his/her security profile.

четверг, 7 ноября 2013 г.

SAP BO Web Intelligence Time difference in seconds between two dates

I got easy task, to calculate time in seconds between two dates. However, SAP BO provide only one function only related to dates - DaysBetween.

There is a example of report:
If you deal with this task, you should do workaround, of course with DatesBetween.
At first for each block we need to define Min and Max:

Min Time=Min([Query 1].[Datetime]) In ([Query 1].[Uniqueid])
Max Time=Max([Query 1].[Datetime]) In ([Query 1].[Uniqueid])

Than create formula and find diff between Max and Min time:

=DaysBetween([Min Time];[Max Time]) * 86400+(ToNumber(FormatDate([Max Time] ;"HH")) * 3600 +ToNumber(Left(FormatDate([Max Time];"mm:ss") ;2)) * 60 + ToNumber(FormatDate([Max Time];"ss"))) - (ToNumber(FormatDate([Min Time];"HH")) * 3600 +ToNumber(Left(FormatDate([Min Time];"mm:ss") ;2)) * 60 + ToNumber(FormatDate([Min Time];"ss")))

There is result: