《DBP-SD-HX_功能说明书_创建发货单增强与OA接口_XXXX0121 V0[1]1.docx》由会员分享,可在线阅读,更多相关《DBP-SD-HX_功能说明书_创建发货单增强与OA接口_XXXX0121 V0[1]1.docx(17页珍藏版)》请在三一办公上搜索。
1、文档名称: 功能说明书项目: XXXSAP项目 模块: 销售日期: 2011年01月12日作者: XXX状态: 初稿版本: 0.1功能说明书发货单增强与OA接口目录1功能说明书描述32程序说明33权限设置44涉及业务流程和事务代码45输入屏幕46输出结果要求、输出屏幕47程序逻辑58所需数据表及字段描述58.1数据筛选逻辑59单元测试场景5版本信息版本日期作者修改注释1.02011.01.22李振华创建文档确认姓名职务角色签字日期华兴公司项目经理(手签)埃森哲项目经理应用功能顾问开发人员关键用户业务负责人 1 功能说明书描述模块销售文档编号BLD_RICEF_SD_0009程序名ZSD0009
2、模块顾问李振华关键用户运行频率: ( )每月 ( ) 每周 ( ) 每日 ( X ) 其它 _运行数据量: ( )条运行模式:( )后台 ( X )前台程序类型:( ) 报表 ( ) 表单 ( ) 批导入 ( ) 接口 ( ) 函数 (X) 对话程序 ( ) 用户出口程序目的: 创建发货单时,需要检查创建者的权限,当用户引用订单创建发货单时,系统通过该客户主数据对应的业务员信息,比对登陆账号是否该业务员。同时,需要判断该客户是什么付款条件,若为月结付款条件的客户,需要检查客户是否有超期未付货款:若为定金付款客户,则需判断客户预付款科目是否有足够定金来满足订单的需要。2 程序说明2.1 1、 集
3、团外销售业务的发货单由业务员自行创建,且每个业务员计划一人一个独立sap账号。账号为业务员员工号。在客户主数据中维护了唯一的一个业务员(科目代码为Z005或者Z006)对应该客户,且业务员代码为工号。2、 当业务员创建发货订单时,需要引用销售订单类。系统需要检查该客户对应的业务员是否为该登录用户。如果不是,则不能为该客户创建销售订单,系统Error提示用户。3、 当创建发货单时,需要检查创建日期是否超过合同有效期,超过有效期需要审批;需要检查累计发货数量是否超过合同量,超过合同量一定幅度需要审批。4、 同时,系统需要根据客户主数据带出来的付款条件,检查客户的信用状况,以及付款情况。针对标准的信
4、贷,系统具有标准检查方案;但是对于定金模式付款的先款后货客户,则需要系统检查客户账户是否有足够的定金来满足该发货单,需要考虑以前的未交货完毕的订单。5、 系统需要检查发货单的三种情况,若不满足,需要分别将相关数据传入OA系统的工作表的相应字段,待OA审批结束后,通过OA按钮释放发货单. OA审批通过后,通过OA系统释放该发货单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过.并将字段LIKP-SDABW设置为不能通过人工手工更改。2.2 无。2.3 中文/英文3 权限设置针对集团外销售业务的发货单的创建,需要检查创建者是否为该业务员。订单的修改权限只分配给业务文员。订单的查看权限分配
5、给业务文员,及业务员,但是业务员只能查看自己创建的发货单。4 涉及业务流程和事务代码流程:DBP-SD-HX-业务蓝图_内销订单发货流程20101228_V1.0.docDBP-SD-HX-业务蓝图_外销订单发货流程20101227V1.0.doc事务代码:VL10 VL01N5 输入屏幕1:订单创建标准的发货单的创建输入界面,屏幕字段中文描述选择类型屏幕字段名称参考字段名称缺省值必要输入检核条件单一区间复选框选择圆点是否装运点/接收点装运点/接收点VEPVG- VSTEL装运点/接收点交货创建日期交货创建日期VEPVG - LEDAT6 输出结果要求、输出屏幕输入结果为订单创建,修改,显示界
6、面。7 程序逻辑1:创建发货单时,检查创建者是否为业务员。需要引用销售订单来创建发货单,所以当用户在引用销售订单创建发货单后,需要检查该客户对应的业务员是否为该登录用户。若为登录用户,可以继续创建,若不是登录用户,则系统Error报错提示,该用户无权创建该客户的发货单。客户主数据中合作伙伴功能视图中有客户对应的业务员信息。通过客户代码找到对应客户主数据中合伙人KNVP-PARVW的值Z5或者Z6。Z5与 Z6为业务员功能,两者不会同时存在一个客户主数据中。Z5工号字母开头,Z6工号数字开头。用户登录账号也是工号,所以可以通过登录账号和Z5,或者Z6的代码值来比较判断是否业务员为登录用户。2:检
7、查发货日期是否超过合同有效期,发货数量是否超过订单量。需要比较创建发货单当天的创建日期是否超过合同有效期VBAK-GUEEN通过凭证流中订单找到对应的合同,取得合同的有效期与发货单创建日期比较。通过表VBFA。销售订单号VBFA-VBELN,找到VBFA-VBELV先前凭证,即为合同号码VBFA-VBELV。再通过表VBAK找到该合同号对应的合同有效期VBAK-GUEEN需要比较创建发货单当天的创建日期是否超过合同有效期VBAK-GUEEN超过合同有效期,交货单需要冻结。通过改变字段LIKP-LIFSK值来实现。发货累计量超过订单量超过一定范围(1万个),发货单同样需要冻结。通过程序改变字段L
8、IKP-LIFSK值来实现。如下图。累计发货量 的计算逻辑如下:先通过新创建发货单的单号LIPS-VBELN及行项目LIPS-POSNR,找到所引用的销售订单号LIPS-VGBEL及其行项目LIPS-VGPOS找到销售订单号,及其行项目后,需要找到表VBAP中的VBAP-KWMENG即为订单行项目数量,再通过VBFA表找到对应的该销售订单行项目所对应的所有交货单,VBFA-VBELN发货单号,VBFA-POSNN发货单行项目,找到VBFA-VBELV销售订单号,VBFA-POSNV销售订单行项目要取满足VBFA-VBTYP_N = J 且移动类型VBFA-BWART = 601的记录。并取得数
9、量VBFA-RFMNG后,即为交货数量,汇总所有该销售订单行项目对应的交货数量。与订单行项目数量比较,若超过1万个,则系统将行项目的产品编码传入OA系统对应的字段中,同时传入该行项目的汇总发货量,订单量以及以下抬头数据:申请人:LIKP-ERNAM为用户工号,通过该工号到表KNA1中找到KNA1-NAME1为申请人名字通过LIKP-KUNAG找到客户代码后,才能找到以下字段申请部门:VBAK-VKGRP客户代码:VBAK-KUNNR客户名称:KNA1_NAME1客户类别:KNA1-KUKLA付款方式:VBKD-ZTERM(通过销售订单号在表VBKD中查找)OA审批通过后,通过OA系统释放该发货
10、单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过.并将字段LIKP-SDABW设置为不能通过人工手工更改。3:检查客户的付款情况,信贷状况,是否有超期货款。付款情况:对于先款后货的客户,及付款方式为以下三种情况的客户Z024无订金立即付款Z02530%订金立即付款Z026长期押金立即付款付款方式:VBKD-ZTERM(通过销售订单号LIPS-VGBEL在表VBKD中查找)若为Z024无订金立即付款Z026长期押金立即付款则系统需要检查客户的账户余额是否有足够的货款用户该批产品发货。发货单产品总额 = 发货数量 x 产品价格发货数量LIPS-LFIMG(通过发货单LIPS-VBELN
11、及行项目LIPS-POSNR找到发货数量)产品价格,需要找到销售订单号LIPS-VGBEL及其行项目LIPS-VGPOS满足VBAP-VBELN = LIPS-VGBEL VBAP-POSNR = LIPS-VGPOS后,在表VBAP中找到VBAP-NETPR价格。客户的账户余额客户账户余额 VALUE (D) = 客户预付款余额 客户应收款余额。客户预付款余额 通过BSID表通过创建的销售订单的客户代码VBAK-KUNNR,到表BSID中找到满足VBAK-KUNNR = BSID-KUNNRBSID-BUKRS = 销售订单的销售组织VBAK-VKORGBSID-HKONT = 220301
12、0000的记录,并取得贷方余额 总额: 取字段 借方/贷方BSID-SHKZG:为H的所有记录中的本位币金额BSID-DMBTR汇总后得到客户预付款贷方总额VALUE(预付H) 再取借方余额:取字段 借方/贷方BSID-SHKZG:为S的所有记录中的本位币金额BSID-DMBTR汇总后得到客户预付款借方总额VALUE(预付S) 客户预付款余额 =客户预付款贷方总额VALUE(预付H)客户预付款借方总额VALUE(预付S) 客户应收款余额:通过BSID表通过创建的销售订单的客户代码VBAK-KUNNR,到表BSID中找到满足VBAK-KUNNR = BSID-KUNNRBSID-BUKRS =
13、销售订单的销售组织VBAK-VKORGBSID-HKONT = 1122010000的记录,并取得贷方余额 总额: 取字段 借方/贷方BSID-SHKZG:为H的所有记录中的本位币金额BSID-DMBTR汇总后得到客户预付款贷方总额VALUE(预付H) 再取借方余额:取字段 借方/贷方BSID-SHKZG:为S的所有记录中的本位币金额BSID-DMBTR汇总后得到客户预付款借方总额VALUE(预付S) 客户应收款余额 =客户应收借方总额VALUE(应收S) 客户应收贷方总额VALUE(应收H)客户账户余额 VALUE (D) = 客户预付款余额 客户应收款余额客户账户余额 VALUE (D)
14、= 发货单产品总额则该张发货单可以保存.客户账户余额 VALUE (D) 发货单产品总额则系统程序需要将发货单冻结,通过给字段LIKP-LIFSK 赋值Z2来实现.若付款条款为 Z02530%订金立即付款则客户需要全款发货。系统需要判断该客户的账户余额是否够本次发货单的全款,以及以往未清销售订单的30%定金。发货单产品总额 + 未完全发货的销售订单的总额 x 30% 与客户预付款余额 比较,若小于,则系统需要冻结发货单,将相关数据传入OA系统。与客户预付款余额 =客户预付款贷方总额VALUE(预付H)客户预付款借方总额VALUE(预付S) 发货单产品总额 = 发货数量 x 产品价格发货数量LI
15、PS-LFIMG(通过发货单LIPS-VBELN及行项目LIPS-POSNR找到发货数量)产品价格,需要找到销售订单号LIPS-VGBEL及其行项目LIPS-VGPOS满足VBAP-VBELN = LIPS-VGBEL VBAP-POSNR = LIPS-VGPOS后,在表VBAP中找到VBAP-NETPR价格。未完全发货的销售订单的定金:通过当前用户新建的发货单号码LIKP-VBELN在表LIKP找到对应字段,作为查询条件:销售组织LIKP-VKORG,客户LIKP-KUNNR,在表VBAK中找到对应的该客户的其他的销售订单,类型VBAK-AUART为ZOR,每找到一条记录,并取得VBAK-
16、VBELN销售订单号,需要到表VBUP通过VBUP-VBELN= VBAK-VBELN 找到对应的销售订单行项目VBUP-POSNR,交货状态VBUP-LFGSA若为A或者B,若为A则需要将该条记录销售凭证VBUP-VBELN,项目VBUP-POSNR到表VBAP中找到价格VBAP-NETWR ,则未交货订单行项目定金VALUE(A)= 订单行项目数量VBAP-KWMENG x价值VBAP-NETWR X 30% 或者交货状态VBUP-LFGSA若为B的, 及订单部分交货。需要通过VBUP-VBELN 号码找到VBFA中的记录逻辑为VBUP-VBELN = VBFA-VBELV 且行项目VBU
17、P-POSNR = VBFA-POSNV,且子层凭证类别VBFA-VBTYP_N为J,并且移动类型 VBFA-BWART = 601通过以上条件找到对应的 记录后,取得发货单发货量VBFA-RFMNG然后未交货数量= 订单对应行项目数量-发货行项目数量VBUP-VBELN对应的VBAP-VBELN,VBUP-POSNR = VBAP-POSNV找到订单数量VBAP-KWMENG然后部分交货对应的定金VALUE(C)= (订单对应行项目数量VBAP-KWMENG - 发货行项目数量VBFA-RFMNG) x价值VBAP-NETWR X 30%,得到未交货的部分产品对应的定金VALUE(C)。若订
18、单对应行项目数量VBAP-KWMENG - 发货行项目数量VBFA-RFMNG等于负数,则这部分行项目的定金为0需要将该客户对应的所有以上情况的销售订单行项目中的未交货订单行项目定金VALUE(A)与部分交货对应的定金VALUE(C)汇总。需要循环处理后得到最后该客户的订单定金。发货单产品总额 + 未完全发货的销售订单的总额 x 30% 与客户预付款余额 比较,若小于,则系统需要冻结发货单,将相关数据传入OA系统。需要传入的数据如下:申请人:LIKP-ERNAM为用户工号,通过该工号到表KNA1中找到KNA1-NAME1为申请人名字通过LIKP-KUNAG找到客户代码后,以及LIPS-VBEL
19、V 销售订单号,LIPS-POSNV行项目,取表VBAK的以下字段才能找到以下字段申请部门:VBAK-VKGRP客户代码:VBAK-KUNNR客户名称:KNA1_NAME1客户类别:KNA1-KUKLA付款方式:VBKD-ZTERM(通过销售订单号在表VBKD中查找)客户余额:客户账户余额 VALUE (D) = 客户预付款余额 客户应收款余额应收货款:可用货款:客户余额 ( 发货单产品总额 + 未完全发货的销售订单的总额 x 30%)应收货款:本次发货单总额 可用货款OA审批通过后,通过OA系统释放该发货单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过.并将字段LIKP-SDAB
20、W设置为不能通过人工手工更改。3:客户回款检查:针对付款条款为以下类别的客户,需要检查客户是否有超期欠款。Z006第三月10号Z007第三月15号Z008第三月20号Z009第三月25号Z010第三月28号Z011第四月10号Z012第四月15号Z013第四月20号Z014第四月25号Z015第四月28号Z016开票后10天Z017开票后15天Z018开票后20天Z019开票后30天Z020开票后45天Z021开票后60天Z022开票后75天Z023开票后90天如果客户有超期欠款,发货单保存后需要冻结订单,并给订单拒绝原因LIKP-LIFSK赋值“Z2 客户货款问题”来实现对订单的冻结。系统通
21、过以下逻辑进行判断,BSID-KUNNR 客户编码;BSID-BUKRS 公司代码;BSID-DMBTR 本位币金额;BSID-ZFBDT 基准日期;BSID-ZTERM 付款条款;BSID-ZBT1T 天数;计算:如果基准日期 + 天数BSID-ZFBDT 0,则通过系统提示消息:系统存在过期未收款项,冻结发货单。并向OA发送审批请求。需要将该客户超期欠款的总额数值发送到OA系统的工作表的某个字段中(待OA系统工作表字段确定后完善该信息)需要将以下信息发送到OA系统,超期金额(元):金额(BSID-DMBTR)需要汇总所有超期情况下的金额。超期天数:当前日历天数(基准日期 + 天数),等于超
22、期天数。如果有多笔欠款超期,即BSID有多天满足条件的记录,则取超期最长的天数。而超期金额还是需要去BSID表中的所有超期金额汇总值。同时需要将订单中其他基本信息传入OA工作表:申请人:LIKP-ERNAM为用户工号,通过该工号到表KNA1中找到KNA1-NAME1为申请人名字通过LIKP-KUNAG找到客户代码后,以及LIPS-VBELV 销售订单号,LIPS-POSNV行项目,取表VBAK的以下字段才能找到以下字段申请部门:VBAK-VKGRP客户代码:VBAK-KUNNR客户名称:KNA1_NAME1客户类别:KNA1-KUKLA付款方式:VBKD-ZTERM(通过销售订单号在表VBKD
23、中查找)下图为OA工作流表单的基本格式。需要将超期金额,超期天数数据传入OA表单。给订单拒绝原因LIKP-LIFSK赋值“Z2 客户货款问题”来实现对订单的冻结。OA审批通过后,通过OA系统释放该发货单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过.并将字段LIKP-SDABW设置为不能通过人工手工更改。 3:客户信贷状况检查:客户信贷检查:若该客户为信贷客户,系统会对该客户的发货单做信贷检查,若超过信贷额度,则系统有如下提示;消息提示为:超出动态的信贷额度 717.00 CNY消息号 V1152保存发货单时,系统窗口提示用户,有超过信贷额度的金额,询问是否需要进入审批流程。若用户
24、选择否,则系统删除该订单。若用户选择是,则订单需要进入审批流程,将信息传递到OA系统。将以下提示信息传递到OA系统,申请人:LIKP-ERNAM为用户工号,通过该工号到表KNA1中找到KNA1-NAME1为申请人名字通过LIKP-KUNAG找到客户代码后,以及LIPS-VBELV 销售订单号,LIPS-POSNV行项目,取表VBAK的以下字段才能找到以下字段申请部门:VBAK-VKGRP客户代码:VBAK-KUNNR客户名称:KNA1_NAME1客户类别:KNA1-KUKLA付款方式:VBKD-ZTERM(通过销售订单号在表VBKD中查找)超出的信贷额度可通过事务代码FDK43对应的函数,计算
25、超出金额。调用该函数,输入值为客户代码VBRK-KUNNR,以及信贷范围:HX00找到超过预算值:传入OA系统对应的字段,(OA字段待OA系统确定)。给发货单拒绝原因LIKP-LIFSK赋值“Z2 客户货款问题”来实现对订单的冻结。OA审批通过后,通过OA系统释放该发货单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过.并将字段LIKP-SDABW设置为不能通过人工手工更改。发货单由于输入附加费和折扣冻结后,需要通过与OA做接口,触发OA折扣/附加费审批流程。 将发货单中的客户信息,和含有附加费或者折扣的产品相关信息出入OA的工作表中,作为审批的基础数据。下图为OA工作流的表单格式。
26、红色字段信息需要SAP系统传递到OA系统。申请人:LIKP-ERNAM为用户工号,通过该工号到表KNA1中找到KNA1-NAME1为申请人名字通过LIKP-KUNAG找到客户代码后,以及LIPS-VBELV 销售订单号,LIPS-POSNV行项目,取表VBAK的以下字段才能找到以下字段申请部门:VBAK-VKGRP客户代码:VBAK-KUNNR客户名称:KNA1_NAME1客户类别:KNA1-KUKLA付款方式:VBKD-ZTERM(通过销售订单号在表VBKD中查找)产品编码为订单中含有附加费或者折扣的行项目中的产品编号,及其数量,价格ZPR1(条件类型),及其相应的附加费与折扣值。给发货单拒绝原因LIKP-LIFSK赋值“Z2 客户货款问题”来实现对订单的冻结。OA审批通过后,通过OA系统释放该发货单.需要将字段LIKP-SDABW值赋予Z1 :OA审批通过。并将字段LIKP-SDABW设置为不能通过人工手工更改。8 所需数据表及字段描述8.1 数据筛选逻辑字段描述取数逻辑备注9 单元测试场景屏选选择字段内容测试其它前提测试结果Page 17 of 17