【转】SAP BW 顾问靠手 — SAP中的例程
什么是例程(Routine)?
例程就是我们可以自己定义的程序代码。通过程序代码来完成我们的需求,因为业务是千变万化,如果想让产品能跟随上业务的脚步,就必须要有非常灵活的功能来补充。大家都知道软件产品都是通过代码来编制出来的,所以这里的例程是用最灵活的代码来进行补充,以达到完成客户灵活的业务变化。当然在BW模块中,代码的编写只是其中一个小的功能,不像ABAP顾问,主要是通过编程来实现需求。BW顾问注重的是建模,性能,是完成数据仓库,分析数据等等。
在“转换”中,最重要的有三种类型的例程,开始例程,转换例程及结束例程;此外还有专家例程,反向例程。
![]()
![]()
![]()
开始例程:开始例程在每个数据包开始进行转换时运行。开始例程没有返回的值,它直接对数据包进行计算、修改或删除等操作,将操作的结果直接保存在数据包中进行后续的转换步骤。当然,开始例程也可以访问和操作SAPBI 系统中的其他数据库表。
转换例程:则是在每笔数据传输过程中,对数据进行的一个转换,例如数据根据条件进行的匹配转换。当在每个字段的详细规则中,选择例程的规则类型就会弹出对话框来贴些转换例程。
结束例程:结束例程对经过转换规则转换后的数据进行操作,它操作的是一个与目标对象字段结构一致的表结构。与开始例程一样,它也是逐个数据包进行处理的。在结束例程中,可以进行各种数据的操作,比如,删除不需要的数据、进行数据质量检查等。
专家例程 : 专家例程是系统提供的进行数据转换的另一个选项,这一类型的例程较少使用。一般只在SAP BI 提供的标准函数不能满足转换需要的时候,才使用专家例程。在已知道数据库表逻辑时,出于提高性能的考虑,也可以使用专家例程而不使用图形界面。
专家例程还可以更方便地将一条长记录分成多条短记录。使用专家例程可以编写系统提供的规则类型以外的任意转换,这时需要自定义写入数据加载日志的信息。一旦为一个转换创建了专家例程,系统会删除同一转换内已经定义好的其他转换规则。
![]()
反向例程 :在上图中没有标识出来,它将目标对象在运行报表时的选择条件和输出字段转化为对源对象的选择条件和输出字段的要求。
反向例程只在两种情况下使用。
1) 如果为虚拟信息提供者定义了例程,出于性能方面的考虑,可以使用反向例程。由于虚拟信息提供者本身并不存储数据,只在运行报表时直接到源系统读取数据,转换中的例程可能使报表的选择条件与输出字段与源系统不存在直接的对应关系,因此有必要把这些信
息通过反向例程传给源对象。
2) 当使用SAPBI 的报表跳转功能,从SAPBI 系统跳转到其他SAP 系统的事务处理界面时,如果数据是经过例程转换的,需要使用反向例程将报表中相应的信息返回给其他的SAP 系统。
在这两种情况下,如果不使用反向例程,系统选择源对象所有的值。
在代码*$*$ begin of global …和*$*$end of global ...之间输入用户的数据定义。用户可以使用两种方式声明数据:
1 )使用语句'CLASS DATA'进行全局数据声明。用这一方法声明的数据在整个数据请求
中都有效。
2) 使用语句'DATA'进行全局数据声明。用这一方法声明的数据只在当前的数据包中都
有效。
全局数据声明使不同的例程之间共享数据成为可能。例如,可以在例程中使用其他例程
的中间计算结果,或者在稍后再次调用同时例程时重用例程的数据。
下面分别给出一个开始例程,传输例程及结束例程的应用场景及代码实现,如下:
1.开始例程程序范例及场景:
在数据传输伊始就需要删除AAA工厂数据,则可以在传输例程中写入如下程序:
*$*$ begin of routine - insert your code only below this line
"删除AAA工厂
DELETE SOURCE_PACKAGE WHERE /BIC/ZPLANT = 'AAA'
*$*$ end of routine - insert your code only before this line
2.转换例程应用:
在数据传输过程中需要补充物料前导零,则在信息对象例程中加入以下代码即可。
*$*$ begin of routine - insert your code only below this line
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = SOURCE_FIELDS-MATNR
IMPORTING
OUTPUT = RESULT.
*$*$ end of routine - insert your code only before this line
3.结束例程应用:
如果数据源的结构是一个扁平化结构,现在需要将其拆分成多行,例如结构源数据是
办事处 一月份销量 二月份销量 三月份销量...
而目标的结构为 办事处 月份 销量;则就可以在结束例程里做文章了;示例代码如下:
先在开始例程中定义一个与源一模一样的内表,并且将源值赋给这个内表,代码如下:
*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
ITAB [] = SOURCE_PACKAGE [].
*$*$ end of routine - insert your code only before this line *-*
然后在结束例程中,在写入以下程序:
*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
REFRESH RESULT_PACKAGE.
DATA: WA_RESULT TYPE _TY_S_TG_1.
LOOP AT ITAB INTO WA_ITAB.
WA_TG-/BIC/ZSM_OFF = WA_ITAB-ORG_ID.
*****1月
WA_TG-CALMONTH2 = '01'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M1.
APPEND WA_TG TO ITAB_TG.
****2月
WA_TG-CALMONTH2 = '02'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M2.
APPEND WA_TG TO ITAB_TG.
****3月
WA_TG-CALMONTH2 = '03'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M3.
APPEND WA_TG TO ITAB_TG.
ENDLOOP.
LOOP AT ITAB_TG INTO WA_TG.
MOVE-CORRESPONDING WA_TG TO WA_RESULT.
APPEND WA_RESULT TO RESULT_PACKAGE.
ENDLOOP.
*$*$ end of routine - insert your code only before this line *-*
【转】SAP BW 顾问靠手 — SAP中的例程的更多相关文章
- SAP BW顾问如何保持市场竞争力
跟大部分电工一样,SAP顾问也经常有迷茫的时候.因为,这个世界变化实在太快了.每一个电工,总是在担心自己会不会被飞速发展的技术所淘汰.那么,作为 一个BW顾问,应该如何保持市场竞争力呢?我觉得需要两个 ...
- 应用SAP PI实现SAP BW数据仓库对于第三方系统数据完美集成以及DELTA加载的分析
注明:本篇的技术性细节参考了SAP SCN上的一篇SAP PI 和BW集成的文章,本篇文章并不打算过多探讨实现的技术细节,因为在SCN上的这篇英文文章已经完全涵盖了技术细节和配置步骤 大家可以通过搜索 ...
- SAP BW标准模型简介(BW星形模型 BW Star Schema )
标准星型模型是 数据仓库中一种常用的组织信息和数据的多维数据模型.它由中心的一个事实表(Fact Table)和一些围绕它的维度表(Dimensional Table)组成. 事实(Fact)着眼于 ...
- SAP PP顾问面试题及资料
SAP PP顾问面试试题及资料 1.主数据 组织架构 •SAP中主要的组织架构有哪些?哪些用于PP的组织架构?•成本控制范围.公司代码.估价范围.工厂.库存地点之间的关系 物料主数据 •不同的物料主数 ...
- 【BW系列】SAP 讲讲BW/4 HANA和BW on HANA的区别
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP 讲讲BW/4 HANA和BW ...
- 【BW系列】SAP BW on HANA 迁移问题
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW on HANA 迁移问 ...
- 【HANA系列】SAP 一位SAP培训顾问的建议:SAP HANA应该如何学习?
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP 一位SAP培训顾问的建议 ...
- 【BW系列】SAP BW实时抽取ECC数据的实现
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW实时抽取ECC数据的实现 ...
- SAP BW 例程(Routine)【开始例程、关键值或特性的例程、结束例程】
定义 可以使用例程定义关键值或特性的复杂的转换规则. 例程是本地 ABAP 类,它们包括预定义的定义和实施范围.进站和出站参数的 TYPES及方法签名都存储在定义范围中.实际例程创建于实施范围中.使用 ...
随机推荐
- Hash值破解工具(findmyhash与hash-identifier破解Hash值)
Hash值破解工具(findmyhash与hash-identifier破解Hash值) 前言: Kali Linux提供各种哈希密文破解工具,如hashcat.john.rainbows.不论哪一种 ...
- 利用SQL为Code128码添加起始符和休止符
在利用code128码字体打印条码是,打印出来的条形码,扫描枪会出现认不出的情况,这种情况是由于直接将文本设置为code128字体而没有给他们指定起始符和休止符引起的. 经过查资料获发现好多人遇到这样 ...
- Flask启动原理,源码流程分析
1.执行Flask的实例对象.run()方法 from flask import Flask,request,session app = Flask(__name__) app.secret_key ...
- STL——配接器、常用算法使用
学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...
- spring cloud——feign为GET请求时的对象参数传递
一.问题重现 楼主在使用feign进行声明式服务调用的时候发现,当GET请求为多参数时,为方便改用DTO对象进行参数传递.但是,在接口调用时feign会抛出一个405的请求方式错误: {"t ...
- IAAS、SAAS 和 PAAS 的区别、理解
通俗的讲: 如果你是一个网站站长,想要建立一个网站.不采用云服务,你所需要的投入大概是:买服务器,安装服务器软件,编写网站程序.现在你追随潮流,采用流行的云计算,如果你采用IaaS服务,那么意味着你就 ...
- CentOS安装mysql*.rpm提示conflicts with file from package的解决办法
看到“conflicts”,是产生冲突了,文件“/usr/share/mysql/charsets/*”需要MySQL-server-5.6.19-1.linux_glibc2.5.x86_64版本的 ...
- java中关于AtomicInteger的使用
在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字.而AtomicInteger则通过一种线程安全的加减操作接口.咳哟参考我之前写的一篇 ...
- Effective C++ 条款46
本节条款:须要类型转换时请为模板定义非成员函数 这节知识是在条款24的基础上,讲述的有关非成员函数在模板类中(non-member function template)的作用. 我们先看一下条款24讲 ...
- 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解
开篇介绍 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程从2014年9月开始准备,到2014年12月在 天善BI学院 ...