版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAPBI项目MM模块ETL设计说明书
当前版本:拥有者:最后更新日期:最后更新者:作者:创建日期:批准者:批准日期:修订历史版本号更新日期修订作者主要改变描述目录1. 概述 52. ETL系统架构设计 62.1 库存模型ETL系统逻辑架构 62.2 库存模型ETL数据流 72.2.1 日常库存及呆滞数据流 72.2.2 历史库存及呆滞数据流 82.2.3 数据源环境 83. 库存模型设计 103.1 PSA设计 103.2 Level1ODS层设计 113.3 Level2EDW层设计 143.3.1 库存数据 143.3.2 历史库存数据 353.3.3 顶正呆滞 583.4 Level3DM层设计 684. 采购模型设计 734.1 PSA设计 734.2 Level1DSO设计 734.3 Level2EDW设计 744.4 Level3DM设计 805. MM数据装载流程 83概述本项目ETL部分的核心功能就是按照本设计说明书的架构,将数据由数据源系统(SAPR3)加载到数据仓库(SAPBW)中。其实现的困难在于ETL工作将面临复杂的源数据环境,包括多种R3标准数据源和增强结构、繁多的数据种类、巨大的加载数据量、错综复杂的数据关系和参差不齐的数据质量,这些都使ETL的架构和应用设计面临相当的挑战。通过高效的ETL系统结构、层次化的应用功能划分和BW标准的元素,ETL系统和应用架构设计需要能够达到以下目标:支持在此框架下实现BW数据仓库所需要的ETL功能;支持在规定的时间窗口内能够完成数据加载工作,即需要满足日常数据加载的性能需求;能够支持有效的应用程序开发模式,提高开发效率,尽量减少应用开发成本;减少系统维护的复杂性,支持后续增加新数据或功能的开发工作。ETL设计说明书为ETL开发提供指导,着重叙述数据仓库系统ETL系统的架构、功能和实施过程,其中包含了主要数据转换过程以及涉及到的客户化例程的说明。ETL过程依赖于源数据的准备就绪,本设计说明书同时也列出了模块所对应的SAP标准数据源和主数据数据源。由于ETL的复杂性,本设计尝试从多个层面进行说明,希望能够尽可能回答开发过程中所面临的问题达到指导开发的目的,但实际开发过程中,开发人员仍然可能遇到设计说明书没有涉及的问题,因此,遵循设计的基本思想,通过开发人员的反馈,在开发的过程中不断地完善和修正设计,对于ETL的开发是非常重要的。对于任何ETL开发过程中遇到的技术问题,开发人员需要与设计人员协商讨论,以迅速解决问题,保证开发顺利进行。而同时,为保证ETL系统架构的完整、统一、程序的可维护性以及开发的可管理性,对设计的修改必须得到控制,重要的变动必须通过版本管理流程来协调进行。本设计说明书将包括以下部分:架构设计:设计对应模块ETL系统的逻辑架构以及分析数据流。ETL过程说明:包括ETL过程涉及到的各步骤说明,如信息包的更新机制,转换过程中涉及到的特定例程控制,DTP的执行和更新机制等等。数据加载流程:说明了对于本模块而言在运行特定步骤之前需满足的条件。ETL系统架构设计库存模型ETL系统逻辑架构上图是ETL系统逻辑架构。从宏观设计上,历史数据、初始数据加载和日常数据加载的ETL都将按照此架构设计。该架构将ETL作为一个整体来设计。对于数据仓库的加载,ETL分为数据抽取(Extract)、数据转换(Transform)以及数据加载(Load)3个阶段。库存模型ETL数据流日常库存及呆滞数据流历史库存及呆滞数据流数据源环境数据源全部由SAP系统提供,数据源包括两种类型业务数据数据源日常增量源数据:即物料凭证,2LIS_03_BF初始加载源数据:即库存初始化,2LIS_03_BX主数据数据源文本数据源属性数据源层次结构数据源库存模型设计PSA设计PSA数据源:库存模型的PSA业务数据源包含2LIS_03_BX及2LIS_03_BF,并且使用0CO_PC_ACT_1作为价格数据源,计算库存价值;数据源增强:2LIS_03_BF中增强了ZZMAUFNR_IND及UMLGO字段,ZZMAUFNR_IND用来判断是否是生产订单大订单,这个字段的用处是PP模型需要使用,不涉及库存模型计算;UMLGO表示收货库存地点;信息包:2LIS_03_BF信息包包含增量、全量及初始化信息包初始化信息包增量信息包全量信息包Level1ODS层设计MM_D131,库存管理的货物移动MM_D131是写优化DSO,其结构与PSA一样,存储最原始的货物移动,其结构如下:在2LIS_03_BF到MM_D131的数据加载中,在DTP中过滤了不必要的工厂代码,在过滤器中设置如下所示:MM_D160,库存管理的库存初始化初始化库存模型是写优化DSO,其结构与2LIS_03_BX保持一致,在数据2LIS_03_BX到MM_D160的数据加载中,无数据过滤;MM_D140,实际成本核算/物料分类账Level2EDW层设计库存数据MM_D223库存中间数据MM_D223从MM_D131加载数据,过滤掉其中库存种类为空的数据;该数据源存储的是物料移入移出的记录,并无特别计算;开始例程如下:DELETESOURCE_PACKAGEWHERESTOCKTYPE<>'A'ANDSTOCKTYPE<>'B'ANDSTOCKTYPE<>'C'ANDSTOCKTYPE<>'D'ANDSTOCKTYPE<>'F'ANDSTOCKTYPE<>'H'ANDSTOCKTYPE<>'Q'ANDSTOCKTYPE<>'R'ANDSTOCKTYPE<>'V'.ZFIR_DAY字段是系统库存初始化日期,从MM_D160读取,例程如下:SELECTSINGLEPSTNG_DATEINTORESULTFROM/BIC/AMM_D16000.MM_D227库存计算准备该DSO从MM_D223加载数据,他主要是记录各种类型每个月出入库的值,以便为后面的计算某月期末库存做准备;开始例程中过滤掉非计算期间的凭证数据;DATAWA_SCTYPE_TY_S_SC_1.DATA:L_DATETYPED.BREAK-POINT.LOOPATSOURCE_PACKAGEINTOWA_SC.CALLFUNCTION'FIMA_DATE_CREATE'EXPORTINGI_DATE=SY-DATUMI_MONTHS='-1'IMPORTINGE_DATE=L_DATE.CONCATENATEL_DATE+0(6)'01'INTOWA_SC-CALDAY.MODIFYSOURCE_PACKAGEFROMWA_SC.*Lizz将不再统计范围内的数据删除begin.IFWA_SC-CALDAY<=WA_SC-/BIC/ZFIR_DAY.IF(WA_SC-PSTNG_DATE+0(6)<WA_SC-CALDAY+0(6))OR(WA_SC-PSTNG_DATE>WA_SC-/BIC/ZFIR_DAY).DELETESOURCE_PACKAGE.ENDIF.ELSE.IF(WA_SC-PSTNG_DATE<WA_SC-/BIC/ZFIR_DAY)OR(WA_SC-PSTNG_DATE+0(6)>WA_SC-CALDAY+0(6)).DELETESOURCE_PACKAGE.ENDIF.ENDIF.*Lizz将不再统计范围内的数据删除end.ENDLOOP.DELETESOURCE_PACKAGEWHERESTOR_LOC=''.结束例程中过滤掉计算结果为0的数据;DELETERESULT_PACKAGEWHEREQUANTITY=0.MM_D223到MM_D227的转换包括多个技术组;技术组119的转换如下,用来计算期间段的销售数量,其转换例程:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6).CASESOURCE_FIELDS-MOVETYPE.WHEN'601'OR'602'OR'Z21'OR'Z22'OR'Z01'OR'Z51'OR'Z41'OR'Z42'.IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ENDIF.技术组120的转换如下,用来计算期间段的废料产生量,其转换例程:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE='FEIP'AND(SOURCE_FIELDS-MOVETYPE='531'ORSOURCE_FIELDS-MOVETYPE='532').IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDIF.技术组121的转换如下,用来计算期间段的生产领用量,其转换例程:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'.CASESOURCE_FIELDS-MOVETYPE. WHEN'261'OR'262'OR'291'OR'292'OR'317'OR'318'OR'Z26'OR'Z27'OR'ZD1'OR'ZD2'.IFSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ELSE.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ENDIF.技术组115的转换如下,用来计算期间段的调拨入库,其转换例程:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'."原物料调拨入库CASESOURCE_FIELDS-MOVETYPE.WHEN'301'OR'311'OR'323'.IF(NOT(SOURCE_FIELDS-MOVE_PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')ANDSOURCE_FIELDS-PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'302'OR'312'.IF(NOT(SOURCE_FIELDS-MOVE_PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')ANDSOURCE_FIELDS-PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ELSEIFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)AND(SOURCE_FIELDS-MATL_TYPE='FERT'ORSOURCE_FIELDS-MATL_TYPE='HALB')."成品与半成品的调拨入库CASESOURCE_FIELDS-MOVETYPE.WHEN'101'OR'102'OR'122'OR'123'.IF(NOT(SOURCE_FIELDS-MOVE_PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')ANDSOURCE_FIELDS-PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')))ANDSOURCE_FIELDS-DF_MOVFLAG<>'F'."非生产入库IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDIF.WHEN'301'OR'311'.IF(NOT(SOURCE_FIELDS-MOVE_PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')ANDSOURCE_FIELDS-PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'302'OR'312'.IF(NOT(SOURCE_FIELDS-MOVE_PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')ANDSOURCE_FIELDS-PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ENDIF.技术组116的转换如下,用来计算期间段的调拨出库,其转换例程:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'."原物料调拨出库CASESOURCE_FIELDS-MOVETYPE.WHEN'301'OR'311'.IF(NOT(SOURCE_FIELDS-PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')ANDSOURCE_FIELDS-MOVE_PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'302'OR'312'.IF(NOT(SOURCE_FIELDS-PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')ANDSOURCE_FIELDS-MOVE_PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ELSEIFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)AND(SOURCE_FIELDS-MATL_TYPE='FERT'ORSOURCE_FIELDS-MATL_TYPE='HALB')."成品与半成品的调拨出库CASESOURCE_FIELDS-MOVETYPE.WHEN'301'OR'311'.IF(NOT(SOURCE_FIELDS-PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')ANDSOURCE_FIELDS-MOVE_PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'302'OR'312'.IF(NOT(SOURCE_FIELDS-PLANT='ZTF1'"调出方为本库AND(SOURCE_FIELDS-STOR_LOC<>'1003'ANDSOURCE_FIELDS-STOR_LOC<>'1007')ANDSOURCE_FIELDS-MOVE_PLANT='ZTF1'"接收方为本库AND(SOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1003'ANDSOURCE_FIELDS-/BIC/ZSTOR_LOC<>'1007')))ANDSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ENDIF.技术组114的转换如下,用来计算期间段的当期出入库合计,其转换中公式如下:IF(DATE_MONTH(CALDAY)=DATE_MONTH(PSTNG_DATE),IF(DCINDIC='H',QUANTITY*'-1.000000000000000E+00',QUANTITY),'0')技术组112的转换如下,用来计算期间段的出库(不含调拨),其转换中公式如下:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'."原物料正常出库CASESOURCE_FIELDS-MOVETYPE.WHEN'301'OR'311'OR'302'OR'312'.RESULT=0.WHEN'122'OR'123'OR'161'OR'162'OR'201'OR'202'OR'241'OR'242'OR'261'OR'262'OR'291'OR'292'OR'309'OR'310'OR'313'OR'314'OR'317'OR'318'OR'322'OR'349'OR'350'OR'502'OR'512'OR'522'OR'532'OR'541'OR'551'OR'552'OR'553'OR'554'OR'555'OR'556'OR'652'OR'653'OR'657'OR'702'OR'704'OR'708'OR'952'OR'953'OR'961'OR'Z03'OR'Z21'OR'Z22'OR'Z26'OR'Z27'OR'Z43'OR'ZB1'OR'ZB2'OR'ZB3'OR'ZB4'OR'ZC1'OR'ZC2'OR'ZD1'OR'ZD2'OR'ZM1'OR'ZM2'OR'ZM3'OR'ZM4'OR'ZR1'OR'ZR2'OR'ZW1'OR'ZW2'OR'323'OR'325'OR'326'OR'601'OR'602'OR'641'OR'642'OR'643'OR'644'OR'950'OR'951'OR'Z02'OR'Z21'OR'Z22'OR'Z41'OR'Z42'OR'Z43'OR'Z61'OR'ZT1'OR'ZT2'.IFSOURCE_FIELDS-DCINDIC='H'."出库RESULT=-SOURCE_FIELDS-QUANTITY.ELSE."入库RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'561'OR'562'OR'563'OR'564'OR'565'OR'566'.RESULT=0.ENDCASE.ELSEIFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)AND(SOURCE_FIELDS-MATL_TYPE='FERT'ORSOURCE_FIELDS-MATL_TYPE='HALB')."成品与半成品的正常出库CASESOURCE_FIELDS-MOVETYPE.WHEN'301'OR'311'OR'302'OR'312'OR'101'OR'102'OR'122'OR'123'OR'561'OR'562'OR'343'OR'344'OR'321'OR'322'OR'349'OR'350'OR'453'OR'454'OR'459'OR'460'.RESULT=0.WHEN'201'OR'161'OR'162'OR'ZW1'OR'ZR1'OR'ZC1'OR'202'OR'ZW2'OR'ZR2'OR'ZC2'OR'601'OR'602'OR'Z21'OR'Z22'OR'Z01'OR'Z51'OR'Z41'OR'Z42'OR'551'OR'552'OR'553'OR'554'OR'555'OR'556'OR'641'OR'642'OR'643'OR'644'.IFSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ELSEIFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.WHENOTHERS.IFSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ELSE.RESULT=0.ENDIF.ENDCASE.ENDIF.技术组111的转换如下,用来计算期间段的正常入库(不含调拨)合计,其转换中例程如下:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'."原物料正常入库CASESOURCE_FIELDS-MOVETYPE.WHEN'101'OR'102'OR'105'OR'106'OR'122'OR'123'OR'131'OR'132'OR'162'OR'301'OR'302'OR'309'OR'310'OR'313'OR'314'OR'321'OR'349'OR'350'OR'501'OR'511'OR'521'OR'531'OR'542'OR'651'OR'655'OR'701'OR'703'OR'707'OR'960'OR'ZM3'OR'ZM4'OR'ZM5'OR'ZM6'OR'ZM7'OR'ZM8'OR'ZN3'OR'ZN4'.IFSOURCE_FIELDS-DCINDIC='H'."出库RESULT=-SOURCE_FIELDS-QUANTITY.ELSE."入库RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.WHENOTHERS.ENDCASE.ELSEIFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)AND(SOURCE_FIELDS-MATL_TYPE='FERT'ORSOURCE_FIELDS-MATL_TYPE='HALB')."成品与半成品的正常入库CASESOURCE_FIELDS-MOVETYPE.WHEN'101'OR'102'OR'122'OR'123'.IFSOURCE_FIELDS-DF_MOVFLAG='F'"生产入库ANDSOURCE_FIELDS-DCINDIC='H'.RESULT=-SOURCE_FIELDS-QUANTITY.ELSEIFSOURCE_FIELDS-DF_MOVFLAG='F'ANDSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=0.ENDIF.ENDCASE.ENDIF.技术组125的转换如下,用来计算期间段的退库\料、其他入库,其转换中例程如下:IFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)ANDSOURCE_FIELDS-MATL_TYPE<>'FERT'ANDSOURCE_FIELDS-MATL_TYPE<>'HALB'."原料退货、其他入库合计CASESOURCE_FIELDS-MOVETYPE.WHEN'309'OR'310'OR'313'OR'501'OR'511'OR'521'OR'531'OR'542'OR'651'OR'701'OR'ZM5'OR'ZM6'OR'ZM7'OR'ZM8'OR'960'OR'314'OR'350'OR'501'OR'531'OR'707'OR'349'OR'531'OR'703'.IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ELSEIFSOURCE_FIELDS-PSTNG_DATE+0(6)=SOURCE_FIELDS-CALDAY+0(6)AND(SOURCE_FIELDS-MATL_TYPE='FERT'ORSOURCE_FIELDS-MATL_TYPE='HALB')."成品退货、其他入库合计CASESOURCE_FIELDS-MOVETYPE.WHEN'651'OR'652'OR'Z43'OR'Z44'OR'655'OR'656'.IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ELSE.RESULT=-SOURCE_FIELDS-QUANTITY.ENDIF.WHEN'101'OR'102'OR'122'OR'123'OR'301'OR'302'OR'311'OR'312'OR'201'OR'161'OR'ZW1'OR'ZR1'OR'ZC1'OR'202'OR'ZW2'OR'ZR2'OR'ZC2'OR'601'OR'602'OR'Z21'OR'Z22'OR'Z01'OR'Z51'OR'Z41'OR'Z42'OR'551'OR'552'OR'553'OR'554'OR'555'OR'556'OR'701'OR'702'OR'703'OR'704'OR'707'OR'713'OR'714'OR'708'OR'711'OR'712'OR'715'OR'716'OR'717'OR'718'OR'641'OR'642'OR'643'OR'644'OR'561'OR'562'OR'343'OR'344'OR'321'OR'322'OR'349'OR'350'OR'453'OR'454'OR'459'OR'460'.RESULT=0.WHENOTHERS.IFSOURCE_FIELDS-DCINDIC='S'.RESULT=SOURCE_FIELDS-QUANTITY.ENDIF.ENDCASE.ENDIF.MM_D226计算期初库存MM_D226通过初始化点库存及物料移动计算每个月期初库存,其数据来源于MM_D160及MM_D227;MM_D160到MM_D226转换如下,其中开始例程如下,例程目的为将运行月份数据补充到SourcePackage中:MM_D160到MM_D226的DTP采用全部加载,见图;DATAWA_SCTYPE_TY_S_SC_1.DATA:L_DATETYPED.LOOPATSOURCE_PACKAGEINTOWA_SC.CALLFUNCTION'FIMA_DATE_CREATE'EXPORTINGI_DATE=SY-DATUMI_MONTHS='-1'IMPORTINGE_DATE=L_DATE.CONCATENATEL_DATE+0(6)'01'INTOWA_SC-CALDAY.MODIFYSOURCE_PACKAGEFROMWA_SC.ENDLOOP.DELETESOURCE_PACKAGEWHERESTOCKTYPE='H'."删除转运库存类型的数据结束例程如下,删除库存数量为0的数据:DELETERESULT_PACKAGEWHEREQUANTITY=0.DTP:MM_D160MM_D226MM_D227到MM_D226转换如下,其中开始例程如下:DELETESOURCE_PACKAGEWHEREVTYPE<>'113'."113出入库合计(至初始化点)结束例程中删除库存为0的数据:DELETERESULT_PACKAGEWHEREQUANTITY=0.MM_D224计算期末库存MM_D224从MM_D226(期初)和MM_D227(物料移动)中计算库存,所以其数据来源于此两个DSO;MM_D227到MM_D224转换如下:开始例程中删除非当期出入库合计;DELETESOURCE_PACKAGEWHEREVTYPE<>'114'."114当期出入库合计MM_D226到MM_D224转换如下:开始例程中删除非当期出入库合计;DELETESOURCE_PACKAGEWHEREVTYPE<>'101'.“删除非期初的数据MM_D222呆滞列表呆滞列表DSO中存储历史呆滞和当前每月呆滞数据,其数据来源于MM_D230(历史呆滞)、MM_D223(顶峰呆滞)及MM_D228(顶正呆滞);MM_D230到MM_D222的转换MM_D223到MM_D222的转换开始例程:DATA:L_DATETYPED.SORTSOURCE_PACKAGEBYPLANTASCENDINGSTOR_LOCASCENDINGMATERIALASCENDINGPSTNG_DATEASCENDING."将数据源按照工厂、库存地、物料及凭证日期升序排序,以便最后一笔凭证日期覆盖前一笔*删除本库调拨数据*原材料调拨入库DELETESOURCE_PACKAGEWHERE(MATL_TYPE<>'FERT'ANDMATL_TYPE<>'HALB')AND(MOVETYPE='301'ORMOVETYPE='311'ORMOVETYPE='323'ORMOVETYPE='302'ORMOVETYPE='312')AND(MOVE_PLANT='ZTF1'"调出方为ZTF1本库AND/BIC/ZSTOR_LOC<>'1003'AND/BIC/ZSTOR_LOC<>'1007')AND(PLANT='ZTF1'"接收方为ZTF1本库ANDSTOR_LOC<>'1003'ANDSTOR_LOC<>'1007').*成品与半成品的调拨入库DELETESOURCE_PACKAGEWHERE(MATL_TYPE='FERT'ORMATL_TYPE='HALB')AND(MOVETYPE='101'ORMOVETYPE='102'ORMOVETYPE='122'ORMOVETYPE='123')ANDMOVE_PLANT='ZTF1'"调出方为ZTF1本库AND(/BIC/ZSTOR_LOC<>'1003'AND/BIC/ZSTOR_LOC<>'1007')ANDPLANT='ZTF1'"接收方为ZTF1本库AND(STOR_LOC<>'1003'ANDSTOR_LOC<>'1007')ANDDF_MOVFLAG<>'F'.DELETESOURCE_PACKAGEWHERE(MATL_TYPE='FERT'ORMATL_TYPE='HALB')AND(MOVETYPE='301'ORMOVETYPE='311'ORMOVETYPE='302'ORMOVETYPE='312')AND(MOVE_PLANT='ZTF1'"调出方为ZTF1本库AND/BIC/ZSTOR_LOC<>'1003'AND/BIC/ZSTOR_LOC<>'1007')AND(PLANT='ZTF1'"接收方为ZTF1本库ANDSTOR_LOC<>'1003'ANDSTOR_LOC<>'1007').*取得执行月上月最后一天CALLFUNCTION'FIMA_DATE_CREATE'EXPORTINGI_DATE=SY-DATUMI_MONTHS='-1'I_SET_LAST_DAY_OF_MONTH='X'IMPORTINGE_DATE=L_DATE.DATAWA_SCTYPE_TY_S_SC_1.DELETESOURCE_PACKAGEWHEREPSTNG_DATE+0(6)>L_DATE+0(6).LOOPATSOURCE_PACKAGEINTOWA_SC.CONCATENATEL_DATE+0(6)'01'INTOWA_SC-CALDAY.MODIFYSOURCE_PACKAGEFROMWA_SC.ENDLOOP.结束例程:DATAWA_ITABTYPE_TY_S_TG_1.DATA:L_MONTHTYPE/BI0/OICALMONTH.TYPES:BEGINOF_TY_S_TG_1_TMP1,*InfoObject:0PLANT工厂.PLANTTYPE/BI0/OIPLANT,*InfoObject:0MATERIAL物料.MATERIALTYPE/BI0/OIMATERIAL,*InfoObject:0CALMONTH日历年/月.CALMONTHTYPE/BI0/OICALMONTH,*InfoObject:0STOR_LOC库存地点.STOR_LOCTYPE/BI0/OISTOR_LOC,*InfoObject:0PSTNG_DATE凭证记帐日期.PSTNG_DATETYPE/BI0/OIPSTNG_DATE,ENDOF_TY_S_TG_1_TMP1.TYPES:BEGINOF_TY_S_TG_1_TMP2,*InfoObject:0PLANT工厂.PLANTTYPE/BI0/OIPLANT,*InfoObject:0MATERIAL物料.MATERIALTYPE/BI0/OIMATERIAL,*InfoObject:0CALMONTH日历年/月.CALMONTHTYPE/BI0/OICALMONTH,*InfoObject:0PSTNG_DATE凭证记帐日期.PSTNG_DATETYPE/BI0/OIPSTNG_DATE,ENDOF_TY_S_TG_1_TMP2.*ZTF1下分本外库数据DATA:ITAB_RESULT1TYPESTANDARDTABLEOF_TY_S_TG_1_TMP1WITHNON-UNIQUEDEFAULTKEY.DATA:WA_TG_1_TMP1TYPE_TY_S_TG_1_TMP1.*ZTF2\ZTF3\TTF1等部分本外库,以工厂层次来看最后一笔移动的数据DATA:ITAB_RESULT2TYPESTANDARDTABLEOF_TY_S_TG_1_TMP2WITHNON-UNIQUEDEFAULTKEY.DATA:WA_TG_1_TMP2TYPE_TY_S_TG_1_TMP2.*ZTF1下1003、1007库作为外库处理,其他库作为本库处理;ZTF2、ZTF3及TTF1等库都是单独考虑工厂层面呆滞LOOPATRESULT_PACKAGEINTOWA_ITAB.IFWA_ITAB-PLANT='ZTF1'.IFWA_ITAB-STOR_LOC='1003'ORWA_ITAB-STOR_LOC='1007'."外库WA_TG_1_TMP1-PLANT=WA_ITAB-PLANT.WA_TG_1_TMP1-MATERIAL=WA_ITAB-MATERIAL.WA_TG_1_TMP1-CALMONTH=WA_ITAB-CALMONTH.WA_TG_1_TMP1-STOR_LOC='Wai'."标记为外库WA_TG_1_TMP1-PSTNG_DATE=WA_ITAB-PSTNG_DATE.APPENDWA_TG_1_TMP1TOITAB_RESULT1.ELSE."本库WA_TG_1_TMP1-PLANT=WA_ITAB-PLANT.WA_TG_1_TMP1-MATERIAL=WA_ITAB-MATERIAL.WA_TG_1_TMP1-CALMONTH=WA_ITAB-CALMONTH.WA_TG_1_TMP1-STOR_LOC='Ben'."标记为本库WA_TG_1_TMP1-PSTNG_DATE=WA_ITAB-PSTNG_DATE.APPENDWA_TG_1_TMP1TOITAB_RESULT1.ENDIF.ELSE."非ZTF1库WA_TG_1_TMP2-PLANT=WA_ITAB-PLANT.WA_TG_1_TMP2-MATERIAL=WA_ITAB-MATERIAL.WA_TG_1_TMP2-CALMONTH=WA_ITAB-CALMONTH.WA_TG_1_TMP2-PSTNG_DATE=WA_ITAB-PSTNG_DATE.APPENDWA_TG_1_TMP2TOITAB_RESULT2.ENDIF.ENDLOOP.SORTITAB_RESULT1BYPLANTDESCENDINGMATERIALDESCENDINGCALMONTHDESCENDINGSTOR_LOCDESCENDINGPSTNG_DATEDESCENDING."按时间降序排列,为后面读取做准备SORTITAB_RESULT2BYPLANTDESCENDINGMATERIALDESCENDINGCALMONTHDESCENDINGPSTNG_DATEDESCENDING."按时间降序排列,为后面读取做准备LOOPATRESULT_PACKAGEINTOWA_ITAB.IFWA_ITAB-PLANT='ZTF1'.IFWA_ITAB-STOR_LOC='1003'ORWA_ITAB-STOR_LOC='1007'."外库READTABLEITAB_RESULT1INTOWA_TG_1_TMP1WITHKEYPLANT=WA_ITAB-PLANTMATERIAL=WA_ITAB-MATERIALCALMONTH=WA_ITAB-CALMONTHSTOR_LOC='Wai'.IFSY-SUBRC=0.L_MONTH=WA_ITAB-CALMONTH-WA_TG_1_TMP1-PSTNG_DATE+0(6)."判断外库最后一笔物料移动时间WA_ITAB-PSTNG_DATE=WA_TG_1_TMP1-PSTNG_DATE."更改为外库最后一笔移动日期IFL_MONTH>=6.WA_ITAB-VTYPE='122'."定义为呆品ELSEIFL_MONTH<6ANDL_MONTH>2.WA_ITAB-VTYPE='123'."定义为滞品ELSEIFL_MONTH=2.WA_ITAB-VTYPE='124'."定义为预警ENDIF.MODIFYRESULT_PACKAGEFROMWA_ITAB.ENDIF.ELSE."本库READTABLEITAB_RESULT1INTOWA_TG_1_TMP1WITHKEYPLANT=WA_ITAB-PLANTMATERIAL=WA_ITAB-MATERIALCALMONTH=WA_ITAB-CALMONTHSTOR_LOC='Ben'.IFSY-SUBRC=0.L_MONTH=WA_ITAB-CALMONTH-WA_TG_1_TMP1-PSTNG_DATE+0(6)."判断外库最后一笔物料移动时间WA_ITAB-PSTNG_DATE=WA_TG_1_TMP1-PSTNG_DATE."更改为外库最后一笔移动日期IFL_MONTH>=6.WA_ITAB-VTYPE='122'."定义为呆品ELSEIFL_MONTH<6ANDL_MONTH>2.WA_ITAB-VTYPE='123'."定义为滞品ELSEIFL_MONTH=2.WA_ITAB-VTYPE='124'."定义为预警ENDIF.MODIFYRESULT_PACKAGEFROMWA_ITAB.ENDIF.ENDIF.ELSE."除ZTF1外的其他库存READTABLEITAB_RESULT2INTOWA_TG_1_TMP2WITHKEYPLANT=WA_ITAB-PLANTMATERIAL=WA_ITAB-MATERIALCALMONTH=WA_ITAB-CALMONTH.IFSY-SUBRC=0.L_MONTH=WA_ITAB-CALMONTH-WA_TG_1_TMP2-PSTNG_DATE+0(6)."判断工厂最后一笔物料移动时间WA_ITAB-PSTNG_DATE=WA_TG_1_TMP1-PSTNG_DATE."更改为工厂下最后一笔移动日期IFL_MONTH>=6.WA_ITAB-VTYPE='122'."定义为呆品ELSEIFL_MONTH<6ANDL_MONTH>2.WA_ITAB-VTYPE='123'."定义为滞品ELSEIFL_MONTH=2.WA_ITAB-VTYPE='124'."定义为预警ENDIF.MODIFYRESULT_PACKAGEFROMWA_ITAB.ENDIF.ENDIF.ENDLOOP.DELETERESULT_PACKAGEWHEREVTYPE<>'122'ANDVTYPE<>'123'ANDVTYPE<>'124'.MM_D228到MM_D222转换,此转换计算顶正呆滞;开始例程,此例程的作用为删除三个月前库存为0的数据和当前库存为0的数据(如果三个月前库存为0,则当前库存肯定为近三个月入库,不符合呆滞定义;如果当前库存为0,则当前该物料根本不存在呆滞说法)DELETESOURCE_PACKAGEWHEREQUANTITY='0'OR/BIC/ZQTY2='0'. 结束例程,该例程则是将计算后不符合呆滞定义的数据删除,保留呆滞数据;DELETERESULT_PACKAGEWHEREQUANTITY>'0.2'OR/BIC/ZQUANTITY<='0'.历史库存数据MM_D229库存计算准备历史,其中包含各种类型的数据的计算,如下图所示其中开始例程如下,在计算中首先从MM_D110中读取需要计算的历史月份,然后过滤掉从初始化点(ZFIR_DAY)到计算月份的数据,以减小后续计算数据量,提高系统效率;DATA:ITAB_HISTORY_MONTYPESTANDARDTABLEOFTYP_HISTORY_MONWITHNON-UNIQUEDEFAULTKEY,WA_ITAB_HISTORY_MONTYPETYP_HISTORY_MON.DATAWA_SCTYPE_TY_S_SC_1.BREAK-POINT.SELECTCALDAYFROM/BIC/AMM_D11100INTOCORRESPONDINGFIELDSOFTABLEITAB_HISTORY_MON.SORTITAB_HISTORY_MONDESCENDING.READTABLEITAB_HISTORY_MONINTOWA_ITAB_HISTORY_MONINDEX1.LOOPATSOURCE_PACKAGEINTOWA_SC.WA_SC-CALDAY=WA_ITAB_HISTORY_MON-CALDAY.MODIFYSOURCE_PACKA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电影营销策划汇报
- 弯板冲压件课程设计
- 成绩管理系统的课程设计
- 常见奶牛品种的课程设计
- 全球能源市场分析与发展趋势
- 环艺设计中的照明艺术与心理效应案例分析
- 《基于界面调控实现量子点发光二极管内载流子平衡》
- 《不同形态的氨基改性壳聚糖基吸附材料对U(Ⅵ)的分离性能研究》
- 《LaPO4-Eu-NaYF4-Yb,Er纳米晶的制备及其与人血清白蛋白的结合作用和应用于酸性品红的检测》
- 《基于严格格式控制的文本摘要生成算法研究》
- 文档目录模版(自动生成)
- 一年级数学计算竞赛试题
- 刑法分论:总体国家安全观的刑法保护智慧树知到期末考试答案章节答案2024年湘潭大学
- 2024年精麻药品培训考试题题库及答案(完整版)
- 2024-2034年中国飞机拆解行业市场现状分析及竞争格局与投资发展研究报告
- 30道计量员岗位常见面试问题含HR问题考察点及参考回答
- 2024年长沙民政职业技术学院单招职业技能测试题库及答案解析
- 电力安全工器具预防性试验规程2023版
- 汉字与中国古代文化常识智慧树知到期末考试答案2024年
- 广东省普通高中学生档案
- 基于PLC与工业机器人控制的物料搬运及分拣系统的设计
评论
0/150
提交评论