什么是例程(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中的例程的更多相关文章

  1. SAP BW顾问如何保持市场竞争力

    跟大部分电工一样,SAP顾问也经常有迷茫的时候.因为,这个世界变化实在太快了.每一个电工,总是在担心自己会不会被飞速发展的技术所淘汰.那么,作为 一个BW顾问,应该如何保持市场竞争力呢?我觉得需要两个 ...

  2. 应用SAP PI实现SAP BW数据仓库对于第三方系统数据完美集成以及DELTA加载的分析

    注明:本篇的技术性细节参考了SAP SCN上的一篇SAP PI 和BW集成的文章,本篇文章并不打算过多探讨实现的技术细节,因为在SCN上的这篇英文文章已经完全涵盖了技术细节和配置步骤 大家可以通过搜索 ...

  3. SAP BW标准模型简介(BW星形模型 BW Star Schema )

    标准星型模型是 数据仓库中一种常用的组织信息和数据的多维数据模型.它由中心的一个事实表(Fact Table)和一些围绕它的维度表(Dimensional Table)组成.  事实(Fact)着眼于 ...

  4. SAP PP顾问面试题及资料

    SAP PP顾问面试试题及资料 1.主数据 组织架构 •SAP中主要的组织架构有哪些?哪些用于PP的组织架构?•成本控制范围.公司代码.估价范围.工厂.库存地点之间的关系 物料主数据 •不同的物料主数 ...

  5. 【BW系列】SAP 讲讲BW/4 HANA和BW on HANA的区别

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP 讲讲BW/4 HANA和BW ...

  6. 【BW系列】SAP BW on HANA 迁移问题

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW on HANA 迁移问 ...

  7. 【HANA系列】SAP 一位SAP培训顾问的建议:SAP HANA应该如何学习?

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP 一位SAP培训顾问的建议 ...

  8. 【BW系列】SAP BW实时抽取ECC数据的实现

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW实时抽取ECC数据的实现 ...

  9. SAP BW 例程(Routine)【开始例程、关键值或特性的例程、结束例程】

    定义 可以使用例程定义关键值或特性的复杂的转换规则. 例程是本地 ABAP 类,它们包括预定义的定义和实施范围.进站和出站参数的 TYPES及方法签名都存储在定义范围中.实际例程创建于实施范围中.使用 ...

随机推荐

  1. Python Django 学习 (二) 【Django 模型】

    注: 由于自己排版确实很难看,本文开始使用markdown编辑,希望有所改善 官方定义 A model is the single, definitive source of information ...

  2. ThreadPoolExecutor 源码阅读

    目录 ThreadPoolExecutor 源码阅读 Executor 框架 Executor ExecutorService AbstractExecutorService 构造器 状态 Worke ...

  3. 你了解ECMAScript吗?

    一.基本概念ECMA,European Computer Manufacturers Association,欧洲计算机制造协会. TC39,Technical Committee 39,ECMA的第 ...

  4. Some Formulas.

    目录 计数问题 在一个有\(n\)个点的完全图(complete graph)中有多少棵生成树 排列组合 1. 当 \(C_n^m\) 为奇数时,\((n\&m)==m\) 2. \[\sum ...

  5. Python3练习题系列(09)——物以类聚,人以群分

    目标: 用类管理同类事物 解析: 用到“class”的编程语言被称作“Object Oriented Programming(面向对象编程)”语言.首先你需要做出“东西”来,然后你“告诉”这些东西去完 ...

  6. [TYVJ1473]校门外的树3

    思路: 维护两个树状数组,一个记录种树区间左端点,一个记录右端点. 每次询问查询“看不见的树区间”,即右端点小于查询区间左端点和左端点小于查询区间右端点. #include<cstdio> ...

  7. curl的概念及相关工具下载

    https://baike.so.com/doc/6746112-6960657.html https://curl.haxx.se/download.html https://curl.haxx.s ...

  8. thinkphp5 学习笔记

    一.开发规范: 二.API: 1.数据输出:新版的控制器输出采用 Response 类统一处理,而不是直接在控制器中进行输出,通过设置 default_return_type 就可以自动进行数据转换处 ...

  9. redis StackExchange 主备 实现 demo

    网上关于redis高可用基本都是用redis-sentinel 哨兵 或者 redis cluster 集群来实现, 但是有没有更简单的方式,比如我现在就只有2个redis实例.我试验的结果是我们可用 ...

  10. Next Permutation leetcode java

    题目: Implement next permutation, which rearranges numbers into the lexicographically next greater per ...