BW project CO ETL设计说明书.docx

上传人:b****5 文档编号:12357937 上传时间:2023-04-18 格式:DOCX 页数:74 大小:13.04MB
下载 相关 举报
BW project CO ETL设计说明书.docx_第1页
第1页 / 共74页
BW project CO ETL设计说明书.docx_第2页
第2页 / 共74页
BW project CO ETL设计说明书.docx_第3页
第3页 / 共74页
BW project CO ETL设计说明书.docx_第4页
第4页 / 共74页
BW project CO ETL设计说明书.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

BW project CO ETL设计说明书.docx

《BW project CO ETL设计说明书.docx》由会员分享,可在线阅读,更多相关《BW project CO ETL设计说明书.docx(74页珍藏版)》请在冰豆网上搜索。

BW project CO ETL设计说明书.docx

BWprojectCOETL设计说明书

 

BWproject

COETL设计说明书

 

当前版本:

拥有者:

最后更新日期:

最后更新者:

作者:

创建日期:

批准者:

批准日期:

修订历史

版本号

更新日期

修订作者

主要改变描述

1.概述

本项目ETL部分的核心功能就是按照本设计说明书的架构,将数据由数据源系统(SAPR3)加载到数据仓库(SAPBW)中。

其实现的困难在于ETL工作将面临复杂的源数据环境,包括多种R3标准数据源和增强结构、繁多的数据种类、巨大的加载数据量、错综复杂的数据关系和参差不齐的数据质量,这些都使ETL的架构和应用设计面临相当的挑战。

通过高效的ETL系统结构、层次化的应用功能划分和BW标准的元素,ETL系统和应用架构设计需要能够达到以下目标:

Ø支持在此框架下实现BW数据仓库所需要的ETL功能;

Ø支持在规定的时间窗口内能够完成数据加载工作,即需要满足日常数据加载的性能需求;

Ø能够支持有效的应用程序开发模式,提高开发效率,尽量减少应用开发成本;

Ø减少系统维护的复杂性,支持后续增加新数据或功能的开发工作。

ETL设计说明书为ETL开发提供指导,着重叙述数据仓库系统ETL系统的架构、功能和实施过程,其中包含了主要数据转换过程以及涉及到的客户化例程的说明。

ETL过程依赖于源数据的准备就绪,本设计说明书同时也列出了模块所对应的SAP标准数据源和主数据数据源。

由于ETL的复杂性,本设计尝试从多个层面进行说明,希望能够尽可能回答开发过程中所面临的问题达到指导开发的目的,但实际开发过程中,开发人员仍然可能遇到设计说明书没有涉及的问题,因此,遵循设计的基本思想,通过开发人员的反馈,在开发的过程中不断地完善和修正设计,对于ETL的开发是非常重要的。

对于任何ETL开发过程中遇到的技术问题,开发人员需要与设计人员协商讨论,以迅速解决问题,保证开发顺利进行。

而同时,为保证ETL系统架构的完整、统一、程序的可维护性以及开发的可管理性,对设计的修改必须得到控制,重要的变动必须通过版本管理流程来协调进行。

本设计说明书将包括以下部分:

Ø架构设计:

设计对应模块ETL系统的逻辑架构以及分析数据流。

ØETL过程说明:

包括ETL过程涉及到的各步骤说明,如信息包的更新机制,转换过程中涉及到的特定例程控制,DTP的执行和更新机制等等。

Ø数据加载流程:

说明了对于本模块而言在运行特定步骤之前需满足的条件。

2.ETL系统架构设计

COETL系统逻辑架构

上图是ETL系统逻辑架构。

从宏观设计上,历史数据、初始数据加载和日常数据加载的ETL都将按照此架构设计。

该架构将ETL作为一个整体来设计。

对于数据仓库的加载,ETL分为数据抽取(Extract)、数据转换(Transform)以及数据加载(Load)3个阶段。

3.COETL数据流

COPA数据流

COPC-原材料价量差数据流

COPC-制费人工数据流

COPC-顶正单位成本数据流

数据源环境

数据源全部由SAP系统提供,数据源包括两种类型

业务数据数据源

ØZ_CO_PA_DXJT_03——基于成本核算的获利能力分析(基于视图ZCOPA)

Ø0CO_PC_01——成本对象控制:

计划/实际数据

Ø0CO_PC_ACT_05——物料估价:

价格

Ø0CO_PC_ACT_1——实际成本核算/物料分类帐

Ø

主数据数据源

