微信搜索公众号:SAP中文学习网交流平台      SAP技术千人群: SAP中文学习网技术群      SAP技术交流2群:SAP技术交流2群      SAP新人群:SAP中文学习网新人群     

SAP中文学习网

SAP BW数据源增强管理

来源: 互联网TAG标签: sap sap bw 作者:SAP虹 点击:

一.数据源增强介绍

我们常会遇到系统标准的数据源,或者我们自建的数据源无法满足要求的情况,这个时候在数据源中添加几个相关的字段,可能就能满足我们的要求,这个时候就要用到数据源的增强。
 
数据源增强分为结构增强和功能增强。
 
1)    结构增强:对于FM(功能模块Function Module)创建的数据源不存在结构增强,因为提取结构是由开发人员自定义的,只有当提取结构是系统自动生成时才需要结构增强这个功能。
 
2)    功能增强:当我们做了结构增强或者需要修改数据源里某些字段的数据时,可以通过功能增强来完成。
 
 
接下来我们分别介绍这两种数据源增强方式。

一.结构增强

1.     增强提取结构

事务代码:RSA6
进入事务代码RSA6,选中你需要增强的那个数据源,点击增强提取结构。
SAP BW数据源增强管理
 

 

2.     添加字段并激活

 
填写需要增强的字段和类型长度,数量和金额填写计量单位,点击SAP BW数据源增强管理激活。
SAP BW数据源增强管理
使用事务代码:RSA3 
测试提取数据。
 
 

二.功能增强

1.     进入相应增强

事务代码:SMOD
进入事务代码SMOD,填写增强号“RSAP0001”,选择组件,点击显示。
 
SAP BW数据源增强管理
表1 相关增强功能名
增强功能名 相应描述
EXIT_SAPLRSAP_001 事务数据相关增强
EXIT_SAPLRSAP_002 主数据属性增强
EXIT_SAPLRSAP_003 主数据文本相关增强, 只能用于BW版本1.2B,2.0A以后被002替换
EXIT_SAPLRSAP_004 层次结构增强
 
SAP BW数据源增强管理
 
 

2.     编辑程序并激活

 
双击“ZXRSAU01”创建Include程序。
SAP BW数据源增强管理
 
 
编写代码修改或者填充相关字段,点击SAP BW数据源增强管理激活。
 
SAP BW数据源增强管理
 
 

3.     通过BAdI实现

事务代码: SE19
SAP BW数据源增强管理
创建一个BAdI Name: RSU5_SAPI_BADI。
SAP BW数据源增强管理
Implementation Name: ZRSU5_SAPI_BADI。
SAP BW数据源增强管理
填写描述,点击SAP BW数据源增强管理激活。
SAP BW数据源增强管理
在Interface选项卡,会看到系统自动创建了一个class: ZCL_IM_RSU5_SAPI_BADI
双击这个class。
SAP BW数据源增强管理
进入Class Interface界面,会看到有两个method:
DATA_TRANSFORM 用于一般数据的增强(事务数据,主数据和文本),
HIER_TRANSFORM 用于层次数据的增强。
SAP BW数据源增强管理
双击method,就可以根据method的参数进行编码了。
SAP BW数据源增强管理
为了便于管理,我们为每一个需要增强的数据源创建一个method,然后在方法DATA_TRANSFORM和HIER_TRANSFORM中动态调用。
 
示例代码:
METHOD IF_EX_RSU5_SAPI_BADI~DATA_TRANSFORM.
DATA: LV_METHOD TYPE SEOCMPNAME.
* check if any data is extracted
CHECK C_T_DATA IS NOT INITIAL.
* get method name for datasource
* add one character as methods can't start with a number
CONCATENATE 'M_' I_DATASOURCE INTO LV_METHOD.
* check whether method exist
SELECT SINGLE CMPNAME
INTO LV_METHOD
FROM SEOCOMPO
WHERE CLSNAME = 'ZCL_IM_RSU5_SAPI_BADI'
AND CMPNAME = LV_METHOD.
CHECK SY-SUBRC EQ 0.
* check method is implemented
CALL METHOD (LV_METHOD)
EXPORTING
      I_UPDMODE    = I_UPDMODE
      I_T_SELECT   = I_T_SELECT
      I_T_FIELDS   = I_T_FIELDS
CHANGING
      C_T_DATA     = C_T_DATA
      C_T_MESSAGES = C_T_MESSAGES.
ENDMETHOD.
建一个Static Method M_SFLIGHT(注意:这里我们以'M_' + 数据源名称作为 Method的名称,因为有些系统的数据源以数字开头,而Method不允许以数字开头) 点击 Parameters。
SAP BW数据源增强管理
设置参数如下:
SAP BW数据源增强管理
保存后,返回Method界面。
SAP BW数据源增强管理
点击Code。
SAP BW数据源增强管理
下面就跟SMOD一样,可以进行编码。
 
SAP BW数据源增强管理
 
示例代码:
METHOD SFLIGHT.
FIELD-SYMBOLS: <S> TYPE ZOXHHD0148.
DATA: RATE TYPE P DECIMALS 2.
* map the data
LOOP AT C_T_DATA ASSIGNING <S>.
CHECK <S>-SEATSMAX IS NOT INITIAL.
CLEAR RATE.
*计算航班使用率
    RATE = <S>-SEATSOCC / <S>-SEATSMAX * 100.
IF RATE >= '90.00'.
      <S>-FLAG = 'X'. "使用率大于90%,打上标记
ENDIF.
ENDLOOP.
ENDMETHOD.
 
 
比较两种方式BAdI和出口: 建议使用BAdI的方式, 用户出口User Exit方式增强RSAP0001只能包含在一个项目中, 而BAdI方式可以为RSU5_SAPI_BADI创建多个Implementation,这样就可以为每个模块建一个Implementation,每个数据源建一个method,更加便于数据源增强管理。


补充: 数据源相关事务代码

 
表2 数据源开发常用事务码
 
事务代码 描述
RSA5 激活标准数据源
SBIW 激活LO数据源
RSO2 自定义数据源
RSA6 数据源结构增强
SMOD 数据源功能增强
RSA3 测试数据源
SE37 创建数据源功能块
SE19 BAdI编辑器
(Business Add-In Builder)


(编辑:cindy liu )
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
您有可能感兴趣的文章