我们都知道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. 实现 Bootstrap 基本布局

    看到了一篇 20 分钟打造 Bootstrap 站点的文章,内容有点老,重新使用 Bootstrap3 实现一下,将涉及的内容也尽可能详细说明. 1. 创建基本的页面 我们先创建一个基本的 HTML ...

  2. 413. Arithmetic Slices

    /**************************Sorry. We do not have enough accepted submissions.*********************** ...

  3. How To Use Proguard in Android APP

    在Android开发完成即将发布给用户使用时,还有最后重要的一步:代码混淆,这时候,Proguard就派上用场了,大家谁也不想辛辛苦苦写的代码太容易被别人反编译过来,而Proguard就是帮我们实现这 ...

  4. python中获取当前日期在当月是第几天

  5. 在ubuntu上搭建开发环境2---Win7、Ubuntu双系统正确删除Ubuntu

    这种删除ubuntu的方式就是针对本博客中搭建双系统的方式:http://www.cnblogs.com/xumenger/p/4459963.html 如果ubuntu不是以wubi方式安装的,那么 ...

  6. Bootstrap 表格 笔记

    Bootstrap 表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. < ...

  7. python装饰器入门

    按别人的教程弄的. 要清楚基于类和基于函数的实现的不同之处. #!/usr/bin/env python # -*- coding: utf-8 -*- ''' class entryExit(obj ...

  8. 如何观察JS的事件队列的执行划分

    也就是说,不同的操作函数,操作符,JS将其放入事件队列是不一样的... 比如: 外部函数和内部函数,就是分两次放入事件循环的尾端的. 比如,多个操作符组成的链式操作,也有可能是放不同的操作批次进入事件 ...

  9. hdu 2393:Higher Math(计算几何,水题)

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. 使用getopt函数对windows命令行程序进行参数解析

    getopt()是libc的标准函数,很多语言中都能找到它的移植版本. // -b -p "c:\input" -o "e:\test\output" bool ...