BW:如何加载和生成自定义的层次结构,在不使用平面文件的SAP业务信息仓库
介绍
通常情况下,报告需要在一个类似树的结构来显示数据。通过启用此特性在SAP BW层次结构。高级数据显示的层次结构的顶层节点。更详细的数据可以向下钻取到的层次结构中的下级节点的可视化。
考虑一个例子层次的客户联络层次“,用于限定电信呼叫中心接收电话。
图1:客户联络层次
加载层次结构的标准机制
有几种可能性供货与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:解决方案概述
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
根据您的层次结构特性,其他领域和/或表是必需的。例如,如果你有一个随时间变化的层次结构,的领域DATEFROM和DATETO应填补。
现场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,这将变得更加容易,因为可以使用任何类型的数据源。
BW:如何加载和生成自定义的层次结构,在不使用平面文件的SAP业务信息仓库的更多相关文章
- SD从零开始71 业务信息仓库(BW)
SD从零开始71 业务信息仓库(BW)概念 在线事务处理的环境OLTP Environment 在事务处理中,我们不断地填充用于跟踪我们的业务流程的数千个不同步骤的特定的表: 例如,销售凭证行条目来自 ...
- BW数据加载
BW数据加载的优先级 1.主数据属性的加载 步骤图 从下到上 1)运行InfoPackage加载到PSA 找到主数据属性的InfoPackage,双击 点击Start按钮 点击监视器,查看运 ...
- java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象
java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类 ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作
生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...
- VSTO - 使用Excel加载项生成表和图表
此示例显示如何创建Excel的加载项,使用户可以在其工作表中选择库存符号,然后生成一个新工作表,显示库存的历史性能. 工作表包含数据表和图表. 介绍Excel加载项通常不知道工作表包含什么.典型的加载 ...
- pytorch加载语音类自定义数据集
pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.u ...
- Glide加载图片到自定义的圆形ImageView中不显示
当使用自定义的圆形ImageView时,发现使用Glide加载并设置默认初始图片时,自定义的ImageView一直显示默认图片,无法更新到加载的图片. 使用下面代码可以解决这个问题 Glide.wit ...
- python之使用 wkhtmltopdf 和 pdfkit 批量加载html生成pdf,适用于博客备份和官网文档打包
0. 1.参考 Python 爬虫:把廖雪峰教程转换成 PDF 电子书 https://github.com/lzjun567/crawler_html2pdf wkhtmltopdf 就是一个非常好 ...
随机推荐
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理
上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...
- 基于OWIN ASP.NET WebAPI 使用OAUTH2授权服务的几点优化
前面在ASP.NET WEBAPI中集成了Client Credentials Grant与Resource Owner Password Credentials Grant两种OAUTH2模式,今天 ...
- 在Linux CentOS上编译并安装Clang 3.5.0
编译CoreCLR需要Clang 3.5,而CentOS上安装的是Clang 3.4.2(yum repos中最新版也是这个),只能自己手工编译LLVM的源代码进行安装. (注:CentOS的版本是6 ...
- Kotlin & Vertx 构建web服务
感想 Kotlin 是一门好语言,值得大家了解一下. Vertx 是一个好框架,也值得大家了解一下. Kotlin 写过js,也写过一点点go,主力一直是java.用了kotlin,貌似找到了常用语言 ...
- How Delete File with Readonly Permission?
class Program { static void Main(string[] args) { string file=@"E:\readme.txt"; try { File ...
- 使用FEST-Swing测试GUI
在Java中最常用的单元测试工具要算JUnit了.FEST-Swing是一个能够与JUnit集成的GUI测试框架.使用FEST-Swing可以更方便的对Swing进行一系列的测试.下面就说 ...
- DFD数据流程图
顶层图DFD 0层图 1层图
- [异常] Download interrupted: Connection to https://dl-ssl.google.com refused 安卓SDK下载被拒 3步解决
1.SDK Manager 的 Tools ->Options打开SDK Manager的Settings,选中“Force https://… sources to be fetched us ...
- 第一个CSS变量:currentColor
一.基本介绍 CSS变量正慢慢地从最初的草案到浏览器实现.但规范中有个已经存在多年的变量:currentColor.这个CSS特性具有良好的浏览器支持和一些实际的应用,本篇文章,我们来学习和了解它. ...
- SONATYPE NEXUS搭建MAVEN私服
1.为什么使用Nexus如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费 ...