Duplication of Amounts in report based on One-many joins

Sorry for the long description but I think it's better to be explicit. This is a very generic problem though with the design of BO. We have BO /Webi 6.5. I support a reporting system delivered by a third party, and need to fix issues with the reports. I am free to customise the views, the Universe and the reports. The most frequent problem I am faced with, is that of duplication of figures in report columns derived from 'measure' objects.    For eg:
A report needs to display Fixed Asset Capital Cost and Depreciation over period from-to. In a simplified form, the views and universe design are as following:
Two tables(views):
1. Fixed Asset:
Asset Number,
Asset Description,
Acquisition Date,
Retire Date,
Capital Cost ($)
The capital cost (acqusition cost) does not change
2. Fixed Asset Depreciation:
Asset Number,
Period Number,
Period Depreciation ($)
The Period Depreciation is a value that is deducted from the asset's capital value, month after month, until the asset is fully depreciated.
The two tables join on Asset Number. There is a 1 to N cardinality from table 1 to table 2, as well as outer join because not all Fixed Assets will have depreciation recorded.
As assets come and go, when the report is run for period from/to, not all assets have depreciation records for each period in range.
Report prompts are: Period Number From  & Period Number To.
The report needs to display Grand Totals for:
Total Capital Costs from all assets that were on books in period from/to
Total depreciation period from/to
Simplified Report Format:
Reporting period From/To
Asset Number | Description               | Capital Cost  | Depreciation
nnnnnnnnnn  |   xxxxxxx                  |   99999999   |  99999999
========================================================
Grand Totals: Count Asset: 99999    |   99999999   |  99999999
Universe Objects for Capital Cost and Period Depreciation are defined as Measures.
I have defined a second object in the Universe for Capital Cost as a Dimension, [Capital Cost dim],  which allows to report correct Capital Cost value against the fixed asset item in the detail row of the deport. 
In the report Grand Total I need to display sum([Capital Cost dim]). The problem I have is that this Grand Total includes duplication of amounts for Capital Cost, when reported for Perid From <> Period To, and where more than one period depreciation is recorded for the asset.
I realise the reason for the problem is in the joining of the two tables as a 1-N and so the Capital Cost is duplicated. I was not able to find a work around. In other reporting tools I could solve the problem in the report design, by naming the break variable used to report Capital Cost against the asset, and then summing up from that variable to obtain the Grand Total. In BO & Webi this does not seem to be available, the variable definitions for sum([object]) are global and appear to work the same on all breaking levels up to grand total.
Your help is much appreciated.
Edited by: Calator on Jun 2, 2010 8:18 AM

