`
lzkyo
  • 浏览: 473538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BW增强数据源的两种方法

 
阅读更多

前言:我们经常会遇到系统标准的数据源,或者我们自建的数据源无法满足要求的情况,这个时候在数据源中添加几个相关的字段,可能就能满足我们的要求,这个时候就要用到数据源的增强。下面介绍的两种增强方法都是发生在数据源提取数据结束以后将要写到结果表的时候。

准备工作(自建数据源)

1)RSO2 创建一个简单的数据源:SFLIGHT 业务数据

clip_image002

选择一个应用程序组件,填写文本信息,直接到数据库SFLIGHT取数,点击保存

clip_image004

继续点击 保存

clip_image006

2)RSA6 选择刚刚创建的数据源 点击 clip_image008

clip_image010

创建一个附加结构,用系统自带的名称即可,点击clip_image012

clip_image014

填写短文本,及要增加的字段 (在此我们增加了一个字段FLAG,对于容量>=90%的航班,我们打算以FLAG为‘X’标记),然后点击clip_image016 激活附加结构

clip_image018

RSA3 测试提取一下

clip_image020

ALV GRID查看一下提取结果

clip_image022

可以看到最后一个字段 标识,现在为空(例如第一条,占用374,容量385,使用率97.14%大于90%,但是现在标识仍然为空)

clip_image024

方法一:用户出口(User Exit)

1)CMOD 创建一个新项目 BW

clip_image026

2)填写短文本,保存,点击Enhancement assignments (增强分配)

clip_image028

3)分配增强“RSAP0001”(:这个增强是固定的,每个系统都一样),保存,点击 组件

clip_image030

4)点击clip_image032 激活组件

clip_image034

可以看到4个用户出口状态都已经变绿,选中用户出口,点击clip_image036

clip_image038

可知:001用于事务数据的数据源

002用于主数据或文本的数据源

003只能用于BW版本1.2B,2.0A以后被002替换

004用于层次的数据源

5)双击一个用户出口,进入Function Module界面

clip_image040

6)这个FM中,只是INCLUDE了一个程序,这个程序现在是不存在的,双击 ZXRSAU01

clip_image042

7)不要理会系统警告,回车

clip_image044

8)点击 是

clip_image046

INCLUEDE程序ZXRSAU01创建成功,下面就可以根据FM的输入输入参数进行CODING

clip_image048

*&------------------------------------------------------------------*
*&  包括                ZXRSAU01
*&------------------------------------------------------------------*
FIELD-SYMBOLS: <S> LIKE ZOXHHD0148.
DATA: RATE TYPE P DECIMALS 2.
*判断数据名称
CASE I_DATASOURCE.
WHEN 'SFLIGHT'.
*只有数据源为 SFLITH ,才执行以下代码
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.
ENDCASE.

RSA3 测试提取,结果如下:

clip_image050

方法二:BAdI

1)SE19

clip_image052

2)创建一个Implementation BAdI Name: RSU5_SAPI_BADI

clip_image054

Implementation Name: ZRSU5_SAPI_BADI

clip_image056

填写描述,点击clip_image016[1] 激活这个Implementation

clip_image058

在Interface选项卡,会看到系统自动创建了一个class: ZCL_IM_RSU5_SAPI_BADI

双击这个class

clip_image060

进入Class Interface界面,会看到有两个method:

DATA_TRANSFORM 用于一般数据的增强(事务数据,主数据和文本)

HIER_TRANSFORM 用于层次数据的增强

clip_image062

双击method,就可以根据method的参数进行CODING了

clip_image064

为了便于管理,我们为每一个需要增强的数据源创建一个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

clip_image066

设置参数(只比DATA_TRANSFORM的参数少了一个I_DATASOURCE)如下:

clip_image068

保存后,返回Method界面

clip_image070

点击Code

clip_image072

下面就跟CMOD一样了,可以进行CODING了

clip_image074

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.

RSA3 测试提取,结果如下:

clip_image050[1]

比较: 建议使用BAdI的方式, User Exit方式增强RSAP0001只能包含在一个项目中, 而BAdI方式可以为RSU5_SAPI_BADI创建多个Implementation,这样就可以为每个模块建一个Implementation,每个数据源建一个method,更加便于管理.

 

分享到:
评论

相关推荐

    BW面试知识点

    它分为两部分:数据源的DELTA机制和BW的DELTA机制。 1. **数据源的DELTA机制**: - **后勤数据源DELTA机制**: 通过Extraction Queue (ExtractionQ) 和 Delta Queue (DeltaQ) 以及 V3 JOB 来实现。首先使用 IP ...

    bw技术点一览及答案

    【bw技术点一览及答案】 在SAP BW(Business Warehouse)中,数据...DSO和Cube的区分以及DAO的使用策略,使得BW能够灵活地处理各种业务场景下的大数据需求,并通过Multiprovider和Infoset提供复杂的多数据源查询视图。

    BW讲义初学者入门教程,适合想对BW有了解的朋友学习!!!

    1. **BW架构**:介绍BW的基本架构,包括InfoProviders(信息提供者)、DataSources(数据源)、InfoObjects(信息对象)和Databases(数据库)等关键组件。 2. **数据提取**:讲解如何配置DataSources,从ERP、CRM...

    AT24C1024BW

    6. **时钟速率**:支持400kHz(1.8V)和1MHz(5V、2.5V)两种时钟速率,满足不同应用场景的需求。 7. **写保护功能**:具备硬件和软件双重数据保护机制,提高了数据的安全性。 8. **256字节页面写模式**:支持256...

    User Exits in SAP BW

    这意味着客户可以通过添加新的数据源、转换规则、报表或者变量来丰富标准的业务内容,使之更符合其特定的业务流程。 2. 用户退出用于变量: 例如,存在一个名为RSAP0001的增强,它包含了两个功能模块:EXIT_...

    How to…CO-PA Retraction

    这一步骤包括数据源的选择、过滤条件的设定以及结果格式的定义。 2. **配置CO-PA接收参数**:在CO-PA端,配置接收数据的参数,包括数据的存储位置、记录类型以及任何必要的预处理或后处理规则。 3. **执行数据回撤...

    ST-STA339BW.pdf

    8. **动态范围压缩**:内置两种独立的动态范围压缩器(DRC),可以配置为双带抗削顶器或独立的限制器/压缩器。此外,还提供了基于滤波信号的DRC-EQ功能。 9. **低频增强处理**:专为低频提升设计的LFE处理,分辨率...

    BW_efd_tool:简单的工具即可转储Pokémon黑白entralink森林数据

    关于BW_efd_tool的工作原理,它主要实现了两个核心功能:数据转储和数据注入。数据转储允许用户将Centralink森林中的数据导出到本地,这样即使离线也能查看和分析。而数据注入功能则是将修改后的数据重新导入游戏,...

    BI常见面试题

    * 找需要的原始表—SE11 根据表建 VIEW—RSO2 根据 VIEW 建数据源—到 BW 端复制数据源。 十九、标准数据源 1. 什么是标准数据源? * 标准数据源其实就是一个结构体+提取器,(提取器就是一段写好的 ABAP 代码)...

    SAP SLT 系统官方性能优化手册

    - **1.8 版本**(2020年10月7日):更新以反映两种记录机制。 #### 四、关键术语与概念 - **屏幕引用**:包括字段名称、屏幕标题、按钮标签、菜单名称等。 - **文本交叉引用**:指向其他文档的引用。 - **强调词汇...

    BOE仪表盘和分析设置

    它可以集成各种数据源,通过仪表板和报告形式展现企业绩效状况。 - **Predictive Analysis**:这是一个强大的工具,可以进行预测性数据分析,帮助企业预测未来的趋势和发展方向。它基于统计模型和机器学习算法,...

    cognos 10 report stdio用户手册

    - **关系报表样式与维度报表样式**:提供了两种主要的报表样式,用户可以根据数据特性选择合适的样式。 - **用户界面**:界面友好且直观,分为多个视图,如报表创建视图、页面设计视图等,便于用户进行各种操作。 - ...

    erzhihua.rar_binarization_erzhihua_二值化_图像 自适应 二值化_灰度 图像 二值化

    二值化是图像处理中的一个基础且重要的环节,它将图像转换为只有黑白两种颜色的图像,即二值图像。这种技术广泛应用于文字识别、噪声去除、图像压缩以及计算机视觉等多个领域。在“erzhihua.rar_binarization_...

    SAP屠夫作品汇总

    Table of Contents 2 General Settings 16 检查度量单位(Check Units of Measurement) 16 Financial Accounting 19...两种外包方式比较 686 业务背景: 686 1.直接使用外包PO 687 (1)成本核单(Costing sheet)设置 687 (2...

    java IO(下)

    与节点流不同,过滤流本身并不直接连接到数据源或目标,而是作为中间层,通过装饰器模式对底层流进行增强。 ##### 输入流的处理流作用 - **功能增强**:如字符编码转换、压缩解压等。 - **性能优化**:通过缓冲...

    数字图像处理设计及其源代码

    3. **灰度线形变换**:这是一种基本的图像增强技术,通过线性函数将图像的灰度级映射到新的范围,以改善图像的对比度。例如,MATLAB的`imadjust`函数可用于执行灰度线性变换。 4. **图像二值化**:二值化是将图像...

    TDA2030 数据手册

    该IC适用于多种应用场合,特别是在无需稳压电源的情况下,能够提供更加可靠的工作性能,并且在成本控制方面具有优势。 #### 二、极限参数 1. **最大供电电压(Vs)**: ±22V。 - 这意味着TDA2030A的电源电压范围...

    足球联赛积分管理系统设计说明文书.doc

    在Windows环境中,使用ODBC(Open Database Connectivity)建立数据源是一种常用的方法。具体步骤如下: 1. **安装ODBC驱动程序**:确保系统已安装适用于Microsoft Access的ODBC驱动程序。 2. **创建数据源**:打开...

    一个msk调制的产生框图步骤和具体代码

    1. **数据源**:提供二进制数据流,这是MSK调制的基础。 2. **码元速率调整**:将数据码元速率调整到与载波频率相匹配,确保每个码元期间载波相位可以完成一次完整的变化。 3. **预调制滤波器**:通常使用高斯滤波器...

Global site tag (gtag.js) - Google Analytics