SAP BW数据源增强管理

来源:互联网 发布:淘宝美工主要做些什么 编辑:程序博客网 时间:2024/05/24 16:16

一.数据源增强介绍

我们常会遇到系统标准的数据源,或者我们自建的数据源无法满足要求的情况,这个时候在数据源中添加几个相关的字段,可能就能满足我们的要求,这个时候就要用到数据源的增强。
 
数据源增强分为结构增强和功能增强。
 
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创建数据源功能块SE19BAdI编辑器
(Business Add-In Builder)
0 0
原创粉丝点击