我们都知道Web Intelligence具有高级的分析功能,是一个非常灵活的报表工具。在这篇文章里,我会演示一个使用Webi实现动态选择度量对象的方案。首先解释一下什么是”动态选择度量”:例如我们有多个度量对象,包括销售数量,销售收入,折扣数量,目标销售输入等,用户想动态的选择哪些度量在报表上显示,哪些不显示。这个业务需求的背景是,有些报表的度量太多,比如今年销售金额,去年销售金额,增长额,增长率等等,如果报表显示所有度量,那么报表也许会看起来太臃肿且不方便使用。所以用户想选择性的查看他关注的那几个度量。

通过Webi强大的交互功能,用户可以拖拽维度和设定格式,但对于那些连Excel都不太会的用户,我们需要更简单的交互方式。所以我们创建一个简单的格式化报表,通过简单的交互界面,复选框,来选择你想要看到的维度。下面是报表的的示例,用户通过在左边的面板中选择维度,右面的报表区域中的维度会相应的隐藏或显示:

使用了如下技术来实现以上效果:
1.         Webi交叉表
2.         Webi输入控件(XI 3.1 SP2之后的新功能)
3.         Universe 派生表
通过以下简单的步骤可以完成上面的示例报表:
1.         通过eFashion的连接建立一个简单的universe,添加一个”measure_names”的派生表,SQL语句如下:
select distinct ‘Sales Revenue’ as mname from outlet_lookup
union
select distinct ‘Sales Quantity’ from outlet_lookup
union
select distinct ‘Margin’ from outlet_lookup
2. 基于派生表中唯一的那个字段,创建一个维度对象,universe结构如下所示:

3.使用此universe创建一个webi报表,使用如下对象:State,Measure Name,Margin,Sales Revenue和Sales Quantity。注意universe中的派生表并没有和其他表进行连接,因此此查询将会产生一个笛卡尔积的结果,这正是我们所需要的。
4. 查询结果如下:

5.         创建一个报表变量”Measure Value”定义如下:、
=If([Measure Name]=”Margin”) Then [Margin] ElseIf([Measure Name]=”Sales Quantity”) Then [Sales Quantity] Else [Sales Revenue]
6.         创建一个交叉表,把state对象作为行,Measure Name作为列,并将变量Measure Value放入单元格中。
7.         基于Measure Name创建一个输入控件,并选择复选框作为输入控件类型。

大功告成!现在你可以通过更为直观的界面来选择这些度量的显示,而不再需要拖拽。对于生产环境,可以把派生表换成物理表以提高效率。

【SAP BO】【WEBI】【转】Webi实现动态选择度量的更多相关文章

  1. SAP BO WebI 如何连接webi server folder下面的EXCEL文件作为数据源

    昨天做Webi Report,需要连接一个在Webi Server Folder下面的EXCEL文件作为数据源,然后再去生成相应的报表,找了半天才找到可以连接Webi Server Folder的EX ...

  2. 【BO】SAP BO相关问题汇总贴

    本文将以往写过的关于SAP BO相关问题的帖子汇总了一下,方便寻找 #1 为WEBI报表添加自定义字体font #2 WEBI文件打开时提示Illegal access错误 #3 安装BO服务器时,o ...

  3. php使用post动态选择头像和js事件动态改变头像

    <html> <head> <meta http-equit="Content-type" content="text/html" ...

  4. Java项目集成SAP BO

    SAP BO报表查看需要登录SAP BO系统,为了方便公司希望将BO报表集成到OA系统中,所以参考网上资料加上与SAP BO的顾问咨询整理出一套通过Java来集成SAP BO的功能. SAPBO中的报 ...

  5. ExpandoObject与DynamicObject的使用 RabbitMQ与.net core(一)安装 RabbitMQ与.net core(二)Producer与Exchange ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler) .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

    ExpandoObject与DynamicObject的使用   using ImpromptuInterface; using System; using System.Dynamic; names ...

  6. 【Android】8.2 动态选择和设置主题

    分类:C#.Android.VS2015: 创建日期:2016-02-17 一.简介 除了通过Theme指定主题外,还可以在程序运行时动态指定并应用主题. 二.示例-ch0802ThemeDemo 1 ...

  7. AbstractRoutingDataSource动态选择数据源

    当我们项目变大后,有时候需要多个数据源,接下来我们讲一种能等动态切换数据源的例子. 盗一下图: 单数据源的场景(一般的Web项目工程这样配置进行处理,就已经比较能够满足我们的业务需求) 多数据源多Se ...

  8. PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)

    PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版) 先看流程图: 大概介绍一下: 版本选择使用jenkins 中的 git parameter 插件实现 回滚方式 ...

  9. 【BO】为WEBI报表添加自定义字体font

    本篇主要讲解如何为sap business objects 的web intelligence报表组件新增字体.因为系统默认预设的字体对中文而言实在是太丑了,有的字体特喵的直接把中文变成方框框了! 一 ...

随机推荐

  1. python基础——使用模块

    python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...

  2. Linux定时任务设定

    使用crontab 命令进行设定. 详情可参见:http://blog.csdn.net/xiyuan1999/article/details/8160977. 共有6项构成,前5项为时间:分 时 天 ...

  3. Destination Host Unreachable

    自己的Linux 机器连不上服务器了,ping XXXX的时候报这个错误了 看了一下是因为IP的原因==>进入Linux的图形界面==>System==>Administration ...

  4. 关于HTML5在动画制作工具Animatron的一些问题

    Animatron是国外一款在线HTML5动画制作工具,网址:www.animatron.com 当然,想使用的话,是需要FQ的. 用animatron制作好的动画是可以下载为代码和GIF的,这时候付 ...

  5. spring刚开始学习搭建

    下载的软件包地址: http://repo.springsource.org/libs-release-local/org/springframework/spring 用maven进行快速开始: h ...

  6. mysql 关于列的语句

    查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除 ...

  7. C# virtual override 和 new 的区别

    一直以来我都对 virtual  override 和 new 之间的区别感到疑惑不解. 特别笔试的时候特别容易考到,真的很容易弄错啊,畜生! 光看理论永远记不住,那不如写几行代码就懂了. 首先看看v ...

  8. 【转载】 Pyqt QStackedWidget堆栈窗体

    转载地址: http://blog.csdn.net/a649518776/article/details/6636578 下面用代码实现上面窗口的设计 # -*- coding: utf-8 -*- ...

  9. SQL集合操作符样例(UNION,INTERSECT,EXCEPT)

    由于MYSQL目前只实现了UNION, 所以后面两个就没得玩罗.... SELECT emp_id, assigned_branch_id -> FROM employee -> WHER ...

  10. jQuery函数attr()和prop()的区别

    在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参数和用法也几乎完全相同. 但不得不说的是,这两个函数的用处却并不相同.下面我们来详细介绍这两个函数之间的区别. ...