Two ways to over come this situation,
1. Create two data providers. One for the Depreciation and the second on for Fixed cost.
In the report merge asset Number and have the measure objects do the magic for you.
2. Kind of complex, but worth trying. This works in the table column, Try and see if it works in the footer of the table
Create a varible for the table column.
Asset# count=Count([(Merged)Asset Number])
Actual value=Sum(If([Asset# count]>1; ([Fixed Cost]/[Asset# count]);[Fixed Cost]))-Sum([Depreciation])

Similar Messages

  • How to create multi-reports based on one user parameter - URGENT!

    Hi, can any one help me? I want to create multi-reports at one time and each of the reports should be generated based on a parameter :subid. The db schema is like this:
    table projects(sub_id, project_id, value, builder_code)
    The main query is "select builder_code, sum(value) from projects group by builder_code where sub_id = :subid".
    The subid will be from the same table: select distinct sub_id from projects.
    What i hope to do is to create each report for each sub_id (subscription id) one by one.
    Thanks a lot.

    Hi Sean,
    Yes, bursting was introduced in Oracle9i Reports. For 6i, the only option may be to write a utility, which keeps submitting the same command to run the report, but every time with a new subscription ID. The query inside the report will be the same as you suggested in your first post:
    select builder_code, sum(value) from projects group by builder_code where sub_id = :subid
    You utility will have to fetch all the subid's from the table, and keep submitting the report request with each subid (the report requests with different subid's can be either submitted one by one, or all at the same time).
    Navneet.

  • Performance of a Report Based On VirtualProvider

    Dear BW experts,
    We have created a new BEx 3.x report, which contains about 6 queries, and 2 pre queries.
    The report runs very slowly, the upload time is about 40 seconds.
    The report itself contains one tab with 11 tables.
    The MultiProvider that the queries are based on is a virtual InfoCube, so we can't use aggregates.
    Could someone advice us how to optimize the performance of the report?
    Thanks you in advance.
    Best Regards,
    Inbal.

    Hi,
    Query variables are not passed only to the virtual provider by default, i.e enter dataset of the extractor is pulled the data manager and then it is filtered out which could the issue for the long runtimes.
    If the datasource of the virtual provider has selections then we could passed those from the query to the datasource while query execution at the inverse start routine and reduce the amount of data actual pulled by the virtual provider and hence improve the performance of the query.
    Below is the link to the sap documentation on inverse routine.
    http://help.sap.com/saphelp_erp60_sp/helpdata/en/45/f5af4a4db53482e10000000a1553f6/content.htm
    Thanks,
    Arun

  • Bold a single row in a Report based on SQL Query

    Should be easy? So, how do I bold a single row in a report based on SQL query without creating a new template or writing Java for the page? What is the Tabular Form Element "Element Attributes" field for? Or what am I supposed to put in there to make it do anything?

    One way to do this is to add a hidden column to your report which contains the formatting value, for example:
    select empno
    , ename
    , sal
    , decode(empno,1,'font-weight:bold','font-weight:normal') style
    from emp
    Hide the STYLE column.
    Then you can use this column for each column in Column Formatting > HTML expression in this way:
    <span style="#STYLE#">#SAL#</span>
    Unfortunately you have to do this for each colum you want to appear bold.
    good luck,
    Dirk Dral

  • Report based on Procedure

    Hi All,
    I have a discoverer report based on a function, function is executed and insert the Data into Global Temporary table. When I try to execute the Function in one Discoverer TAB and Display the Data by SELECTING FROM Global Temporary table in another Discoverer TAB, Data is displayed but when I try to execute the function from same Discoverer TAB and try to select the data, it displayes no rows.
    Please let me know how to accomplish this in one discoverer sheet instead of TWOS..
    Thanks

    Hi All,
    I have a discoverer report based on a function, function is executed and insert the Data into Global Temporary table. When I try to execute the Function in one Discoverer TAB and Display the Data by SELECTING FROM Global Temporary table in another Discoverer TAB, Data is displayed but when I try to execute the function from same Discoverer TAB and try to select the data, it displayes no rows.
    Please let me know how to accomplish this in one discoverer sheet instead of TWOS..
    Thanks

  • Web Analysis reports based on Planning application

    All,
    I have migrated planning application from dev to prod using LCM, planning version 11.1.1.2. everything has been migrated and working fine.
    Web Analysis reports, and Database connections are also migrated from DEV to PROD.
    User has uploaded some PLAN data for FY10 through smartview on PROD server, but unable to see the data using Database connection migrated from DEVL but he can see the data when he creates new database connection on PROD.
    both database connections are from same database but he cannot see any new data uploaded through smartview with old database connection and he have tons of reports based on old database connection.
    can I change database connection for old reports with new database connection or do I need to fix something on my planning side.
    Please provide some suggestions. I can give more info if required.
    Thanks
    Ravi S

    Hi,
    LCM will have created xml exports with the database connection information in them.
    If you open one of the xml database connection exports you will see something like
    <server-name>localhost</server-name>
    <application-name>PLANSAMP</application-name>
    <database-name>Consol</database-name>
    You would need to update the information such as the servername in the files then import them in again using LCM.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • WebI report based on BEx query in Live Office document

    Hi
    We have a BEx query in BW that has one input ready variable (period). Then we have created a WebI report based on this BEx query (the WebI report itself does not have any prompts). When we run the WebI report we get asked to enter a value in the BEx variable (remember: this is not a WebI prompt). Until this stage everything works fine. Then we have created a Live Office document and added the WebI report. When we refresh the Live Office document, the BEX variable is not shown. The data that is retrieved is from the last time the WebI report run. The refresh option is set to u201COn demand: From the databaseu201D.
    Is there a way to get the BEx variables to be shown when refreshing the Live Office document? Remember, we do not use WebI prompts.
    We use BW 7.3 and BO BI 4.0.
    Kind regards
    Erik

    Hi,
    Unfortunately, this feature has not been developped the BICS connectiviy. It is only available for manda
    tory prompts based on universe. Others have noted the same problem, so there is an enhancement request for the feature to be available using BICS connection in the "Ideas Place".
    Use the link to vote for the idea, more votes gives a better chance that this will be picked up for development.
    [LifeOffice idea|https://cw.sdn.sap.com/cw/ideas/4094]
    Thanks,
    Marianne

  • How to filter a report based on count?

    Here is my scenario: We would like to report activities on a server if there are multiple date in a month. Here is an example:
    Server Date Activity
    Server1 7/1/09 Hardware maintenance
    Server2 7/1/09 Hardware maintenance
    Server2 7/14/09 Software patching
    Server2 7/14/09 Server reboot
    Server3 7/5/09 Hardware maintenance
    Server3 7/5/09 Server reboot
    The report will show the following
    Server2 7/1/09 Hardware maintenance
    Server2 7/14/09 Software patching
    Server2 7/14/09 Server reboot
    Server1 and Server3 will not show up since there is only one date in July (even though there are two activities for Server3).
    I thought of using a report as a filter to a second report. In the first report, find a way to determine which server to report on. But how would I finter the 1st report based on count as the logic stated above?

    Hi Max
    Our requirement is to see all the activities for a server in a month ONLY IF there are activities on DIFFERENT dates. So using my example, server2 has activties on 7/1 and 7/14. Then we want to see all the activities for server2 in that month. Server3 has two activities but both activities are on the same date. So we don't want to see server3.
    Counting by server will not work because that will include server3 in my example.
    What I really want is to be able to count unique occurrences of dates per server in a month. And if this count is > 1, then this server will be in the report.
    I used a pivot table to count the unique occurrences of dates by server by month. So using my example, I have this result:
    Server1-July: 1
    Server2-July: 2
    Server3-July 1
    What I really want (conceptually) is to be able to filter this pivot table by the matrix column which is the count. I just couldn't figure out how to do that :). Then I thought I could use this report (with pivot table result) as a filter into another report.
    Hope you have some idea....:)
    Thanks

  • Data Selection for report based upon a 'Prompt Value'

    I want to report information in my report based upon a 'user input prompt value'
    for example:
    'Enter Shareholder Selection - A-Active, I-Inactive, B-Both Active and Inactive'
    if the user enters 'A', the report selects only active shareholders
    if the user enters 'I', the report selects only inactive shareholders
    if the user enters 'B' the report selects all shareholders, active and inactive
    the field in the database that this based upon is their total share value.
    if this field is greater than zero (>0) they are considerd 'active'
    if this field is equal to zero (=0) they are considered 'inactive'.
    I have tried creating some type of filter,  but am not having any luck. 
    I saw a few examples within the forums that I have tried without any luck....unfortunately most of the examples I've seen are base one only two choices.
    I'm sure I need to create some type of 'independant varible' but am not sure how to do that either.
    Any suggestions would be appreciated.
    Thanks.

    Hi Daryl,
    I Tried this unsuccessfully in DESKI . We can't Eliminate Rows having Empty Measure Values or Measure with 0 as values using Table Level Filter as FIlter can't FIlter rows based on Prompt value selection dynamically. Filters filter rows at a time and not based on 3 condition as Active, Inactive and Both. thus filters are of no use.
    I Tried this in WEBI, and it is working perfectly you donu2019t have to create any Object in Universe, you can do it using function UserResponse() at report level.
    Hence if you are comfortable using WEBI for Generating this report then Follow the steps.
    1. Create Report With Name and Shares Object. It will display all Shareholder Names and No.of shares they hold.
    2. Use Status Object in Query filter, use condition as u201CEqual Tou201D and Select prompt. It  contains Active, Inactive and Both as values.
    3. Report will Display all Shareholder names and No. of  shares  like 45, 789, 0, 4562 where 0 is inactive Shareholder and all other are active shareholder.
    4. Create Variable using Formula.
    =If(UserResponse("Enter Status:")="Active" And [Shares]>0;[Shares];If(UserResponse("Enter Status:")="Inactive" And [Shares]<=0;[Shares];If(UserResponse("Enter Status:")="Both";[Shares])))
    5. Remove Shares Object from the report and Put Variable created with Names of Shareholders.
    6. Select Table-> Properties-> Display-> Uncheck the Option u201CShow Rows with Empty Measure Valuesu201D
    7. Report will display Value correctly as per your Prompt value selection.
    I Hope this Helpsu2026
    Thanksu2026
    Pratik

  • Is there a way to hide some reports based on the selected values in prompt.

    Hi Experts,
    Is there a way to hide some reports based on the selected values in prompt.
    For ex. if a year is selected in the prompt then the report should display year wise report.
    If a year and half year both are selected in the drop down from prompt section then 2 reports should come.. One for year wise and another for half year wise.Kindly look into this.
    Regards
    Ashish

    Hi,
    Use presentation values in prompts for year,half,qtr and month.Example- For year-y is presentation variable in the same way for halfyear-h,qtr-q and month-m.
    create four intermediate reports.Example-Report r1 with only year column,r2 with only halfyear column,r3 with qtr column and r4 with month column.
    Make column in each report(r1,r2,r3,r4) is equal to their presentation variables(y,h,q,m).
    Use four sections.
    Section1-Place report that should come when only year.
    section2-Place report that should come for year and halfyear.
    Section3-Place report that should come for year,halfyear and qtr.
    Section4-Place report that should come for year,halfyear,qtr and month.
    Apply guided navigation for each section selecting guided navigation-
    For section1-
    properties->Guided navigation->check this Reference Source Request(Yes)->select report r1(year)->check this Show Section(if request returns row)
    In the same way do for remaining section2(select r2),section3(select r3) and section4(select r4)
    Thanks,
    Srikanth
    http://bintelligencegroup.wordpress.com/

  • How to suppress the report based on outer dimension in nested report

    Hi Experts,
    We have a report with nesting of two dimensions in rows. They are Program dimension and Account Dimension.
    We need to supress the report based on the program dimension members. i.e whenever there are no values against all the accounts for a particular program that particular program should get supressed.
    In the screenshot attached I am looking to supress the rows 37,38 and 39 as the data against this program is empty.
    However I dont want to supress the rows 31 and 33 as there is a capital data against this program in row number 32. So we have to supress the rows based on absence of data at program level.
    We are using SP14 on BPC 10.
    I remember that such functionality could be acheived in BPC 7.5 by flagging the required dimension to have suppress in Expansion Range. So I guess, similar functionality would be there in BPC 10 as well.
    I have evaluated the option of VBA macro to hide the required rows, but was wondering if we can achieve the same using EPM functionality as we used to do in BPC7.5.
    Thanks in advance for your suggestions!!
    Regards,
    Shiva

    Hi Shiva,
    First you have to check the option Keep Blocks:
    This option will show the whole block even if only one line contain some not zero/empty cells in the row.
    Second, when you select option Filter on All Columns/Rows you have to select OR as operator between columns:
    In this case the test for >0 (or for <0) will be applied to each column and the result will be OR'ed with other columns. True will be even if one column contains not zero and not empty cell.
    You logic to check individual column require to hardcode the members - not good!
    Vadim
    P.S. If you select AND for Filter on All Columns/Rows - then only lines with all cells with non zero / non empty will be shown as in your example!

  • How to show the columns dynamically in OBIEE report based on the selection?

    Hi,
    I have a requirement where the columns should be dynamically shown in report based on what we select in propmt page.
    I'm creating a report in OBIEE where i want to give an option to the end user to select the columns whichever he wants to see in the report.
    For example I have the following columns in the report already:
    Customer Name,
    Customer Number,
    Bank Account,
    Address
    I want to give an option to the user to select 'Customer Mail ID' dynamically and see the column to be displyed in the report along with the existing columns.
    Through 'Column Selector' user can select a single column at a time, but if he want to select more than one column, how can we do this ?
    Please help me out in resolving this issue.
    Thanks,
    Chaithanya.

    Hi Chaithanya,
    there's not a straight solution for this. You can create different analysis containing different number of columns and then directing the user to this analysis using Action Links or you can also use View Selector to switch from one view (analysis) to the other. But it's not going to be very flexible nor dynamic.
    J.

  • How to secure access of Report based on a condition

    Hello Experts,
    My project requirement is to secure BW Reports based on a condition. For e.g a user should be authorized to access the Report if:
    1. He is the WBS Manager of the selected WBS Element
    OR
    2. If he is authorized to access the Profit center Hierarchy Node which is the parent of the selected WBS Element.
    I think this may be achieved by using a Customer exit in the Analysis authorization but i don't know how.
    Do you have any idea, whether it is possible to achieve in BI7 Security Model? Any help will be highly appreciated.
    Thanks
    Rajat

    Hi Tomer,
    There will be a selection variable for WBS in all BW reports. If the user selects a particular WBS Element then he can only see the result of the report if he fulfill EITHER of the following conditions:
    1. If he is the WBS Manager of the selected WBS Element
    OR
    2. If he is authorized to access the Profit center Hierarchy Node which is the parent of the selected WBS Element.
    WBS managers will keep on changing so it is not possible to maintain the users in one role.
    Secondly, according to the second condition, even if the user is not WBS Manager but he is authorized to access Profit center Hierarchy Node, which is the parent of the selected WBS Element, he should view the report.
    Please let me know if don't understand the question.
    Thanks
    Rajat

  • Can't get around this error after adding second dataset...A scope is required for all aggregates used outside of a data region unless the report contains exactly one dataset

    I added a dataset to an existing report and broke an aggregation.  In the old (i.e. single dataset) report, this expression below worked fine.  I wanted to get a distinct count of the vst_ext_id field when my educated field was like "VTE1*"
    = CountDistinct(IIF(Fields!educated.Value like "VTE1*", Fields!vst_ext_id.Value, Nothing))
    After adding a new dataset, this no longer works and I get the error " A scope is required for all aggregates used outside of a data region unless the report contains exactly one dataset".  Having done some research online, I found that I
    needed to specify my dataset explicitly and I thought this new expression might work, but still no success...
    = CountDistinct(IIF(Fields!educated.Value,"DataSet1" like "VTE12*", Fields!vst_ext_id.Value,"DataSet1", Nothing))
    Am I missing something?  Based on online responses, this explicit dataset naming convention seems to help most people, but it isn't working for me. 
    Thanks in advance!
    Brian

    I found the answer.  Apparently, my expression syntax was off.  This expression does the trick...
    = CountDistinct(IIF(Fields!educated.Value like "VTE12*", Fields!vst_ext_id.Value,Nothing),"DataSet1")
    I just happened upon this particular syntax searching online.  I was trying to specify the dataset name after each .value, but I never got that to work.   This is the only time I have found this particular syntax online. 

  • Report based on particular workflow

    Hi all.
    We made a custom workflow for t code fv60. It has got various levels of approvals and conditions. Now the requirement is to develop a report based on this workflow - similar to swi1. but our purpose of the report is to show various parked and published FI documents and the various users in whose inboxes these document mails are kept in varios approvaql stages. E. G. If today a document is parked by user abc and is approved at first level by user def and now that document is in user ghi's inbox  as a workitem , waiting his approval, the report should show all the users and the statuses of document at each stage.
    Is it possible?.
    if so please give some sample code or example on how to build the report.
    Thanks
    Ribhu

    Hi,
    Yes, it is possible but it will be specific to your workflow only and as Kjetil says making a very general report like this for any workflow will be tough !!
    However i can suggest the following so that you can start continuing on this
    1. First find out the Workflow Template number used and also list all the major user decision steps Task Numbers ( say approval1 - Task1, approval2 - Task2, approval3 - Task 3) used. Lets call it as {Task List}
    2. Given the from date and to date and type of document ( KR/KG etc..) get all the FI Documents parked/created on these dates.
    3. For each FI Invoice No call SAP_WAPI_WORKITEMS_TO_OBJECT  with proper object type ( should be either FIPP or BKPF) , object key ( company code + doc no + fiscal year), fill in the Task Filter with your Task List}
       a. The Table parameter WORKLIST will contain information about the workitems related to your user decision items, loop through them and if completed find the actual agent else find the list of recipients using SAP_WAPI_WORKITEM_RECIPIENTS, you can show this as inprocess.
    4. Infact once you get the WORKLIST you can do whatever you want.
    If you have more than one possible workflows associated with same Invoice , then you have to filter your WORKLIST again based on correct workflow template number using WI_CHCKWI field.
    Good Luck !!
    Regards
    Krishna Mohan

Maybe you are looking for