Dynamic visibility in webi

One of the features that webi was lacking for years was the ability to conditionally suppress columns. Especially when compared to Crystal that supported this kind of functionality from the get go, or Xcelsius with its dynamic visibility, webi report designers needing to show or hide columns in tables based on certain conditions were left to use cheesy tricks like setting the column width to 4px (historically, the minimum column width in webi) with white font and white background alert rules. This technique worked “O K” online, but exporting reports to excel revealed the “hidden” data columns and the extra padding could cause some formatting issues.
Well, webi in BO 4.0 has made a big step forward to resolve this issue. Now, any report element can be conditionally set to hide based on a formula, allowing report developers to create different tables for different scenarios.

Consider this simple example, using the e-Fashion universe:
Your reporting requirement is to present e-Fashion stores revenues by State and City, prompting users for a reporting Year. Moreover, in 2004, there were less stores and management wants to break down sales by stores, but only in 2004.
You can start by setting up your query with the needed objects: State, City, Store Name, Sales Revenue and Year. You can make Year a prompt.
Now, you can create two blocks in webi: one with the store name, and one without.

Next, use good old relative positioning to align them along the top right corner of each other.

Finally, go to each report block format options, and specify the appropriate formula to determine when to display or hide it.

And Voila! When users select 2004 as the prompt value, they will get the store names column, for other years it will disappear.

This entry was posted in Web Intelligence and tagged , , . Bookmark the permalink.

16 Responses to Dynamic visibility in webi

  1. Akshay Shastri says:

    This way is good only when you have a constant layouts.
    For example, in your case, you have – State, City, Store Name, Sales Revenue and Year.
    But if lets say its a report being used by some Super Users.
    In such cases, when the user selects prompt value/input control for year 2004, you have the Store Name in the default layout and then he/she starts adding more column to the layout – if, after adding more columns, the user refreshes the report again (since you have to), or selects a different input control with value other than 2004 – since you switch between the blocks, you loose the columns which were added to the block specially created only for 2004.
    So, i’ll agree with others that, while this is one way to achieve dynamic behavior – its application is really limited in practical scenarios.
    I’m yet to come across a solution to hide specific columns dynamically, and if/when we can do that the uses will spot losing any enhancement to the default layout.

  2. Azra F says:

    Hi , I have a webi report that contains columns for years 2016,2017,2018 etc. and under each columns contain calculated figures that are using webi PREVIOUS() function. For e.g. 2018 calculated figure needs 2017 and 2016 figures as well, 2017 calculated figure needs 2016 figure.

    When I pun it in a table, it shows 2016, 2017, 2018 columns. But I just want to show to my user the current year which is 2018. I cannot use filter table (YEAR=2018) since the 2018 figure will be wrong since it needs the 2017 & 2016 figures to be calculated in.

    How can I generate a table that only shows 2018 figure without compromising 2017 & 2016 figures? Is there a way around it?

    Thank you.

  3. Franca says:

    Hello

    I have 15 rows /columns and i want to hide 2 columns ,so one user could see all when he filters on input control and the next user could see 13 when he filters in input control.i followed the same steps as you have above but am unable to to hide my columns.Does it mean that i have lots of rows and columns?Also am not really sure what to set in align relative position for vertical if i select start on a new page or repeat on a new page i loose my second block which one should i set it to? and when i try to lay each page on top of each it stii wont lay on top of it. could you think of what am doing wrong?

  4. Nix says:

    This article is quite misleading.

    All you are doing is hiding one table (block) or another depending on formula set for those blocks.

    Webi still lacks the ability to dynamically hide columns even in 4.1 SP6.

  5. Piyush says:

    Hi David,

    Interesting blog. I have a peculiar scenario where we want to hide break footers which are identical to other break footers. I will illustrate with below example;
    DATA = Group 1 = Group 2
    Interest Income = Interest Income= Other Income
    Rental Income =Other Income =Other Income
    Salary Income =Direct Income =Direct Income
    Bonus Income =Direct Income =Direct Income
    Scrap sale =Other Income =Other Income
    ….
    ….
    Fee expenses =Direct Expenses =Direct Expenses
    Car Rental =Direct Expenses =Direct Expenses
    Travel Exp =Direct Expenses =Direct Expenses
    ….

    DATA Group 1 Group 2
    Interest Income Interest Income Other Income
    Rental Income Other Income Other DATA Group 1 Group 2
    Interest Income Interest Income Other Income
    Rental Income Other Income Other Income
    Salary Income Direct Income Direct Income
    Bonus Income Direct Income Direct Income
    Scrap sale Other Income Other Income
    ….
    ….
    Fee expenses Direct Expenses Direct Expenses
    Car Rental Direct Expenses Direct Expenses
    Travel Exp Direct Expenses Direct Expenses
    ….

    Depreciation on Computers Depreciation Total Depreciation
    Depreciation on Vehicles Depreciation Total Depreciation
    Depreciation on eqpmt Depreciation Total Depreciation

    Salary Income Direct Income Direct Income
    Bonus Income Direct Income Direct Income
    Scrap sale Other Income Other Income
    ….
    ….
    Fee expenses Direct Expenses Direct Expenses
    Car Rental Direct Expenses Direct Expenses
    Travel Exp Direct Expenses Direct Expenses
    ….

    Depreciation on Computers =Depreciation =Total Depreciation
    Depreciation on Vehicles =Depreciation =Total Depreciation
    Depreciation on eqpmt =Depreciation =Total Depreciation

    Out put required is ;

    Salary Income
    Bonus Income
    Direct Income
    Interest Income
    Rental Income
    Scrap Sale
    Other Income
    Total Income
    Fee Expenses
    Car Rental
    Travel Expenses
    Direct Expenses
    Depreciation on Computers
    Depreciation on Vehicles
    Depreciation on eqpmt
    Total Depreciation

    Hope someone can help me with this.

    Thanks

  6. Vamsee says:

    This is Really a Very Good Post. Very Helpful.Thank You so much for sharing .

  7. Rob Ensinger says:

    Hi Ron.
    I have a business requirement that is probably best addressed by hiding whole reports (in a muli-report Webi document). is there any capability to apply this at an individual report level?

    • Ron Keler says:

      Hi Rob, there is no way to hide a report tab in webi without programming. You can hide all the blocks in the report tab, but not the actual tab. For highly flexible layout requirement, i would look to leverage crystal where you can truely have complete control over as many reports sections as you like through conditional suppression.

  8. Randy says:

    Hi David,
    Thanks for the example to help us visualize this workaround.
    From your Example it is pretty straight-forward to hide/show tables based on 1 or 2 additional possible scenarios. But is there a better/more efficient way if the situation involves a lot more possibilities? My situation currently involves displaying potentially 20-30 more independent columns driven by what different flags on DB. Depending on the flag, users would want to see column A,B,C,D.. or A,C,D.. or A,F,G..

    Thanks a lot for your suggestions
    randy

    • Ron Keler says:

      Based on such a requirement, i would suggest looking at using Crystal. Using conditional suppression on fields or sections in Crystal might be a better way to go when dealing with such a dynamic layout requirement in a report.

  9. Anil says:

    Hi David,

    Thanks a lot for ur example. Its really cool.

    Anil.

  10. Typer85 says:

    Hmm … you can already do this in Web Intelligence 3.1 by applying a block level filter.

Comments are closed.