Ø0CUST_SALES_ATTR——客户号

Ø0MATERIAL_ATTR——物料(属性)

4.COPA模型设计

PSA设计

PSA数据源

COPA模型的PSA业务数据源包含Z_CO_PA_DXJT_03;

信息包

Z_CO_PA_DXJT_03信息包只包含全量信息包

全量信息包:

此信息包放在处理链里

Level1ODS层设计

COPA_110:

基于成本核算的获利能力分析(写入优化的)

COPA_110是写优化DSO,其结构与PSA一样,其结构如下:

在Z_CO_PA_DXJT_03到COPA_110的数据加载中,在DTP中没有过滤,在提取方式的设置如下所示:

Level2EDW层设计

COPA模型中没有Level2EDW层。

Level3DM层设计

DataMart层是企业数据仓库的最终数据层,所有的报表基于这一层开发,所以其设计需要满足FunctionSpec所有报表需求;在COPA模型中,CO_IC001是所有公司COPA的数据;其模型如下:

DTP

DTP中没有过滤器:

转换

⏹分销渠道

根据客户编号去客户编号(销售视图)的属性表/bi0/pcust_sales找到分销渠道

    data:

 l_distr_chan type /bi0/oidistr_chan.

    select single distr_chan  into l_distr_chan from /bi0/pcust_sales

         where cust_sales = source_fields-cust_sales and

               price_list <> ''.

    if sy-subrc = 0.

      result = l_distr_chan.

    else.

      result = ''.

    endif.

⏹部门

根据客户编号去客户编号(销售视图)的属性表/bi0/pcust_sales找到部门

    data:

 l_division type /bi0/oidivision.

    select single division  into l_division from /bi0/pcust_sales

         where cust_sales = source_fields-cust_sales and

               price_list <> ''.

    if sy-subrc = 0.

      result = l_division.

    else.

      result = ''.

    endif.

5.COPC-顶正单位成本模型设计

PSA设计

PSA数据源

COPC模型的PSA业务数据源包含0CO_PC_01、0CO_PC_ACT_05;

信息包

5.1.1.10CO_PC_01

信息包包含初始化信息包和增量信息包

初始化信息包:

只执行一次,抽2001.001——2009.009的数据,货币类型是20的数据,完全更新

增量信息包:

抽取上个月(ABAP程序控制)的数据,货币类型是20,完全更新,此信息包放在处理链里

增量信息包中的ABAP例程

  DATA:

 L_IDX LIKE SY-TABIX.

  READ TABLE L_T_RANGE WITH KEY

       FIELDNAME = 'FISCPER'.

  L_IDX = SY-TABIX.

*....

*--获取上个月的增量数据

  DATA :

 FISCPER(7) TYPE C ,

         LASTDATE TYPE D ,

         YEAR(6) TYPE C .

  CALL FUNCTION 'FIMA_DATE_CREATE'

    EXPORTING

      I_DATE                  = SY-DATUM

      I_MONTHS                = '-1'

      I_SET_LAST_DAY_OF_MONTH = 'X'

    IMPORTING

      E_DATE                  = LASTDATE.

  BREAK-POINT .

  YEAR = LASTDATE+0(6) .

  CONCATENATE YEAR+0(4) '0' YEAR+4

(2) INTO  FISCPER .

  L_T_RANGE-SIGN = 'I'.

  L_T_RANGE-OPTION = 'BT'.

  L_T_RANGE-LOW = FISCPER.

  L_T_RANGE-HIGH = FISCPER.

  MODIFY L_T_RANGE INDEX L_IDX.

  P_SUBRC = 0.

5.1.1.20CO_PC_ACT_05

包含初始化信息包和增量信息包

初始化信息包:

抽取ZTZQ、ZTZ、ZTF、ZHS、TZC、TTZ、TTS、TTF、TSX、THS、CTZ这几个公司代码,2009.009之前的数据,因数据量大,分2个信息包抽取、完全更新方式

增量信息包:

抽取上个月(ABAP程序控制)的数据,完全更新,此信息包放在处理链里。

增量信息包中的ABAP例程

data:

 l_idx like sy-tabix.

read table l_t_range with key

     fieldname = 'FISCPER'.

l_idx = sy-tabix.

*....

