BW project CO ETL设计说明书Word格式文档下载.docx
《BW project CO ETL设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《BW project CO ETL设计说明书Word格式文档下载.docx(74页珍藏版)》请在冰点文库上搜索。
数据加载流程:
说明了对于本模块而言在运行特定步骤之前需满足的条件。
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
from
/bi0/pcust_sales
where
cust_sales
=
source_fields-cust_sales
and
price_list
<
>
'
.
if
sy-subrc
0.
result
l_distr_chan.
else.
endif.
⏹部门
根据客户编号去客户编号(销售视图)的属性表/bi0/pcust_sales找到部门
l_division
/bi0/oidivision.
division
l_division.
5.COPC-顶正单位成本模型设计
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'
*....
*--获取上个月的增量数据
DATA
:
FISCPER(7)
TYPE
C
LASTDATE
D
YEAR(6)
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
MODIFY
INDEX
L_IDX.
P_SUBRC
5.1.1.20CO_PC_ACT_05
包含初始化信息包和增量信息包
抽取ZTZQ、ZTZ、ZTF、ZHS、TZC、TTZ、TTS、TTF、TSX、THS、CTZ这几个公司代码,2009.009之前的数据,因数据量大,分2个信息包抽取、完全更新方式
抽取上个月(ABAP程序控制)的数据,完全更新,此信息包放在处理链里。
l_idx
like
sy-tabix.
read
table
l_t_range
with
key
fieldname
modify
index
l_idx.
p_subrc
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
/bi0/oileadmatnr.
leadmatnr
l_leadmatnr
/bic/app_d11000
prodorder
source_fields-prodorder
and
plant
source_fields-plant.
l_leadmatnr.
ZTEC_DATE技术完成时间
去PP_D110关联订单的技术完成时间
l_ztec_date
/bic/oiztec_date.
/bic/ztec_date
l_ztec_date
l_ztec_date.
0LEADPRODNR汇总制造订单的标题
去PP_D110关联订单的的LEADPRODNR
l_leadprodnr
/bi0/oileadprodnr.
leadprodnr
l_leadprodnr
l_leadprodnr.
CO_D120:
物料估价:
价格(写入优化的)
CO_D120是写优化DSO,其结构如下:
5.1.1.5DTP
在0CO_PC_ACT_05到CO_D120的数据加载中,在DTP没有加过滤,提取模式是DELTA:
5.1.1.6转换
没有开始和结束例程,也没有转换例程,转换规则如下:
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,故也是采用合计模式;
该累计值和理论值是为后面的计算比率做准备。
*--
过滤小订单,并且只保留成本要素为产成品的记录
zpack
_ty_s_sc_1.
zlin
zpack.
*--删除非顶正的记录
delete
source_package
(
CTZ1'
TTZ1'
ZTS1'
ZTZ1'
).
loop
at
zlin.
zlin-prodorder
zlin-leadprodnr
or
zlin-costelmnt
9000002004'
source_package.
endloop.
转换规则如下图:
5.1.1.8.2实际入库量例程:
取报告的值类型=10的数量作为实际入库数量
*--
改字段记录的是实际发生值(根据VTYPE=010来判断)。
由于源数据记录的是入库,数据为负数,所以乘以-1
source_fields-vtype
010.
-1
*
source_fields-quantity.
5.1.1.8.3理论入库量例程:
取报告的值类型=20的数量作为理论入库数量
改字段记录的是理论发生值(根据VTYPE=020来判断)。
20.
CO_D220:
大订单物料消耗数量,费用金额汇总
该DSO存储的原物料消耗的累计数量及费用金额及理论数据,不需要用月份区分,CO_D220与CO_D210功能相似;
分别记录的是原材料消耗累计及成品产出累计;
为计算成本做准备;
CO_D220结构如下:
5.1.1.9DTP:
5.1.1.10转换ODSOCO_D110->
ODSOCO_D220:
5.1.1.10.1开始例程:
piobjsv
DELETE
SOURCE_PACKAGE
WHERE
2007011'
OR
2008011'
AND
2008006'
va_fiscper
/bi0/oifiscper
删除不含费用类型(COSTELMNT+0(6)
690400'
)的大订单,删除大于当前月份的。
删除半成品的记录(zlin-MATERIAL
zlin-COMPONENT)
zlin-costelmnt+0(6)
)
zlin-material
zlin-component.
5.1.1.10.2实际源材料耗用量例程:
取报告的值类型=10的数量作为实际源材料耗用量
该字段是实际的生产投入量。
以010来判断VTYPE
010
5.1.1.10.3理论源材料耗用量例程:
取报告的值类型=20的数量作为理论源材料耗用量
该字段为理论的生产投入量。
以020来判断VTYPE
020
5.1.1.10.4实际制费金额例程:
取报告的值类型=20的金额作为实际制费金额
该字段是成本要素(制费)的实际金额。
10.
source_fields-amount.
5.1.1.10.5理论制费金额例程:
取报告的值类型=20的金额作为理论制费金额
该字段是成本要素(制费)的理论金额。
l_conf_act2
/bi0/oiconf_act2.
Modified
by
Tiger
2009/11/27
---------Begin
-----
修改费用的理论值的计算公式:
理论金额/1000*投入量
source_fields-costelmnt+0(6)
conf_act2
/bic/app_d13000
source_fields-plant
source_fields-prodorder
source_fields-amount
/
1000
---------End
CO_D230:
大订单入库数量按月
CO_D230用来根据月份计算产成品每月入库量,并且从CO_D210中读取成品的理论量及实际量,所以CO_D230的加载一定要在CO_D210之后完成;
并且CO_D230中根据技术完成日期判断订单已结\未结状态;
以便后续加载计算比率;
CO_D230结构如下:
5.1.1.11DTP:
5.1.1.12转换ODSOCO_D110->
ODSOCO_D230:
5.1.1.12.1开始例程:
*--删除所有的小订单zlin-PRODORDER
zlin-LEADPRODNR
*--删除非产成品zlin-COSTELMNT
*--删除非实际值zlin-VTYPE
10
or
zlin-vtype
10
zlin-component