BW:如何加载和生成自定义的层次结构,在不使用平面文件的SAP业务信息仓库

介绍服务器

一般状况下,报告须要在一个相似树的结构来显示数据。经过启用此特性在SAP BW层次结构。高级数据显示的层次结构的顶层节点。更详细的数据能够向下钻取到的层次结构中的下级节点的可视化。框架

考虑一个例子层次客户联络层次“,用于限定电信呼叫中心接收电话。函数

   

图1:客户联络层次编码

   

加载层次结构的标准机制spa

有几种可能性供货与SAP BW中的数据的层次结构:对象

  • 在SAP BW层次结构能够手工维护,但大或频繁变化的层次结构,这样作固然是耗时。
  • 层次结构能够从源系统中全部类型的自动获取。SAP提供了众多的BI内容的数据源提取标准的SAP数据源系统,为各类行业和模块。这也是不少标准的层次结构的状况下,如利润中心,组织单位... 然而,不少时候的层次结构的数据源系统中的自定义表。SAP不容许自定义的层次结构,以一个通用的数据源中提取。
  • 层次结构,也能够提取使用分段BAPI( usiness 一个 pplication P AGC软件覆盖整个院落)或纯文本文件,能够经过程序自动生成的,而后加载到层次结构中的InfoObject 从外部系统(非SAP) 在此过程的自动化引入的一个问题是,这并不老是容易克服的物理纯平要上传的文件,该文件是应放置在SAP BW服务器。这并不老是可能的几个缘由。
  • 最后的选项加载一个层次是容许装载在SAP BW系统或其余SAP BW系统的数据接口,数据集市。如今的问题是,层次结构(还)没有在SAP BW系统。可是,此选项将被证实是很是有用的,使自定义层次结构提取。

若是你想加载一个标准的SAP层次结构或层次结构的基础上的平面文件,你可使用一个以上的机制来获取数据。然而,当装入非标准的SAP层次或从其余来源的层次结构,你都面临着一个很大的问题。SAP BW 标准层次结构的数据源或基于层次结构的平面文件数据源,并有一件事是确定的,加载任何类型的层次结构只容许须要的数据源的类型层次结构,将数据插入到相应的InfoObject表!因此没有标准化的方法来从源系统中加载自定义的层次结构。接口

咱们怎样才能解决这个问题呢?图片

总之,解决的办法是获取数据到一个数据存储对象(DSO)[1],使肯定的InfoObject有正确的属性[2],加载一个虚拟的层次结构(数据集市接口)[3]和提升本提取,以取代从DSO数据的伪层次结构[4]。此过程将在下面更详细地进行说明。事务

   

图2:解决方案概述element

   

1。DSO的层次数据

第一步是获得的层次结构的数据转换成一个DSO。为此目的,咱们可使用一个事务处理的数据源。构建一个简单的层次结构相结合的节点ID和它的父节点ID是足够的。

   

图3:DSO ZDSOCUST

   

重要的是要注意,咱们不须要一个层次数据源。不管什么样的数据源和类型的提取,SAP容许不一样的程序,以获取的“交易“ 

在这个例子中所用的DSO ZDSOCUST填充用一个简单的平面文件。

联系咱们说明家长联系

1001;商业;

1002;技术支持;

1003;更改合同; 1001

1004;结束合同; 1001

1005,新的合同,1001

(1006);电视; 1002

1007,联系电话; 1002

1008;互联网; 1002

1009;销售1003

1010下出售; 1003

1011;边卖; 1003

1012;结束; 1004

1013年,新的1005

1014数字电视; 1006

1015;模拟电视,1006

1016;手机; 1007

1017固定; 1007

2。层次的InfoObject

图4:的InfoObject客户服务联系咱们

   

使用交易代码RSD1,保持的InfoObject做为信息资源直接更新。

启用后,相应的复选框选择一个应用程序组件。根据上的InfoObject属性,这将容许加载属性,文字和层次结构的数据的特性。

做为信息提供者,将其分配给一个资讯区域的特征标记。的InfoObject将被显示在信息提供者树在数据仓库工做台。

