电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

用友ERP-U8知识---872参照发货单生成销售出库单修改数量.ppt优质

用友ERP-U8知识---872参照发货单生成销售出库单修改数量.ppt_第1页
1/72
用友ERP-U8知识---872参照发货单生成销售出库单修改数量.ppt_第2页
2/72
用友ERP-U8知识---872参照发货单生成销售出库单修改数量.ppt_第3页
3/72
872参照发货单生成销售出库单修改数量用友软件股份有限公司U8客服中心161号2009年08月09日接电话过程中遇到这样一个问题872.参照发货单生成销售出库单,保存前修改出库单部分行记录的数量为0,然后保存。之后再对销售出库单进行修改数量,客户那里一直这样来做销售出库业务。但是修改销售出库单时发现一个现象:部分单据上数量为0的记录允许修改数量,部分单据上数量为0的记录不允许修改数量?客户希望所有单据都能修改数量。问题描述:分析思路:首先肯定要先测试一下,是否可以还原客户的现象,因为客户说的现象,我们在测试学习过程中一般都不会这样去做…测试:由于客户的销售出库单都是多行记录,所以录入销售发货单:20080229001,由多行记录组成。参照生成销售出库单,修改其中一行记录数量为0,系统允许保存!测试:之后再进行修改数量,没有还原客户的现象,可以修改。测试:但是客户很肯定,有的销售出库单单据上为0的记录不允许修改,难道是数据有异常,还是补丁的原因?找补丁打全的机子测试。继续分析:在补丁打全的测试机上测试,录入发货单:0000000022,参照生成销售出库单,修改数量为0,保存。测试:之后再修改数量,不能修改了,显示为灰色!测试:难道是补丁的原因?但是单独查询补丁,并没有相关的说明。不对,在补丁打全的测试机上我录入的销售发货单上是一行存货,而在没有打不到的测试机上我录入的是多行存货,难道和这个有关系?再次测试…???在没有打任何不到的测试机上录入发货单:20080229002,表体只有一行存货测试:参照生成销售出库单,修改数量为0,保存。测试:之后再进行修改数量,也显示为灰色!测试:与补丁无关!与数量有关,感觉是系统按合计数量来进行判断,为0或者不为0。模糊的结论:那么后台是这样判断的吗?分别对20080229001和20080229002对应生成的销售出库单修改,通过事件探查器进行对比,发现有一条语句很特别。后台跟踪:对发货单20080229001对应生成的销售出库单修改:SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDselecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=355SETTRANSACTIONISOLATIONLEVELREADCOMMITTED注:发货单20080229001对应出库单收发记录主表标识id=355语句分析:放到查询分析器中运行一下查询数据字典显示:cSaleOut-出库单据号字符串bQANeedCheck-是否质检对发货单20080229002对应生成的销售出库单修改:SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDselecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=357SETTRANSACTIONISOLATIONLEVELREADCOMMITTED注:发货单20080229002对应出库单收发记录主表标识id=357语句分析:放到查询分析器中运行一下查询数据字典显示:cSaleOut-出库单据号字符串bQANeedCheck-是否质检只有这一行语句运行的结果有差异ST或者NULL说明(摘自SQLServer帮助):SETTRANSACTIONISOLATIONLEVEL:控制由连接发出的所有MicrosoftSQL®ServerSELECT™语句的默认事务锁定行为。语法SETTRANSACTIONISOLATIONLEVEL{READCOMMITTED|READUNCOMMITTED|REPEATABLEREAD|SERIALIZABLE}初步理解:首先测试存货均为非质检存货。当修改销售出库单时,系统判断对应销售发货单在DispatchList(发货退货单主表)中cSaleOut(出库单据号字符串)与bQANeedCheck(质检)字段,然后执行是否对销售出库单表体记录进行锁定。那么cSaleOut(出库单据号字符串)在数量为0时没有回写DispatchList(发货退货单主表)?跟踪一下这两种情况下销售出库单的保存过程,进行对比。产生一个疑问:数量不为0的情况下数量为0的情况下从这两句之后的运行语句就不一样了。selectmax(id)asid,autoid,Sum(iquantity)asiquantity,sum(inum)asinum,max(cinvcode)ascinvcode,Max(corufts)ascorufts,max(idlsid)asidlsid,sum(iOperate)asiOperateinto#Ufida_WBBuffers_STfrom#Ufida_WBBuffersgroupbyautoidhaving(Sum(iquantity)<>0orSum(inum)<>0)update#Ufida_WBBuffers_STsetcorufts=''whereiOperate<>2selecttop1idlsidfrom#Ufida_WBBuffers_STwhereisnull(idlsid,0)<>0语句分析:关键点就在于:having(Sum(iquantity)<>0orSum(inum)<>0)合计数量或合计件数不为0语句分析:当合计数量或件数不为0查询不到结果时,之后没有回写DispatchList(发货退货单主表)cSaleOut(出库单据号字符串)的语句。当合计数量或件数不为0可以查询到结果时,之后存在回写DispatchList(发货退货单主表)cSaleOut(出库单据号字符串)的语句。语句分析:当合计数量或件数不为0可以查询到结果时语句为:updatedispatchlistsetcSaleOut=N'ST'fromdispatchlistinnerjoin#tmpdlidbondispatchlist.dlid=b.dlidinnerjoindispatchlistsconc.dlid=dispatchlist.dlidinnerjoinrdrecordsonc.idlsid=rdrecords.idlsidwhereisnull(cSaleOut,'')=''orisnull(cSaleOut,'')='ST'客户现象还是不能重现!!!那么客户那里的现象,销售出库单表体是多行记录,根据以上测试结果,多行记录的发货单参照生成出库单,只要合计数量或件数不为0,则回写DispatchList(发货退货单主表)cSaleOut(出库单据号字符串)为“ST”,此时再修改销售出库单,是可以修改的。但客户那里有部分销售出库单不能修改数量…还是不能重现客户的现象~被忽略的细节销售出库单可以参照多张发货单生成,如果这种情况下,修改出库单上部分行的数量为0,是否就是客户的现象了?忽略的一点:根据语句进行分析:selecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=XXX测试一下top1是怎么取的。整理思路:录入销售发货单:20080229003和20080229004测试:参照生成一张销售出库单020500001,参照时我先选择销售发货单20080229003,表体显示第一行是存货A,第二行为存货B,然后修改存货A的数量为0,保存。测试:测试:再修改,此时表体数量都不能被修改了!跟踪查看一下后台语句:SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDselecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=359SETTRANSACTIONISOLATIONLEVELREADCOMMITTED注:销售出库单020500001收发记录主表标识id=359语句分析:在查询分析器运行一下看看:显示的cSaleOut(出库单据号字符串)为NULL,所以被锁定了。语句分析:取消top1,查询全部结果:显示一行为NULL,一行为ST语句分析:那么NULL是哪一行呢?是销售发货单20080229003吗?修改语句查询,将单据号显示出来。语句分析:再扩展一下语句看看当关联rdrecord(收发记录主表),查询到的也是销售发货单20080229003对应的记录语句分析:语句分析:此时检查一下rdrecord表的记录与发货单主表的对应关系。删除销售出库单020500001,重新参照生成另一张销售出库单020500002,参照时我先选择发货单20080229004,表体显示第一行是存货B,第二行为存货A,然后还是修改存货A的数量为0,保存。测试:测试:再修改数量,此时表体数量都可以被修改!测试:查看一下此时的后台语句:SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDselecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=361SETTRANSACTIONISOLATIONLEVELREADCOMMITTED注:销售出库单020500002收发记录主表标识id=361语句分析:查询分析器中运行一下,看看查询结果语句分析:修改语句查询,取消top1,将单据号显示出来。这次取到的是销售发货单20080229004对应的纪录语句分析:再扩展一下当关联rdrecord(收发记录主表),查询到的也是销售发货单20080229004对应的记录语句分析:此时再检查一下rdrecord表的记录与发货单主表的对应关系。语句分析:初步结论:参照多张销售发货单生成一张销售出库单,系统会按照选单时选择到的第一张发货单回写rdrecord(收发记录主表)对应cDLCode(发货退货单主表标识)与cBusCode(对应业务单号),而系统在判断修改单据数量锁定时,取TOP1也是取到的此选择到的第一张发货单对应的cSaleOut(出库单据号字符串)的值。其实无论销售出库单表体如何去排序,直接查看表头的“业务号”就可以知道参照时哪一张发货单是选择的第一张了。注:一个可能不是问题的问题一个可能不是问题的问题:判断是否锁定时bQANeedCheck(是否质检)有什么作用?其实分析一下语句就能理解:selecttop1h.cSaleOut,d.bqaneedcheckfromdispatchlisthinnerjoindispatchlistsdonh.dlid=d.dlidinnerjoinrdrecordsrsonrs.idlsid=d.idlsidwhereisnull(d.bqaneedcheck,0)=0andrs.id=XXX质检属性存货系统是不会进行表体数量锁定的,因为语句中只过滤非质检属性存货。验证一下。分析结果:设置质检属性存货C,录入销售发货单20080229005,报检-检验,合格出库,生成销售出库单020400001。测试:测试:修改数量为0保存,之后再进行修改数量,可以改,没有被锁定。测试:再检查一下后台语句。没有任何记录,所以没有被锁定。注:销售出库单020400001收发记录主表标识id=365语句分析:如果是退货质检,测试根本就不会有这种现象出现,因为:测试:结论产生非质检属性存货,参照多张销售发货单生成销售出库单时,如果参照时被选中的第一张发货单(如果只是参照一张销售发货单,则直接判断被参照的发货单)的合计数量或件数不为0,系统回写cSaleOut(出库单据号字符串)为“ST”,这种情况下,销售出库单的数量在保存之后再进行修改时系统不会进行锁定,数量允许修改。反之合计数量或件数为0,系统不回写cSaleOut(出库单据号字符串),cSaleOut(出库单据号字符串)为“NULL”,这种情况下,销售出库单的数量在保存之后再进行修改时系统进行锁定,数量不允许修改。最终结论:客户问题的解决方案终于重现了客户的现象,其实就是软件的一个判断与控制,也明白了此处判断与控制的原理。对于客户的问题,解决方案是对于不能修改数量的销售出库单,只能再次参照之前销售发货单生成新的一张销售出库单来解决。解决方案:谢谢大家!

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

用友ERP-U8知识---872参照发货单生成销售出库单修改数量.ppt

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信