SAP BW数据源增强管理
一.数据源增强介绍
我们常会遇到系统标准的数据源,或者我们自建的数据源无法满足要求的情况,这个时候在数据源中添加几个相关的字段,可能就能满足我们的要求,这个时候就要用到数据源的增强。数据源增强分为结构增强和功能增强。
1) 结构增强:对于FM(功能模块Function Module)创建的数据源不存在结构增强,因为提取结构是由开发人员自定义的,只有当提取结构是系统自动生成时才需要结构增强这个功能。
2) 功能增强:当我们做了结构增强或者需要修改数据源里某些字段的数据时,可以通过功能增强来完成。
接下来我们分别介绍这两种数据源增强方式。
一.结构增强
1. 增强提取结构
事务代码:RSA6进入事务代码RSA6,选中你需要增强的那个数据源,点击增强提取结构。
2. 添加字段并激活
填写需要增强的字段和类型长度,数量和金额填写计量单位,点击 激活。使用事务代码:RSA3
测试提取数据。
二.功能增强
1. 进入相应增强
事务代码:SMOD进入事务代码SMOD,填写增强号“R SAP0001”,选择组件,点击显示。
表1 相关增强功能名
增强功能名 | 相应描述 |
EXIT_SAPLRSAP_001 | 事务数据相关增强 |
EXIT_SAPLRSAP_002 | 主数据属性增强 |
EXIT_SAPLRSAP_003 | 主数据文本相关增强, 只能用于BW版本1.2B,2.0A以后被002替换 |
EXIT_SAPLRSAP_004 | 层次结构增强 |
2. 编辑程序并激活
双击“ZXRSAU01”创建Include程序。
编写代码修改或者填充相关字段,点击 激活。
3. 通过BAdI实现
事务代码: SE19创建一个BAdI Name: RSU5_SAPI_BADI。Implementation Name: ZRSU5_SAPI_BADI。填写描述,点击 激活。
在Interface选项卡,会看到系统自动创建了一个class: ZCL_IM_RSU5_SAPI_BADI 双击这个class。进入Class Interface界面,会看到有两个method:
DATA_TRANSFORM 用于一般数据的增强(事务数据,主数据和文本),
HIER_TRANSFORM 用于层次数据的增强。双击method,就可以根据method的参数进行编码了。为了便于管理,我们为每一个需要增强的数据源创建一个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。设置参数如下:保存后,返回Method界面。点击Code。下面就跟SMOD一样,可以进行编码。
示例代码:
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) |
post SAP-Garson
原文链接:https://blog.csdn.net/zhongguomao/article/details/46301493文章来自于网络,如果侵犯了您的权益,请联系站长删除!