做为出口数据源中启用的特色。这容许提取的的InfoObject数据使用的数据集市接口。

图片5的InfoObject

   

源文档< http://www.element61.be/e/resourc-detail.asp?ResourceId=189

   

   

很明显,你还须要到指定的InfoObject包含层次。具体的设置,如时间依赖性和版本,所产生的影响的表,这将反过来又须要特定编码后数据源中的加强。

   

图片6与层次的InfoObject

   

3。虚拟层次提取

如今的InfoObject是正确的维护和激活,咱们能够创建一个虚拟的层次结构中,咱们将使用后为出发点的数据提取。本手册的过程当中须要作一次(每SAP BW系统中的景观)。使用按钮“ 保持层次结构,以建立虚拟的层次结构。

   

图片7建立一个虚拟的层次结构

   

酮(虚设)节点添加到该层次结构是足以激活的层次结构。添加一个文本节点是最简单的。

图像8使用一个空节点

   

9张图片的虚拟层次结构

   

接下来的步骤是生成的出口数据源。这实际上会产生一个数据集市提取属性(M),文本(T)和层次结构(H),根据的InfoObject设置。“ 数据仓库工做台“(交易代码RSA1),而后右键单击上的InfoObject。在上下文菜单中,选择“ 附加功能“>”生成,出口数据源“。一般获得的技术名称'M','T'或'H'> 8,能够发现应用程序组件被称为“数据集市主数据(DM-IO),以后复制此应用程序组件的数据源区域的数据源数据仓库工做台(记得检查BW系统自己做为源系统,在屏幕的左上方)。若是该特定应用程序组件还没有激活您的BW系统中,能够发现新的数据源的应用程序组件的未分配节点'(NODESNOTCONNECTED的)。

如今,咱们有层次结构的数据源,咱们能够将它链接到咱们的InfoObject层次结构,经过传输规则。层次数据源的还没有使用的SAP NetWeaver 2004s/7.0技术支持,所以,咱们仍然须要使用SAP BW 3.5的数据源和传输规则来创建链接。事实上,咱们链接的InfoObject自己。为了建立传输规则,右键单击层次结构,并使用上下文菜单中去“附加功能”>“建立传输规则”。接下来,咱们须要选择正确的源系统。因为咱们要采用的出口数据源咱们前面建立的,选择你登陆到一个相同的SAP BW系统。会弹出一个列表全部可用的数据源,源系统。选择出口数据源咱们先前建立的。它应该有名称8 <>'H'。传输规则自动生成的,而事实上,他们创建的出口数据源和的InfoObject层次之间的联系。

建立一个新的Infopackage层次结构的数据源,经过右键点击数据源,而后选择“ 建立Infopackage ... “。给“Infopackage一个描述性的名称和刷新“ 可用的层次结构。这将加载在源代码中提供的全部层次结构。咱们只建立了一个虚拟的层次结构,这将是惟一的等级,咱们能够提取。选择这个虚拟的层次和保存Infopackage的。这是明智的重命名的目标层次。

图片10 InfoPackage

4。提取加强

到目前为止,咱们已经创建了一个虚拟的层次,使提取到一个新的层次结构是彻底相同的副本原来的数据流。如今,咱们仍然须要插入的层次结构的数据,目前居住在DSO。这能够经过在一个用户出口,加强所产生的层次结构的数据源。

11张图片的层次数据流

   

像任何其余类型的数据源,能够提升层次数据源。每种类型都有其本身的功能模块,在强化“RSAP0001 -客户服务API 函数调用

  • EXIT_SAPLRSAP_001:交易数据
  • EXIT_SAPLRSAP_002:主数据的属性或文本
  • EXIT_SAPLRSAP_004:等级

,若是提升RSAP0001是还没有处于活动状态在您的系统,它能够简单地被激活,并分配到项目中。

功能模块EXIT_SAPLRSAP_004被称为每次执行的层次结构数据源。它是功能组的一部分该功能模块包含一个包括称为“ ZXRSAU04“。这包括能够提升使用ABAP代码从咱们前面加载的DSO来获取数据。最重要的表在此退出是表C_T_HIENODE的的应该充满层次的实际数据。这表的类型RSAP_T_HIENODE,它是这样定义的结构ROSHIENODE。

