1/6用友股份-LE支持服务业务本部产品方案--《单据号管理规则问题两例》建立日期:2013-08-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-05682/6文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-08-01徐建军产品支持部V1.0版本领域模块备注3/6目录单据号管理规则问题两例........................................................................................4一、问题1:.............................................................................................................4二、问题2:.............................................................................................................54/6单据号管理规则问题两例最近遇到两个业务单据无法获取单据号的问题,由于这种问题,会直接导致客户无法做业务单据,对于客户的业务造成很大的影响,因此在处理这种问题的时候要提高响应速度,尽快将问题解决。一、问题1:问题描述:版本55销售订单单据号管理中启用对象标识销售组织,在新增单据时经常会提示单据号已存在,目前系统一直提示单据号已存在,无法做单据。问题分析:此问题单据号管理规则是集团分配到公司,并且启用了对象标识,此种应用就有些复杂了。首先一旦启用了对象标识后,拿这个问题来举例,公司的销售订单启用了销售组织的对象标识,如果有两个销售组织的话,流水号是按照销售组织来的,也就是按照销售组织来分配流水号,一个销售组织一套流水号。在遇到单据号已经存在的问题时,基本上有两种情况需要判断1、如果单据编码规则是自动断号补号的,首先检查退号表中的退号,然后检查在业务表中查看是否存在这个单据号2、公司编码流水号(pub_billcode_corpsn)表中,按照单据类型、pk_corp(如果有对象标识,pk_corp就变成对象标识的pk了)查询出lastsn(最后一个流水号),这样就能知道下一个要获取的5/6流水号是什么,然后新的单据号也就清楚了,然后在业务表中查看是否存在这个单据号。解决方案:此项目这个问题发现是第2种情况,lastsn为00000,竟然归零了(设置的是按月归零),然后通过脚本,将此字段更新为业务表中的最大的流水号即可。但是后来又出现了这种情况,而且不止一个公司,然后通过开发处理,发现了一个产品的bug,即公司级单据号规则归零操作时会更新相同单据类型其他公司的单据号,提供了下面的补丁,NC_UAP_KHH-NC5.5-Patch-20100316-201299079,打上此补丁后还是要手工去修改lastsn。二、问题2:问题描述:版本56,库存,材料出库单单据号设置按日流水号归零失效,现在发现流水号不归零,导致流水号已经满了,现在无法做单据,特急,代码数据已上传问题分析:此问题系升级到56后发现的产品问题,单据的流水号管理是在集团统一管理的,系统在按日归零的处理上出现了问题,导致流水号一直累加,由于客户方设置的流水号是3位,因此很快流水号就满了。解决方案:6/6在这种情况下,首先,先将流水号指定到001,让客户先做单据,查询具体的一些表如pub_billcode_rule(单据编码规则表)看是否归零标志在后台存储的值有问题,然后检查各公司的最后的流水号(lastsn)在表pub_billcode_corpsn中,检查完毕没有发现什么特别的问题,请开发支持,最终发现代码问题,系统在归零的时候,对于集团控制的单据号规则,应该是一个公司归零,则所有公司都归零,但是客户环境中只是归零了一个公司的,导致了此归零后还修改了单据编码规则表的day字段,造成别的公司在做单据的时候,检查day和当前的日期一致,就不归零了,提供了下面的补丁解决。但是在打上此补丁后需要手工去修改表pub_billcode_rule中的day的值,updatepub_billcode_rulesetday='20'wherepk_billtypecode='4D',此脚本中的day的值,需要比当前日期的天数小即可,如今天(22号)测试的话,day的值可以是1到21之间的值。补丁:NC_UAP_KHH-NC5.6-Patch-20101221-202868942。经过上面的两个例子,对单据号有了更深入的认识,遇到问题的时候,注意检查一下后台的几个单据号管理的表,先将客户的数据搞清楚,然后再分析。