*--获取上个月的增量数据

  DATA :

 FISCPER(7) TYPE C ,

         LASTDATE TYPE D ,

         YEAR(6) TYPE C .

  CALL FUNCTION 'FIMA_DATE_CREATE'

    EXPORTING

      I_DATE                  = SY-DATUM

      I_MONTHS                = '-1'

      I_SET_LAST_DAY_OF_MONTH = 'X'

    IMPORTING

      E_DATE                  = LASTDATE.

  BREAK-POINT .

  YEAR = LASTDATE+0(6) .

  CONCATENATE YEAR+0(4) '0' YEAR+4

(2) INTO  FISCPER .

  L_T_RANGE-SIGN = 'I'.

  L_T_RANGE-OPTION = 'BT'.

  L_T_RANGE-LOW = FISCPER.

  L_T_RANGE-HIGH = FISCPER.

modify l_t_range index l_idx.

p_subrc = 0.

Level1ODS层设计

CO_D110:

成本对象控制(写入优化的)

CO_D110是写优化DSO,其结构如下:

5.1.1.3DTP

在0CO_PC_01到CO_D110的数据加载中,在DTP中添加了过滤,只抽取目前系统中存在的工厂,提取模式是DELTA:

5.1.1.4转换

没有开始例程,转换规则如下:

0LEADMATNR汇总订单的高层订单物料

去PP_D110关联订单的物料

    data l_leadmatnr type /bi0/oileadmatnr.

    select single leadmatnr into l_leadmatnr

      from /bic/app_d11000

      where prodorder = source_fields-prodorder

        and plant = source_fields-plant.

     result = l_leadmatnr.

ZTEC_DATE技术完成时间

去PP_D110关联订单的技术完成时间

    data l_ztec_date type /bic/oiztec_date.

    select single /bic/ztec_date into l_ztec_date

      from /bic/app_d11000

      where prodorder = source_fields-prodorder

        and plant = source_fields-plant.

     result = l_ztec_date.

0LEADPRODNR汇总制造订单的标题

去PP_D110关联订单的的LEADPRODNR

    data l_leadprodnr type /bi0/oileadprodnr.

    select single leadprodnr into l_leadprodnr

      from /bic/app_d11000

      where prodorder = source_fields-prodorder

        and plant = source_fields-plant.

     result = l_leadprodnr.

CO_D120:

物料估价:

价格(写入优化的)

CO_D120是写优化DSO,其结构如下:

5.1.1.5DTP

在0CO_PC_ACT_05到CO_D120的数据加载中,在DTP没有加过滤,提取模式是DELTA:

5.1.1.6转换

没有开始和结束例程,也没有转换例程,转换规则如下:

Level2EDW层设计

CO_D210:

大订单入库数量汇总

CO_D210结构如下:

5.1.1.7DTP:

DTP里没有加任何过滤,提取方式是DELTA:

5.1.1.8转换ODSOCO_D110->ODSOCO_D210

5.1.1.8.1开始例程:

CO_D210存储大订单的累积入库量及理论入库量,该DSO不区分月份,将同一定在在不同月的数据入库量做合计,得到一个订单的累计入库值;理论量由于只有在第一个月存在值,其后月份为0,故也是采用合计模式;该累计值和理论值是为后面的计算比率做准备。

*-- 过滤小订单,并且只保留成本要素为产成品的记录

data:

 zpack type _ty_s_sc_1.

data:

 zlin like zpack.

*--删除非顶正的记录

    delete source_package where ( plant <> 'CTZ1' and plant <> 'TTZ1'

    and plant <> 'ZTS1' and plant <> 'ZTZ1' ).

    loop at source_package into zlin.

       if zlin-prodorder <> zlin-leadprodnr or zlin-costelmnt <>

       '9000002004'.

         delete source_package.

       endif.

    endloop.

转换规则如下图:

5.1.1.8.2实际入库量例程:

取报告的值类型=10的数量作为实际入库数量

*-- 改字段记录的是实际发生值(根据VTYPE=010来判断)。

*-- 由于源数据记录的是入库,数据为负数,所以乘以-1

    if source_fields-vtype = 010.

     result = -1 * source_fields-quantity.

    else.

     result = 0.

    endif.

5.1.1.8.3理论入库量例程:

取报告的值类型=20的数量作为理论入库数量

*-- 改字段记录的是理论发生值(根据VTYPE=020来判断)。

*-- 由于源数据记录的是入库,数据为负数,所以乘以-1

    if source_fields-vtype = 20.

     result = -1 * source_fields-quantity.

    else.

     result = 0.

    endif.

CO_D220:

大订单物料消耗数量,费用金额汇总

