问题现象:销售订单投产时提示维护低层码或无清单,查询确定有清单,维护低层码后还是一样,不能正常投产。
解决思路:
1、按提示操作,先确认下是否有此存货的物料清单,并做下低层码维护。但是操作之后还是提示这个,那说明并
不是此问题提示上的原因引起的,那就需要跟踪数据查找具体是什么原因引起。
2、一般分析跟踪内容都会从最后面一条条分析过来,如果是报表的,那么最后面的脚本应该是实现报表的查询内
容,然后一步步倒退,此问题先把最后一条语句拿到查询分析器下执行。
3、执行这个存储过程报错,那就需要查看这个存储过程里为什么会提示对象名“podetails_dcb”无效。
4、查看存储过程“pp_qjsotomo”,这个存储过程只调用podetails_dcb,但没有创建,那说明此表不是在存储过程创
建的,可能是在执行就创建了。那么我们在跟踪的内容中找到创建的脚本。
5、把这个创建此表的脚本在查询分析器下执行,再执行原来的存储过程看下是否有问题。
6、说明这个存储过程里的某个代码执行的时候报错了,这个需要查看存储过程具体是什么原因。
7、调试存储过程,定义变量,并给变量赋值,具体的数值就是执行代码中的那些数值:
8、 找到报错的代码,是执行以下语句报错了
9、 因为#tmppp 表里的cdefine8 字段的比临时表TMPPP_QJTC_7378099 的长度长。
10、 最后发现#tmppp 表里的cdefine8 字段来自于销售订单主表里的cdefine8,cdefine8 里的字段长度是300,但是临时表TMPPP_QJTC_7378099 的长度是4.这样插入的时候就报错了。
解决方法:修改so_somain表里cdefine8的内容,把他的内容长度更改为4位的,由于客户是误操作带入了cdefine8的内容,客户在单据格式设置的时候设置cdefine8 带入客户档案里的客户名称,没有意义,可以把此内容置空。
update so_somain set cdefine8=null
建议:不要随意更改数据库表里的字段长度,因为不定这个字段就会在临时表里被调用,结果就可能出现报错现象。