** _如果某件事情可能出错,那么它就一定会出错!_ **
** _—— 墨菲_ **
今日暂不分享技术文档给大家,而是把最近踩的坑,找两个出来跟大家分享一下,让大家乐呵乐呵。
**坑1:如题**
此处代码量很大,我将其缩减,将关键代码贴出,请看图:
** 背景: **
1.原有的程序,使用 sy -dbcn t 判断③和④处的查询结果。如果没找到数据,则要传特殊库存为K。
2.现在逻辑,需要我在②处增加查询语句,然后就掉入了陷阱。
** 原因: **
1.原逻辑中,如果移动类型为301/311,逻辑无误,但如果是其他移动类型,则sy-
dbcnt就判断不到自建表A的查询结果。该情况下便会往上追溯,追溯到①处的查询结果,而且恒等于1。恰恰这样的逻辑又正好符合业务需求,一直创建非K的凭证。此处就像一个马蜂窝,挂在枝头。
2.我在②处增加了查询逻辑,就导致⑤处的sy-dbcnt判断,追溯到②的查询结果,就导致一旦②处查询不到数据,便创建K库存凭证。
3.修改之后,不太充分的测试,未发现②为空时,创建的K库存凭证,以致于影响扩大。
这个马蜂窝终究还是砸身上了。
** 纠正: **
1.对某过程结果的判断,请紧紧跟随该过程的代码块,越多的情况判断,越要紧紧相连。
2\. **充分测试! 充分测试! 充分测试! **
**坑2:关于批导**
用户使用原有批导程序创建销售订单,修改时发现销售订单报错:日期无效。
查找原因发现,在定义Excel导入内表时,开发人员全部定义了字符类型
** 纠正: **
此处尽可能参考表-字段来定义
**原因1:**
当日期类字段用char去接,未做特殊处理,直接传入BAPI。当字段为空值时,便导致空字符传入标准表日期字段中,形成无效日期值
在调用修改BAPI时,也要注意,不能将空字符串传入日期字段进行置空更新,否则也会导致日期无效
**原因2:**
参考表-字段定义内表字段,来接收Excel数据,可以过滤一部分不规范数据,也能起到检查作用,减少错误数据进入标准表的情况
以上就是这两个坑,问题也解决了,讲出来让大家乐呵乐呵。
我就不乐啦,因为乐不出来了 