资源描述
SAP BI 项目
PP模块ETL设计说明书
目前版本:
拥有者:
最终更新日期:
最终更新者:
作者:
创建日期:
同意者:
同意日期:
修订历史
版本号
更新日期
修订作者
关键改变描述
目录
1. 概述 6
2. ETL系统架构设计 7
2.1 模型ETL系统逻辑架构 7
3. 主数据工厂物料模型设计 8
3.1 工厂物料模型架构 8
3.2 自定义数据源说明 8
3.3 模型字段及ETL数据流 8
3.3.1 数据源 0MAT_PLANT_ATTR – 特征 ZPLANT_M. 9
3.3.2 数据源 ZBW_PP_ZTEC - 特征 ZPLANT_M 11
3.3.3 数据源 ZBW_PP_ZTHI - 特征 ZPLANT_M 12
3.3.4 数据源 ZMBEW - 特征 ZPLANT_M 14
3.3.5 数据源 0MAT_PLANT_TEXT - 特征 ZPLANT_M 14
4. 投入产出模型设计 15
4.1 投入产出模型架构 15
4.2 数据源增强及自定义数据源说明 16
4.3 模型字段及ETL数据流 18
4.3.1 数据源 2LIS_04_P_MATNR - ODS PP_D110 19
4.3.2 数据源 ZAUFK -- ODSO PP_D110 20
4.3.3 ODS PP_D110 - ODS PP_D202 21
4.3.4 ODS PP_D202 - ODS PP_D210 25
4.3.5 ODS PP_D210 - CUBE PP_IC310 25
4.3.6 数据源 2LIS_03_BF - ODS MM_D131 26
4.3.7 ODS MM_D131 -ODS PP_D191 28
4.3.8 ODS PP_D191 - ODS PP_D201 29
4.3.9 ODS PP_D201 - ODS PP_D210 33
4.3.10 数据源 2LIS_04_P_ARBPL - ODS PP_D130 34
4.3.11 数据源 ZBOM - ODS PP_D150 36
4.3.12 数据源 ZCPV - ODS PP_D160 36
4.3.13 数据源 2LIS_11_VAITM - ODS SD_D110 37
4.3.14 ODS SD_D110 - ODS PP_D192 39
5. 物耗模型设计 41
5.1 物耗模型架构 41
5.2 数据源增强说明 41
5.3 模型字段及ETL数据流 42
5.3.1 数据源 2LIS_04_P_COMP - ODS PP_D120 43
5.3.2 ODS PP_D120 -ODS PP_D220 44
5.3.3 ODS PP_D220 - CUBE PP_IC320 46
6. PP数据装载步骤 47
1. 概述
本项目ETL部分关键功效就是根据本设计说明书架构,将数据由数据源系统(SAP R3)加载到数据仓库(SAP BW)中。其实现困难在于ETL工作将面临复杂源数据环境,包含多个R3标准数据源和增强结构、繁多数据种类、巨大加载数据量、错综复杂数据关系和参差不齐数据质量,这些全部使ETL架构和应用设计面临相当挑战。
经过高效ETL系统结构、层次化应用功效划分和BW标准元素,ETL系统和应用架构设计需要能够达成以下目标:
Ø 支持在此框架下实现BW数据仓库所需要ETL功效;
Ø 支持在要求时间窗口内能够完成数据加载工作,即需要满足日常数据加载性能需求;
Ø 能够支持有效应用程序开发模式,提升开发效率,尽可能降低应用开发成本;
Ø 降低系统维护复杂性,支持后续增加新数据或功效开发工作。
ETL设计说明书为ETL开发提供指导,着重叙述数据仓库系统ETL系统架构、功效和实施过程,其中包含了关键数据转换过程和包含到用户化例程说明。
ETL过程依靠于源数据准备就绪,本设计说明书同时也列出了模块所对应SAP标准数据源和主数据数据源。
因为ETL复杂性,本设计尝试从多个层面进行说明,期望能够尽可能回复开发过程中所面临问题达成指导开发目标,但实际开发过程中,开发人员仍然可能碰到设计说明书没有包含问题,所以,遵照设计基础思想,经过开发人员反馈,在开发过程中不停地完善和修正设计,对于ETL开发是很关键。对于任何ETL开发过程中碰到技术问题,开发人员需要和设计人员协商讨论,以快速处理问题,确保开发顺利进行。
而同时,为确保ETL系统架构完整、统一、程序可维护性和开发可管理性,对设计修改必需得到控制,关键变动必需经过版本管理步骤来协调进行。
本设计说明书将包含以下部分:
Ø 架构设计:设计对应模块ETL系统逻辑架构和分析数据流。
Ø ETL过程说明:包含ETL过程包含到各步骤说明,如信息包更新机制,转换过程中包含到特定例程控制,DTP实施和更新机制等等。
Ø 数据加载步骤:说明了对于本模块而言在运行特定步骤之前需满足条件。
2. ETL系统架构设计
2.1 模型ETL系统逻辑架构
上图是ETL系统逻辑架构。从宏观设计上,历史数据、初始数据加载和日常数据加载ETL全部将根据此架构设计。该架构将ETL作为一个整体来设计。
对于数据仓库加载,ETL分为数据抽取(Extract)、数据转换(Transform)和数据加载(Load)3个阶段。
3. 主数据工厂物料模型设计
3.1 工厂物料模型架构
3.2 自定义数据源说明
ZBW_PP_ZTHI 分切、瓶标等参数表 起源于R3ZTHI表
ZBW_PP_ZTEC 指示单资料基础资料 起源于R3ZTEC表
ZMBEW 物料最新未来价格3 起源于R3ZMBEW视图
3.3 模型字段及ETL数据流
总说明:对于没有做尤其说明DTP,默认是无过滤条件DELTA方法DTP。
因为目标是主数据,所以全部更新全部是覆盖。
3.3.1 数据源 0MAT_PLANT_ATTR – 特征 ZPLANT_M.
(1)0PROD_HIER字段例程:关联0MATERIAL(/BI0/PMATERIAL)取得物料层次码。
DATA Z_PROD_HIER TYPE /BI0/OIPROD_HIER.
SELECT SINGLE PROD_HIER INTO Z_PROD_HIER FROM /BI0/PMATERIAL WHERE
MATERIAL = SOURCE_FIELDS-MATNR.
RESULT = Z_PROD_HIER.
(2)DTP使用full方法DTP,原因是0PROD_HIER需要关联0MATERIAL特征。
3.3.2 数据源 ZBW_PP_ZTEC - 特征 ZPLANT_M
3.3.3 数据源 ZBW_PP_ZTHI - 特征 ZPLANT_M
(1)ZDITEM字段例程:对源数据进行是否数字判定,假如其中含有字母,则置为0。
IF SOURCE_FIELDS-DITEM CN '. '.
RESULT = 0.
ELSE.
RESULT = SOURCE_FIELDS-DITEM.
ENDIF.
(2)ZDDWID字段例程:对源数据进行是否数字判定,假如其中含有字母,则置为0。
IF SOURCE_FIELDS-DDWID CN '. '.
RESULT = 0.
ELSE.
RESULT = SOURCE_FIELDS-DDWID.
ENDIF.
3.3.4 数据源 ZMBEW - 特征 ZPLANT_M
3.3.5 数据源 0MAT_PLANT_TEXT - 特征 ZPLANT_M
4. 投入产出模型设计
4.1 投入产出模型架构
其中,左边2LIS_04_P_MATNR,PP_D110,PP_D202,PP_D210,PP_IC310这条线是按技术完成日期来看生产订单投入和产出。
右边2LIS_03_BF MM_D131 PP_D191 PP_D201,PP_D210,PP_IC310 这条线是按过账日期来看生产订单产量、产值、千平米数。
以上两条线汇总到PP_D210时,使用“时间类型”字段来区分,技术日期时间类型等于“101”,过账日期时间类型等于“102”。
而PP_D130,PP_D150,PP_D160,PP_D192会在以上两条线routine中被使用。
此模型能够为顶正_产值情况表、顶正_生产情况表提供数据。结合这两张报表需求文档,将能更清楚了解本模型。
4.2 数据源增强及自定义数据源说明
1:数据源增强
(1) 2LIS_04_P_MATNR增强了
ZZDEL_FLAG 删除标志
ZZIDAT2 技术完成日期
增强代码以下:
WHEN '2LIS_04_P_MATNR'.
LOOP AT C_T_DATA into L_PP_MATNR.
L_TABIX = SY-TABIX.
SELECT SINGLE IDAT2 LOEKZ INTO (L_PP_MATNR-ZZIDAT2,L_PP_MATNR-ZZDEL_FLAG) FROM AUFK WHERE AUFNR = L_PP_MATNR-AUFNR.
MODIFY C_T_DATA FROM L_PP_MATNR INDEX L_TABIX.
CLEAR L_TABIX.
CLEAR L_PP_MATNR.
ENDLOOP.
(2) 2LIS_04_P_ARBPL增强了
ZZDEL_FLAG3 删除标志
ZZIDAT2 技术完成日期
增强代码以下:
WHEN '2LIS_04_P_ARBPL'.
LOOP AT C_T_DATA INTO L_PP_ARBPL.
L_TABIX = SY-TABIX.
SELECT SINGLE IDAT2 LOEKZ INTO (L_PP_ARBPL-ZZIDAT2,L_PP_ARBPL-ZZDEL_FLAG3) FROM AUFK WHERE AUFNR = L_PP_ARBPL-AUFNR.
MODIFY C_T_DATA FROM L_PP_ARBPL INDEX L_TABIX.
CLEAR L_TABIX.
CLEAR L_PP_ARBPL.
ENDLOOP.
(3) 2LIS_03_BF增强了 ZZMAUFNR_IND 是否大订单或三科订单标识
增强代码以下:
WHEN '2LIS_03_BF'.
LOOP AT C_T_DATA INTO L_MM_03BF.
L_TABIX = SY-TABIX.
IF L_MM_03BF-AUFNR <> ''.
SELECT SINGLE MAUFNR INTO ZMAUFNR FROM AFKO WHERE AUFNR = L_MM_03BF-AUFNR AND PLNBEZ = L_MM_03BF-MATNR.
if sy-subrc = 0.
IF ZMAUFNR = ''.
L_MM_03BF-ZZMAUFNR_IND = 'Y'.
MODIFY C_T_DATA FROM L_MM_03BF INDEX L_TABIX.
ENDIF.
ENDIF.
ENDIF.
CLEAR L_TABIX.
CLEAR L_MM_03BF.
ENDLOOP.
2:自定义数据源
(1)ZBOM BOM父子件 来自于R3系统ZBOM视图。
(2)ZCPV 半成品裁切单:销售单信息 来自于R3系统ZCPV表。
(3)ZAUFK生产订单主数据:生产订单信息,来自于R3系统AUFK表。
4.3 模型字段及ETL数据流
总说明:对于没有做尤其说明DTP,默认是无过滤条件DELTA方法DTP。
4.3.1 数据源 2LIS_04_P_MATNR - ODS PP_D110
(1)0NO_PRODORD字段例程:依据数据源中ROCANCEL(取消标识符)来统计订单数。
IF SOURCE_FIELDS-ROCANCEL = ' '.
RESULT = '1'.
ELSE.
RESULT = '-1'.
ENDIF.
4.3.2 数据源 ZAUFK -- ODSO PP_D110
DTP里限制了企业代码:
只抽CTZ、THS、TQS、TSX、TTF、TTS、TTZ、ZHS、ZTF、ZTZ企业数据。
4.3.3 ODS PP_D110 - ODS PP_D202
上面是标准组转换,还有技术组转换以下:
说明:
(1)开始例程:DELETE SOURCE_PACKAGE where PARENTNR <> ''.删除掉PARENTNR(大订单号)不为空数据,也就是删除掉全部小订单,留下大定单或三科订单。
(2)0WITHDRWQTY字段例程:
TYPES:
BEGIN OF Z_TYPE,
WORKCENTER TYPE /BI0/OIWORKCENTER, "工作中心
CONF_ACT2 TYPE /BI0/OICONF_ACT2, "投入量
END OF Z_TYPE.
DATA Z_TAB TYPE TABLE OF Z_TYPE .
DATA Z_REC TYPE Z_TYPE.
DATA: Z_CONF_ACT2 TYPE /BI0/OICONF_ACT2.
DATA: Z_WORKCENTER TYPE /BI0/OIWORKCENTER.
SELECT WORKCENTER CONF_ACT2 INTO CORRESPONDING FIELDS OF TABLE Z_TAB
FROM
/BIC/APP_D13000 WHERE PARENTNR = SOURCE_FIELDS-PRODORDER AND COMP_CODE
= SOURCE_FIELDS-COMP_CODE AND CONF_ACT2 <> 0. " 取大订单下有投入量小订单工作中心和投入量
IF ( SY-SUBRC = 0 ).
SORT Z_TAB BY WORKCENTER. "对取得小订单按工作中心排序,由小到大
READ TABLE Z_TAB INTO Z_REC INDEX 1. "取最小工作中心小订单投入量为最终投入量
Z_CONF_ACT2 = Z_REC-CONF_ACT2 .
ELSE.
SELECT WORKCENTER CONF_ACT2 INTO CORRESPONDING FIELDS OF TABLE Z_TAB
FROM
/BIC/APP_D13000 WHERE PRODORDER = SOURCE_FIELDS-PRODORDER AND COMP_CODE
= SOURCE_FIELDS-COMP_CODE AND CONF_ACT2 <> 0. "取三科订单工作中心和投入量
SORT Z_TAB BY WORKCENTER.
READ TABLE Z_TAB INTO Z_REC INDEX 1.
Z_CONF_ACT2 = Z_REC-CONF_ACT2 .
ENDIF.
RESULT = Z_CONF_ACT2.
关联PP_D130(/BIC/APP_D13000)数据,取得大订单或三科订单下各工作中心投入量,首先一科投入量为最终投入量,假如一科没有值,则顺取二科、三科值。
(3)Z_G_QTY字段例程:
DATA: Z_MENGE TYPE /BI0/OIREQMTSQTY. “子件数量
DATA: Z_BMENG TYPE /BIC/OIZAUSCH. “父件数量
DATA: Z_G_QTY TYPE /BIC/OIZ_G_QTY. “缴库量(R/S)
TYPES:
BEGIN OF Z_TYPE,
/BIC/Z_BOM_NO TYPE /BIC/OIZ_BOM_NO,
/BIC/ZZMENGE TYPE /BI0/OIREQMTSQTY,
/BIC/ZZBMENG TYPE /BIC/OIZAUSCH,
END OF Z_TYPE.
DATA Z_TAB TYPE TABLE OF Z_TYPE .
DATA Z_REC TYPE Z_TYPE.
SELECT /BIC/Z_BOM_NO /BIC/ZZMENGE /BIC/ZZBMENG INTO CORRESPONDING FIELDS
OF TABLE Z_TAB FROM
/BIC/APP_D15000
WHERE MATERIAL = SOURCE_FIELDS-MATERIAL AND PLANT = SOURCE_FIELDS-PLANT
AND UNIT = 'R/S'.
IF ( SY-SUBRC = 0 ).
SORT Z_TAB BY /BIC/Z_BOM_NO.
READ TABLE Z_TAB INTO Z_REC INDEX 1.
Z_MENGE = Z_REC-/BIC/ZZMENGE.
Z_BMENG = Z_REC-/BIC/ZZBMENG.
Z_G_QTY = SOURCE_FIELDS-GR_QTY * ( Z_MENGE / Z_BMENG ).
ELSE.
Z_G_QTY = 0.
ENDIF.
RESULT = Z_G_QTY.
关联PP_D150(/BIC/APP_D15000),取得物料BOM项目号最小父子件数量百分比,来计算出缴库量(R/S)。
(4)0RECORDMODE字段公式:IF( /BIC/Z_D_FLG = 'X', 'D', '' ) 源数据Z_D_FLG(删除标识)字段假如为’X’,则结果为’D’,这么就会删除掉对应订单。
(5)DTP说明:只取三家企业:CTZ, TTZ,ZTZ数据,同时过滤掉订单类型等于PP09(虚拟订单)数
据。
4.3.4 ODS PP_D202 - ODS PP_D210
4.3.5 ODS PP_D210 - CUBE PP_IC310
说明:因为目标是CUBE,所以所以关键值(key figure)更新全部应该是累计。
4.3.6 数据源 2LIS_03_BF - ODS MM_D131
说明:因为目标DSO是写优化DSO,所以新入数据全部是插入到目标DSO中,不会影响旧有数据。
4.3.7 ODS MM_D131 -ODS PP_D191
(1)0GR_QTY字段计算公式为:IF( MOVETYPE = '101', 1, 1- ) * QUANT_B
(2)DTP过滤条件:
企业代码选择为:CTZ,TTZ, ZTZ三个,移动类型为101和102。
4.3.8 ODS PP_D191 - ODS PP_D201
(1)0WORKCENTER字段例程:关联PP_D130取得订单工作中心。
DATA: Z_WORKCENTER TYPE /BI0/OIWORKCENTER.
SELECT SINGLE WORKCENTER INTO Z_WORKCENTER
FROM
/BIC/APP_D13000 WHERE PRODORDER = SOURCE_FIELDS-PRODORDER AND COMP_CODE
= SOURCE_FIELDS-COMP_CODE.
RESULT = Z_WORKCENTER.
(2)ZPRD_AMT字段例程:关联PP_D192取得各订单对应销售订单销售金额、销售数量,销售单位和物料基础单位比值,以取得销售单价,最终用生产订单缴库量乘于销售单价,取得产值。
DATA: Z_CML_OR_QTY TYPE /BI0/OICML_OR_QTY. 销售数量
DATA: Z_NET_VALUE TYPE /BI0/OINET_VALUE. 销售金额
DATA: Z_NUMERATOR TYPE /BI0/OINUMERATOR. 销售单位转换为基础单位因子
DATA: Z_NUMERATORZ TYPE /BI0/OINUMERATORZ. 基础单位因子
DATA: Z_PRD_AMT TYPE /BIC/OIZPRD_AMT.
DATA: Z_PRICE TYPE P DECIMALS 2.
SELECT SINGLE CML_OR_QTY NET_VALUE NUMERATOR NUMERATORZ INTO
(Z_CML_OR_QTY, Z_NET_VALUE, Z_NUMERATOR, Z_NUMERATORZ)
FROM /BIC/APP_D19200 WHERE DOC_NUMBER = SOURCE_FIELDS-DOC_NUMBER AND
S_ORD_ITEM = SOURCE_FIELDS-S_ORD_ITEM.
IF ( SY-SUBRC = 0 ) AND ( Z_NUMERATORZ <> 0 ) AND ( Z_CML_OR_QTY <> 0 )
AND ( Z_NUMERATORZ <> '' ) AND ( Z_CML_OR_QTY <> '' ). 避免去数为零
Z_PRICE = Z_NET_VALUE / Z_CML_OR_QTY.
Z_PRD_AMT = SOURCE_FIELDS-GR_QTY * Z_PRICE * (
Z_NUMERATOR / Z_NUMERATORZ ).
ELSE.
Z_PRD_AMT = ''.
ENDIF.
RESULT = Z_PRD_AMT.
(3)Z_G_QTY字段例程:关联PP_D150(/BIC/APP_D15000),取得物料BOM项目号最小父子件数量百分比,来取得缴库量(R/S)。
DATA: Z_MENGE TYPE /BI0/OIREQMTSQTY. “子件数量
DATA: Z_BMENG TYPE /BIC/OIZAUSCH. “父件数量
DATA: Z_G_QTY TYPE /BIC/OIZ_G_QTY. “缴库量(R/S)
TYPES:
BEGIN OF Z_TYPE,
/BIC/Z_BOM_NO TYPE /BIC/OIZ_BOM_NO,
/BIC/ZZMENGE TYPE /BI0/OIREQMTSQTY,
/BIC/ZZBMENG TYPE /BIC/OIZAUSCH,
END OF Z_TYPE.
DATA Z_TAB TYPE TABLE OF Z_TYPE .
DATA Z_REC TYPE Z_TYPE.
SELECT /BIC/Z_BOM_NO /BIC/ZZMENGE /BIC/ZZBMENG INTO CORRESPONDING FIELDS
OF TABLE Z_TAB FROM
/BIC/APP_D15000
WHERE MATERIAL = SOURCE_FIELDS-MATERIAL AND PLANT = SOURCE_FIELDS-PLANT
AND UNIT = 'R/S'.
IF ( SY-SUBRC = 0 ).
SORT Z_TAB BY /BIC/Z_BOM_NO.
READ TABLE Z_TAB INTO Z_REC INDEX 1.
Z_MENGE = Z_REC-/BIC/ZZMENGE.
Z_BMENG = Z_REC-/BIC/ZZBMENG.
Z_G_QTY = SOURCE_FIELDS-GR_QTY * ( Z_MENGE / Z_BMENG ).
ELSE. Z_G_QTY = 0.
ENDIF.
RESULT = Z_G_QTY.
(4)0CURRENCY字段例程:关联PP_D192来取得CURRENCY。
DATA: Z_DOC_CURRCY TYPE /BI0/OIDOC_CURRCY.
SELECT SINGLE DOC_CURRCY INTO Z_DOC_CURRCY
FROM /BIC/APP_D19200 WHERE DOC_NUMBER = SOURCE_FIELDS-DOC_NUMBER AND
S_ORD_ITEM = SOURCE_FIELDS-S_ORD_ITEM.
RESULT = Z_DOC_CURRCY.
(5)ZKM2字段例程:
DATA: Z_MENGE TYPE /BI0/OIREQMTSQTY.
DATA: Z_BMENG TYPE /BIC/OIZAUSCH.
DATA: Z_G_QTY TYPE /BIC/OIZ_G_QTY.
TYPES:
BEGIN OF Z_TYPE,
/BIC/Z_BOM_NO TYPE /BIC/OIZ_BOM_NO,
/BIC/ZZMENGE TYPE /BI0/OIREQMTSQTY,
/BIC/ZZBMENG TYPE /BIC/OIZAUSCH,
END OF Z_TYPE.
DATA Z_TAB TYPE TABLE OF Z_TYPE .
DATA Z_REC TYPE Z_TYPE.
SELECT /BIC/Z_BOM_NO /BIC/ZZMENGE /BIC/ZZBMENG INTO CORRESPONDING FIELDS
OF TABLE Z_TAB FROM
/BIC/APP_D15000
WHERE MATERIAL = SOURCE_FIELDS-MATERIAL AND PLANT = SOURCE_FIELDS-PLANT
AND UNIT = 'R/S'.
IF ( SY-SUBRC = 0 ).
SORT Z_TAB BY /BIC/Z_BOM_NO.
READ TABLE Z_TAB INTO Z_REC INDEX 1.
Z_MENGE = Z_REC-/BIC/ZZMENGE.
Z_BMENG = Z_REC-/BIC/ZZBMENG.
Z_G_QTY = SOURCE_FIELDS-GR_QTY * ( Z_MENGE / Z_BMENG ).
ELSE. Z_G_QTY = 0.
ENDIF.
DATA Z_KM2 TYPE /BIC/OIZKM2. "裁切单上订单千平米数
DATA: Z_PROD_HIER TYPE /BI0/OIPROD_HIER. "产品层次
DATA: Z_EEDIS TYPE /BIC/OIZ_EEDIS. " 电眼间距
DATA: Z_DITEM TYPE /BIC/OIZDITEM. "条数
DATA: Z_DDWID TYPE /BIC/OIZDDWID. " 裁切宽度(单卷膜宽)
IF SOURCE_FIELDS-MATERIAL+0(3) = '42P'. "判定是裁切单物料
SELECT SINGLE /BIC/ZKM2 INTO Z_KM2 FROM /BIC/APP_D16000 WHERE PRODORDER
= SOURCE_FIELDS-PRODORDER.
RESULT = Z_KM2.
ELSE.
SELECT SINGLE PROD_HIER /BIC/Z_EEDIS /BIC/ZDITEM /BIC/ZDDWID INTO
(Z_PROD_HIER,Z_EEDIS,Z_DITEM,Z_DDWID)
FROM /BIC/PZPLANT_M WHERE /BIC/ZPLANT_M = SOURCE_FIELDS-MATERIAL AND
PLANT = SOURCE_FIELDS-PLANT.
IF Z_PROD_HIER+0(10) = ''. "判定是碗盖
RESULT = Z_EEDIS * Z_EEDIS * SOURCE_FIELDS-GR_QTY / .
ELSE.
RESULT = Z_DITEM * Z_DDWID * Z_G_QTY / 1000.
ENDIF.
ENDIF.
先关联PP_D160取得裁切订单千平米数,然后再关联工厂物料(ZPLANT_M),依据物料层次码来判定是否碗盖,计算碗盖物料订单千平米数,最终计算通常物料订单千平米数。
(6)注意到对目标DSO关键值更新全部全部是覆盖方法。
(7)DTP采取是完全更新。之所以在这里采取完全更新,并覆盖目标DSO关键值,是因为在计算ZPRD_AMT产值字段时要用到销售订单数据,而销售订单金额、数量可能会改变,所以,为了数据完整性,每次均重新取销售订单数据,重新计算销售价格,以确保产值正确性。
4.3.9 ODS PP_D201 - ODS PP_D210
(1)开始例程:
Delete SOURCE_PACKAGE where /BIC/ZPRD_AMT = 0.
过滤掉产值为0数据。
4.3.10 数据源 2LIS_04_P_ARBPL - ODS PP_D130
4.3.11 数据源 ZBOM - ODS PP_D150
4.3.12 数据源 ZCPV - ODS PP_D160
(1)ZKM2字段计算公式:ZKMIL / 1,000
4.3.13 数据源 2LIS_11_VAITM - ODS SD_D110
说明:因为目标DSO是写优化DSO,所以新入数据全部是插入到目标DSO中,不会影响旧有数据。
4.3.14 ODS SD_D110 - ODS PP_D192
5. 物耗模型设计
5.1 物耗模型架构
此模型为顶正_物耗汇总分析报表提供数据,结合此报表需求文档,将能更清楚了解本模型。
5.2 数据源增强说明
2LIS_04_P_COMP增强了以下字段:
ZJSWCSJ 技术完成日期
ZZAUSCH 部件废品百分数
ZZBWART 移动类型(库存管理)
ZZDEL_FLAG2 删除标志
增强代码以下:
WHEN '2LIS_04_P_COMP'.
LOOP AT C_T_DATA into L_PP_COMP.
L_TABIX = SY-TABIX.
SELECT SINGLE IDAT2 LOEKZ INTO (L_PP_COMP-ZJSWCSJ,L_PP_COMP-ZZDEL_FLAG2) FROM AUFK WHERE AUFNR = L_PP_COMP-AUFNR.
SELECT SINGLE B~AUSCH B~BWART INTO (L_PP_COMP-ZZAUSCH,L_PP_COMP-ZZBWART) FROM AFKO AS A
JOIN RESB AS B ON A~RSNUM = B~RSNUM
WHERE A~AUFNR = L_PP_COMP-AUFNR AND B~MATNR = L_PP_COMP-IDNRK.
MODIFY C_T_DATA FROM L_PP_COMP INDEX L_TABIX.
CLEAR L_TABIX.
CLEAR L_PP_COMP.
ENDLOOP.
5.3 模型字段及ETL数据流
总说明:对于没有做尤其说明DTP,默认是无过滤条件DELTA方法DTP。
5.3.1 数据源 2LIS_04_P_COMP - ODS PP_D120
(1)0LEADMATNR字段例程:关联PP_D110取得大订单物料号。
DATA l_LEADMATNR TYPE /BI0/OILEADMATNR.
SELECT SINGLE LEADMATNR INTO l_LEADMATNR
FROM /bic/APP_D11000
WHERE prodorder = SOURCE_FIELDS-LEAD_AUFNR
AND comp_code = SOURCE_FIELDS-BUKRS.
RESULT = l_LEADMATNR.
(2)Z_B_FLAG字段例程:关联PP_D110判定订单是否是大订单。
DATA Z_FLAG TYPE /BIC/OIZ_B_FLAG.
DATA Z_PARENTNR TYPE /BI0/OIPARENTNR.
SELECT SINGLE PARENTNR INTO Z_PARENTNR
FROM /bic/APP_D11000
WHERE PARENTNR = SOURCE_FIELDS-AUFNR
AND comp_code = SOURCE_FIELDS-BUKRS.
IF ( SY-SUBRC = 0 ) .
Z_FLAG = 'Y'.
ELSE.
Z_FLAG = 'N'.
ENDIF.
RESULT = Z_FLAG.
5.3.2 ODS PP_D120 -ODS PP_D220
上面是标准组转换,还有技术组转换以下:
(1)开始例程:
Delete SOURCE_PACKAGE where MOVETYPE = '531'.
Delete SOURCE_PACKAGE where MOVETYPE = '532'.
Delete SOURCE_PACKAGE where /BIC/ZTEC_DATE = '00000000'.
Delete SOURCE_PACKAGE where COMPONENT = ''.
data: zpack TYPE _ty_s_SC_1.
data: Z_DATA LIKE zpack.
DATA: Z_WORKCENTER TYPE /BI0/OIWORKCENTER.
LOOP AT SOURCE_PACKAGE INTO Z_DATA.
SELECT SINGLE WORKCENTER INTO Z_WORKCENTER FROM /BIC/APP_D13000
WHERE COMP_CODE = Z_DATA-COMP_CODE AND PLANT = Z_DATA-PLANT AND
PRODORDER = Z_DATA-PRODORDER.
IF Z_WORKCENTER = '' AND Z_DATA-PARENTNR = ''.
Delete
展开阅读全文