项目上做销售订单BOM创建的接口,开发测试过程中遇到了以下几个问题,做了笔记
1.CSAP_ORD_BOM_CREATE 参数问题
函数CSAP_ORD_BOM_CREATE中有一个时间字段参数VALID_FROM,关联类型为CSAP_KBOM-DATUV,CSAP_KBOM-DATUV组件类型为DATUV_BI,其实是CHAR10的字符串类型,但是我们ABAP中普通的时间DATEFROM 其数据类型为8位的DATS类型,这就需要我们通过函数进行转化,使用的函数为CONVERT_DATE_TO_EXTERNAL
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = IS_HEAD-DATUV
IMPORTING
DATE_EXTERNAL = LV_VALID_FROM "根据用户日期格式参数输出:YYYY.MM.DD
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
IF SY-SUBRC NE 0 .
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
2.数量及组件数量问题
这个问题其实很坑,最终的原因找到都要笑死
问题描述:接口开发测试过程中,开发环境上测试,数据没问题,但是到了生产环境,数据量莫名的被扩大了1000倍,最终通过DABUG发现函数CSAP_ORD_BOM_CREATE在底层代码里扩大了1000倍,于是呼,修改传入的数量/1000。以为问题解决了,后来测试部分数据又变为缩小10倍,部分数据又准确,于是乎,再次DABUG,发现该函数跟用户的基本缺省配置有关系,见下图
SU01用户设置
若我选择X,数据不会扩大1000倍,但是选择Y就会默认扩大1000倍,其原因为函数底层代码中会根据用户缺省配置,通过 , 及 . 去处理数据,有兴趣的可以自己研究下