定义SAP信息块时,系统会让用户选择信息块的类型,一般用到的都是标准类型的信息块,但是还有其他几种类型的信息块也能为最终的查询提供数据。此类信息块本身并不存储数据,而是临时根据一定的逻辑去相关的源系统或BW系统自身的存储中寻找数据,再根据用户指定的逻辑进行运算,并最终将清洗后的数据提供给查询使用,这类信息块称为虚拟信息块或实时信息块。
由于实时信息块的使用范围有限,而且实施起来又相对复杂,因此在项目中并不常见,所以本节主要讲解“基于功能模块”的虚拟信息块。
定义基于功能模块的虚拟信息块时,最为重要的数据处理都是在功能模块中进行的,下面将在功能模块中定义需要的功能模块,如图6-6所示,并在SE37功能函数编辑工具中对功能模块进行编写。
图6-6 虚拟信息块的定义
实际上,除了标准的功能模块需要填写外,还有一些选择选项供开发人员输入,其中最重要的两个参数是“打包RFC”和“SID支持”,因为这两个参数的设置对函数的参数有至关重要的影响。
图6-7 带有功能模块的信息块的属性定义
第一种情况:当勾选“打包RFC”复选框时,系统的参数设置如下:
相关的参数说明如下:
1)INFOCUBE是信息块的技术名称。
2)KEYDATE是查询的运行日期或指定的关键日期,对于主数据的导航属性,需要自行进行代码的编写,逐个处理。
3)RETURN是RFC函数的返回值,必须给函数一个明确的指令,如一个明确的退出指令,否则用户就有可能在Bex前端一直等待程序的结束。
4)SELECTION包含了在前端查询中定义的相关选择条件,其中变量已经被赋予了需要的值,如根据别的变量派生而来的值。该参数的结果为:“EXPRESSION,INFOOBJECT,SIGN,OPTION,LOW,HIGH”。
其中,最重要和最难的是EXPRESSION,因为如果此段逻辑的值是0,则对应的限制条件就是全局限制条件,而若其结果不是0,则限制条件只是对应到一行或一列,又或对应到某个单元格。
例如,在EXPRESSION中有如下内容:
那么,对应到的open SQL应该是如下语句:
CHARACTERISTICS和KEYFIGURES是包含在QUERY中使用到的特性和关键指标的两个表,这两个表有相同的数据结构,即(www.daowen.com)
此处的LENGTH和OFFSET十分重要,因为通过这两个字段的信息可以找到对象在返回表格的哪个位置可以获得。当然,本处的INFOOBJECT不仅指信息块中的基本信息对象,导航属性也被当作信息对象进行处理。
DATA中包含了给查询返回来的数据信息,仅包含CONTINUATION和DATA两个字段,DATA包含250个字符。如果存放数据250个字符不够用,那么需要另起一行进行存储,只有在此时字段CONTINUATION才会被赋值“X”,但是我们需要这样理解,所有尚未结束的行都会被标记“X”,只有最后一行为结束行,该字段才为空。
假设读取的特性如下:
需要读取的关键指标如下:
返回结果表如下:
对象类CL_RSDRV_REMOTE_IPROV_SRV中包含相关服务,这些服务可以用来创建基于BAPI的虚拟信息块,示例代码如下。
第二种情况:不勾选任何复选框,这也是一种常用的设置,此时系统的参数设置如下:
与第一种情况不同的是,由于在这种情况下不需要对外进行数据输出,因此此处函数返回的是BW系统内部使用的结构。同时,在第一种情况下函数只会被调用一次,但是本处函数将被反复调用,并且知道参数E_END_OF_DATA被赋值“RS_TRUE”,因此如果第一种情况无法满足系统性能的要求,则需要考虑使用第二种情况。
第三种情况:当勾选“SID支持”复选框,但是不勾选“打包RFC”复选框时,系统的参数设置如下:
在这种情况下,虽然勾选了“SID支持”复选框,但是这并不意味着我们能够自行定义SID,只是说明系统在返回特性值时,同时也返回了特性的SID。这样的功能在SEM-BCS中显得尤为重要,因为在BCS中存储数据的对象本身并不提供报表功能,我们需要在此基础上建立虚拟信息提供者。这些虚拟信息提供者从实际存储数据对象中读取数据和SID,因此OLAP处理器就不再需要对SID进行额外的解析工作了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。