图片12结构ROSHIENODE

须要注意的是否是全部的字段,以便成功地创建层次结构。根据不一样的层次结构属性中的InfoObject设置,其余领域,甚至其余表能够成为必需的。

上面的例子中的层次结构是至关直接的,所以,它是足够的填充只有一个选择的字段的表C_T_HIENODE; NODEID,IOBJNM,NODENAME,TLEVEL和PARENTID。

让咱们在这些领域有更详细的了解。的的字段NODEID有被惟一地定义。进行领域IOBJNM应填写的InfoObject名ZCUSTCONT“或值0 HIER_NODE”若是你想加载一个文本节点。领域NODENAME应填写与实际值(的InfoObject值或文本节点的描述)。也可使用复合的InfoObject,但那么咱们就须要到指定的复合价值。试想一下,咱们的InfoObject ZCUSTCONT复合国家。填充该字段NODENAME若是咱们“1003”的值,这个值会被自动分割成国家“BE”和“客户联系”1003“。

下一个字段被称为TLEVEL并包含该节点的层级。若是一个节点的层级是不等于其父母和1的层次结构级别的总和,这将产生一个错误,当加载的层次结构。的层次结构的最上层节点被称为根和多根被容许在一个单一层次。这根节点老是有层次的水平。PARENTID包含的父节点ID。

表1填充C_T_HIENODE

根据您的层次结构特性,其余领域和/或表是必需的。例如,若是你有一个随时间变化的层次结构,的领域DATEFROMDATETO应填补。

现场NODENAME独一无二的,除了,当领域LINK包含值'X'(首都),它能够为一个层次结构节点在层次结构中包括几回在不一样的层次分支。换句话说,一个NODENAME能够有多个父节点。在一份报告中,当使用这些重复的层次结构节点的InfoObject值的关键人物值,将显示屡次的层次。固然,这关键的人物只会考虑一次,结果行!当使用的时间间隔,你也将有填写的表格C_T_HIEINTV。

若是咱们有一个DSO,只包含节点ID和它的父节点ID,咱们有足够的信息来构建咱们的层次结构。可是,咱们须要手工计算的层级。最好的作法是开始与根(S)和它的孩子,而后找到这些儿童和儿童等。须要注意的是每根固然应该单独列出。

让咱们来仔细看看的编码。,包括“ ZXRSAU04“每次都被执行,执行的层次结构数据源,它是推荐的数据源之间做出区分。

这一过程确保您的编码时,不执行其余层次结构的数据源执行。

在ABAP程序作的第一件事是删除虚拟层次的内部表C_T_HIENODE的数据。

如今,咱们能够设置的层次结构描述的“ 客户联系“。

接下来,咱们须要获取数据从DSO到内部表的层次结构。

对于每一个节点,咱们须要找出的层级和它的父节点的ID。确保全部相关领域都充满。正如前面提到的,根据不一样的InfoObject属性。最简单的方法是自顶向下和从根(S)。根是一个没有父节点。层次结构能够由多根。一旦咱们肯定了根,咱们能够搜索它的孩子。而后,咱们须要寻找的孩子的孩子。每一条记录被保存表中的C_T_HIENODE。咱们将继续这个过程,直到全部的记录被处理。

如今,咱们已经完成了数据源的加强,最后一步是执行的Infopackage的。这将填充层次结构的基础上,咱们的数据集加载到一个DSO。完整的加载程序能够被自动执行流程链。

这就是它!层次是准备用于在SAP BW报告。

结论

使用SAP NetWeaver BW 7.1(或以前),也没有标准化的方式来加载自定义的层次结构。使用BW 3.x数据流和数据源迁移是不可能的,只能装层次。在这种洞察力描述的过程,是一个很好的解决方法,使一个自动化的自定义层次结构提取。随着全新的层次结构框架,提供与SAP NetWeaver BW 7.30,这将变得更加容易,由于可使用任何类型的数据源。

相关文章
相关标签/搜索