资源描述
SAP收发存报表程序 功能详细设计说明书1.1 表结构关系相关数据表表描述字段名称字段描述EBAN采购申请抬头表EBKN采购申请项目明细表EKKO采购订单抬头表EKPO采购订单项目明细表KNTTP科目设置类型EKKN采购订单科目分配数据EBELNEBELPZEKKN帐户分配的序列号PS_PSP_PNR工作分解结构元素 (WBS 元素)NPLNR科目分配的网络号AFKO生产抬头文件AUFNR生产订单号PRONRWBS元素指针AUFK生产订单长文本MSPRH项目库存:历史(无价值字段)SOBKZ特殊库存标识PSPNR工作分解结构元素 (WBS 元素)LFGJA当前期间的会计年度LFMON当前期间 (记帐期间)PRLAB非限制使用的估价的库存PRINS质量在检的库存PRSPE冻结库存PREIN所有限制批次的总计库存MSPR项目库存(无价值字段)(当前期存储位置层次项目库存)MSSQ项目库存(无价值字段)(当前期工厂层次项目库存)MSSQHQBEW项目库存的分开评估(仅包含项目库存及估价数据)QBEWH项目库存的分开评估(历史记录)EBEW销售订单库存的分开评估EBEWH销售订单库存的分开评估(历史记录)MBEW常规库存的评估(仅包含常规库存价值数据,不包含项目库存的相关数据)MBEWH常规库存的评估(历史记录)PRPSWBS结构数据POSIDWBS元素MSEG-PSPNR 搜索此表可得到WBS号码;PROJ项目定义结构表MSEG-PSPNR,搜索此表可得到项目定义;WBS元素(24码)找其项目定义,也必须透过指针来寻找项目定义;MKPF物料凭证抬头数据MSEG物料凭证行项目数据EKET采购订单收货QINF物料和供应商的 QM 信息记录MATNR物料号LIEFERANT供应商帐户号WERK工厂FREI_DAT下达的有效到期日NOINSPQM 信息记录中的检验控制MARC物料工厂数据QMATV物料工厂的质检设置是否存在QMAT检验类型 - 物料参数MATNR物料号WERKS工厂ART检验类型APA首选的检验类型AFR处理单位的检验AKTIV检验类型 物料合并已激活RBKP发票抬头数据RSEG发票行项目相关的事务代码:MB52 库存综览显示MB51 物料凭证清单1.2 自定义表清单及结构定义程序处理逻辑內表一:字段名称字段描述程序处理逻辑內表二和內表三:字段名称字段描述值1.3 输入/输出数据格式定义源 数 据SAP系 统序号域名类型(长度)描述字段名类型(长度)描述转换关系1)2)3)4)5)6)7)8)9)2 输入/输出画面格式设计要求2.1 报表选择屏幕以下是本程序的第一个画面:初始化画面名 称属 性必输项(是/否)默认值其他特殊要求参考表字段工厂(多值)权限检查MSEG-WERKS存储位置(多值)WBS元素(多值)MSEG- PS_PSP_PNR物料类型(多值)物料组(多值)评估类(多值)期间(YYYYMM)(单值)MKPF- BUDAT之年月输出明细资料(单值)N(核选框)注:“属性”字段注明: 多选, 单选, 单选钮/, 选框或其他等;2.2 客户化增强功能画面设计(以下是格式化画面设计要求)3 程序处理逻辑说明1. 生成选择输入画面,用户输入参数;检查权限;2. 按用户选择画面参数,选择指定范围的数据,结合如下取数规则,生成报表:3. 取数规则:安装项目定义掩码:X-XX NN NN制作项目定义掩码:X-X-XX NN NN 序号字段取数规则备注1)物料编号2)物料描述MAKT-3)单位MARA-MEINS;4)物料类型MARA-MTART;5)单重如果物料类型为ZFS1或ZFS2,则: 其期初库存及相关交易一定是项目库存相关:如果WBS元素的第四位为 “-”,则取WBS元素第5位第10位;否则取WBS元素的第3位第8位 作为 WBS 元素“基本编码”;由 生产订单抬头表中找产品物料编码、WBS元素第5位第10位 与上述 WBS 元素“基本编码”一致的订单,取其生产订单抬头文本的第四行,如果为零,再找下一个生产订单直到取值非零为止;如果最终由生产订单中不能取值,则取 采购订单行项目:由EKKN/EKKO表中找:物料编码、WBS元素第5位第10位 与上述 WBS 元素“基本编码”一致的采购订单,取其采购该项目文本的第四行(第一页标签),如果为零,再找下一个采购订单直到取值非零为止;最终找不到,则置零;如果是其他物料类型,则取物料主数据中基本数据视图之毛重;6)物料组MARA-MATKL;7)商务分类如果物料类型为ZFS1或ZFS2,则由物料号码+WBS元素找任一生产订单文本的第六行,压缩空格后取前15位;可在取单重时同时取商务分类:生产订单文本的第六行或采购订单相应文本标签下的第六行;如果物料类型为其他,则置空;8)评估类由MBEWH/QBEWH中取(分别对于常规库存和项目库存);9)工厂10)WBS元素11)项目定义12)项目描述13)期初数量期初金额对于常规库存,按用户选取的物料/工厂/存储位置/评估类型范围,按如下规则取期初库存数据:1) 截取报表期间的的年份、月份,按“物料”+“工厂“+ “仓库”+“年份”+“月份-1” 读取MARDH 表的数据. 注:“月份-1”是指报表期间的前一个月1.1)如果读取成功,保存至“上月期末库存临时字段”,1.2)如果读取不成功,再从MARDH找“=月份”或“月份且最接近的纪录”,)如果找到了,就保存至“上月期末库存临时字段”)如果找不到,则取MARD的当前库存保存至”上月期末库存临时字段”(非限制库存/质检库存);参照上述规则,按物料/工厂/期间年份/期间月份,由表MBEWH/MBEW中取期初单价数据;对于项目库存,按用户选取的物料/工厂/存储位置/WBS元素范围,由表MSPR/MSPRH中期初数量数据,由QBEW/QBEWH中取单价数据(VERPR移动平均价);按前一字段取值规则得到的数量*单价即为期初金额;14)收入数量收入金额以下取第一部分:由表MSEG中按移动类型取物料编号不为空的记录:收入数量&收入金额: 由表MKPF/MSEG中按选择的数据范围,取以下移动类型记录其对应字段 MSEG-MENGE/DMBTR的值,如果MSEG- SHKZG 为 “S”,则记为本字段的正项,如果为 “H”,则为本字段的负项: 移动类型范围为 100 199 , 561/562, 501/502, 921/922, 301499,541544 ;对于发票确认对收入金额的影响部分取值规则,请参照 “发出数量”字段的取值说明。15)发出数量发出金额由MSEG中取物料编号非空的记录:收入数量&收入金额: 由表MKPF/MSEG中按选择的数据范围,取以下移动类型记录其对应字段 MSEG-MENGE/DMBTR的值,如果MSEG- SHKZG 为 “S”,则记为本字段的负项,如果为 “H”,则为本字段的正项: 移动类型范围为 201 299 , 551/552, 645/646, 901914 , 923/924 , 301499, 541544 ;第二部分:还要取移动类型为101/102/122/161/162, 物料号非空,但MSEG- KZVBR字段为 “V”的记录(对应的MSEG-KNTTP= “K/P/S/R”之一) :其数量和价值分别累加到相应的 “物料/工厂(可能还有WBS元素)” 记录的 “发出数量/发出金额”中, 如果MSEG- SHKZG 为 “S”,则记为本字段的正项,如果为 “H”,则为本字段的负项;以下取第三部分(由发票校验的差异调整部分,RSEG- KNTTP =K/P/R/S 的记录):由RBKP取当期的所有发票凭证号码。由RBKP-BELNR找表RSEG:如果RSEG-KNTTP 为 “K/P/R/S”之一,且RSEG-MATNR 非空且RSEG-EFKOR 非空,则说明发票确认有对直接采购消耗的存货物资的金额调整记账,但此部分的调整记账,是同时反映在收入金额和(消耗)发出金额上,没有经过库存帐。所以以下继续处理取得的值必须要同时累加到 “收入金额”和 “发出金额”上,但收入数量和发出数量不变更(发票交易不会带来数量变化):由 RSEG- BELNR + RSEG- GJAHR 搜索 BKPF-BWKEY, 取BKPF- BELNR(会计凭证号码);由 BKPF-BELNR 取表BSEG 中 BSEG-MATR = RSEG-MANR .AND. BSEG- EBELN = RSEG-EBELN .AND. BSEG-EBELP=RSEG-EBELP 的记录,如果BSEG- SHKZG = “S”则取 BSEG- DMBTR 的值为调整金额暂存值;如果BSEG- SHKZG = “H”: BSEG- DMBTR 的负值为调整金额暂存值;如果RSEG-KNTTP = “Q” ,或为空,则舍弃此 “调整金额暂存值”;否则,分别将此金额累加到 “收入金额”和“发出金额”中(对应关键字段:物料工厂(或者加WBS元素);16)盘点数量按指定期间和数据范围,由MKPF/MSEG中取移动类型为 “701/702/711/712” 的交易记录字段MSEG-MENGE/ DMBTR(基本单位数量/本位币金额);如果MSEG- SHKZG 为 “S”,则记为本字段的正项,如果为 “H”,则为本字段的负项;17)盘点金额参照前一字段的说明;18)调整金额库存价值调整: 不对应库存交易,对应发票确认时因采购订单价格与发票价格差异导致的对库存金额的调整(此时库存数量不变), 或者调整库存物料的单价时也导致库存金额变化;库存价值调整金额,仅当按公司出具报表时,该字段值才有效。因为系统没有记录各存储位置的价格更改和价值更新(价值更改是在评估范围层次或WBS元素层次有效);以下是第一部分:单价修改的凭证上 价值修改可能对应: 存货价值的改变及差异的改变: 无论是按S或V计价, 只要是价格改变, 存货价值一定是变化的.取MLCR-BDATJ/POPER为报告期间的所有记录,得到凭证号+会计年度+项目号(MLCR-BELNR/KJAHR/POSNR)+存货价值修改(MLCR-SALK3);再按上述 三个字段(MLCR-BELNR/KJAHR/POSNR) 取 表 MLIT-MATNR/BWKEY(评估范围)/WBS号;如果上述过程由MLCR中取得的金额为零(SALK3),则以相同的(MLCR-BELNR /KJAHR /POSNR) 及前一期间再取MLCR-SALK3, 以该值置换符号(乘以 -1),则得到报告期间的库存调整金额;单价调整:可能针对常规库存或项目库存。取值时要将物料号码及WBS元素和工厂代码一同取值;以下是第二部分:由表RSEG/RBKP中取价值修改记录。由表RBKP中取当前报表期间的发票凭证抬头数据记录,由此表的凭证号找表RSEG-STOCK POSTING 非零的记录,得到 RSEG-WERKS/RSEG-MATNR 的库存价值变更。如果RSEG-KNTTP为空,则累加到此报表的工厂+物料的 “调整金额”中(该字段的值有正项,也可能有负项,直接累加到“调整金额”中);如果RSEG-KNTTP= “Q”,则该调整金额属于项目库存金额的调整,必须由RSEG-EBELN 和 RSEG-EBELP(采购订单号码及行项目号码)找PO的行项目的WBS元素号码,而将该 RSEG-STOCK POSTING 的金额写入 “工厂物料WBS元素” 的值中;19)期末数量期初数量收入数量发出数量20)期末金额期初金额+收入金额发出金额调整金额;21)差异数量期末数量(画面输入期间的下一期间)期初数量(按期初数量取数规则得到)22)差异金额期末金额(画面输入期间的下一期间)期初金额(按期初金额取值规则得到)23)构件吨位单重*期末数量 / 1000 4. 如果用户未输入存储位置,则表示是在工厂层次出具报表,取报表记录关键字为: 工厂代码/物料编码/WBS元素/商务分类(物料组、物料类型依附于该三个键值),所有数量和金额按此键值汇总; 同时对于 “收入数量”“收入金额”“发出数量”“发出金额”字段,不统计移动类型 311316;5. 如果用户输入了存储位置,则取值表字段 “工厂代码/存储位置/物料编码/WBS元素/商务分类”,相应的取数结果均按物料+工厂存储位置+WBS元素商务分类层次累计;对于 “收入数量”“收入金额”“发出数量”“发出金额”字段,所统计的移动类型无限制;6. 最终输出方式:如果用户在画面上选择了 “输出明细资料”(Y”,则首先按取数规则表的字段格式输出清单;否则不执行明细清单资料的输出;接下来,在同一清单上,再附加如下分类统计表:除了列出上表格式的按料号的明细外,还需要列出如下分类小计报表:附加清单一:按WBS元素分类汇总的收发存明细表(仅对WBS元素非空的记录进行小计并分类汇总输出);附加清单二:按商务分类汇总的收发存明细表(仅列出物料类型为 “ZFS1/ZF2”的每一商务分类的小计);附加清单三:按商务分类项目定义分类汇总的收发存明细表;附加清单四:按评估类分类汇总的收发存明细资料;请依次输出。相应清单字段如下:附加清单一附加清单二附加清单三附加清单四1)物料编号2)物料描述3)单位4)物料类型5)单重6)物料组7)商务分类XX8)评估类X9)工厂10)WBS元素X11)项目定义X12)项目描述O取数规则表中的其余字段,均要输出;
展开阅读全文