该DSO存储的原物料消耗的累计数量及费用金额及理论数据,不需要用月份区分,CO_D220与CO_D210功能相似;分别记录的是原材料消耗累计及成品产出累计;为计算成本做准备;

CO_D220结构如下:

5.1.1.9DTP:

DTP里没有加任何过滤,提取方式是DELTA:

5.1.1.10转换ODSOCO_D110->ODSOCO_D220:

5.1.1.10.1开始例程:

    delete source_package where  piobjsv = ''.

*    DELETE SOURCE_PACKAGE WHERE  FISCPER < '2007011' OR ( FISCPER <

*    '2008011' AND FISCPER > '2008006' ).

*--删除非顶正的记录

    delete source_package where ( plant <> 'CTZ1' and plant <> 'TTZ1'

    and plant <> 'ZTS1' and plant <> 'ZTZ1' ).

    data:

 zpack type _ty_s_sc_1.

    data:

 zlin like zpack.

    data:

 va_fiscper type /bi0/oifiscper .

*-- 删除不含费用类型(COSTELMNT+0(6) <>'690400')的大订单,删除大于当前月份的。

*-- 删除半成品的记录(zlin-MATERIAL = zlin-COMPONENT)

    loop at source_package into zlin.

      if ( zlin-prodorder = zlin-leadprodnr  and  zlin-costelmnt+0(6) <>

      '690400')  or zlin-material = zlin-component.

        delete source_package.

      endif.

    endloop.

转换规则如下图:

5.1.1.10.2实际源材料耗用量例程:

取报告的值类型=10的数量作为实际源材料耗用量

*-- 该字段是实际的生产投入量。

以010来判断VTYPE = 010

     if source_fields-vtype = 010.

       result = source_fields-quantity.

     else.

       result = 0.

     endif.

5.1.1.10.3理论源材料耗用量例程:

取报告的值类型=20的数量作为理论源材料耗用量

*-- 该字段为理论的生产投入量。

以020来判断VTYPE = 020

    if source_fields-vtype = 20.

     result = source_fields-quantity.

    else.

     result = 0.

    endif.

5.1.1.10.4实际制费金额例程:

取报告的值类型=20的金额作为实际制费金额

*-- 该字段是成本要素(制费)的实际金额。

以010来判断VTYPE = 010

     if source_fields-vtype = 10.

     result = source_fields-amount.

    else.

     result = 0.

    endif.

5.1.1.10.5理论制费金额例程:

取报告的值类型=20的金额作为理论制费金额

*-- 该字段是成本要素(制费)的理论金额。

以020来判断VTYPE = 020

    data:

 l_conf_act2 type /bi0/oiconf_act2.

    if source_fields-vtype = 20.

*-- Modified by Tiger 2009/11/27 ---------Begin -----

*-- 修改费用的理论值的计算公式:

理论金额/1000*投入量

      if  source_fields-costelmnt+0(6) = '690400'.

        select single conf_act2 into l_conf_act2 from /bic/app_d13000

          where plant = source_fields-plant and

                prodorder = source_fields-prodorder .

        result = source_fields-amount / 1000 * l_conf_act2 .

      else.

*-- Modified by Tiger 2009/11/27 ---------End -----

        result = source_fields-amount.

      endif.

    else.

      result = 0.

    endif.

CO_D230:

大订单入库数量按月

CO_D230用来根据月份计算产成品每月入库量,并且从CO_D210中读取成品的理论量及实际量,所以CO_D230的加载一定要在CO_D210之后完成;并且CO_D230中根据技术完成日期判断订单已结\未结状态;以便后续加载计算比率;

CO_D230结构如下:

5.1.1.11DTP:

DTP里没有加任何过滤,提取方式是DELTA:

5.1.1.12转换ODSOCO_D110->ODSOCO_D230:

5.1.1.12.1开始例程:

    data:

 zpack type _ty_s_sc_1.

    data:

 zlin like zpack.

*    BREAK-POINT .

*--删除非顶正的记录

    delete source_package where ( plant <> 'CTZ1' and plant <> 'TTZ1'

    and plant <> 'ZTS1' and plant <> 'ZTZ1' ).

*--删除所有的小订单zlin-PRODORDER <> zlin-LEADPRODNR

*--删除非产成品zlin-COSTELMNT <> '9000002004'

*--删除非实际值zlin-VTYPE <> 10

    loop at source_package into zlin.

      if zlin-prodorder <> zlin-leadprodnr or

      zlin-costelmnt <> '9000002004' or zlin-vtype <> 10 or

      zlin-component = ''.

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1