java bapi_goodsmvt_create_HU_CREATE_GOODS_MOVEMENT报错:对象清单抬头数据中的差异

在使用Java调用BAPI_GOODSMVT_CREATE_HU_CREATE_GOODS_MOVEMENT创建物料凭证过程中,当先后针对不同工厂的数据进行操作时,出现错误。错误发生在SERNR_COPY_DOC_DOC函数中,原因是未正确清理调用前的状态。解决办法是在每次调用BAPI之前,先调用SERIAL_INTTAB_REFRESH和HU_CREATE_GOODS_MOVEMENT函数来清空变量。此外,连续调用BAPI而不提交也会导致错误。
摘要由CSDN通过智能技术生成

对于已经创建HU的物料,调用HU_CREATE_GOODS_MOVEMENT

创建凭证的时候遇到了下面的问题

f113ac53f93c510f5a49d04923222532.png

情景是这样:

先对ct00 工厂的数据进行了bapi调用

commit后

又对CT20 工厂数据进行操作

这个时候就报错了。

报错位置  SERNR_COPY_DOC_DOC

7c7c9558dc39861231ad941615d1287c.png

很好奇这个原因,因为同时把两个工厂数据维护到参数里一起过账,是没问题的。

但是分着调用就出问题了。

按这个代码分析是没清空什么内容。

然后在这个检查函数所在的函数组中发现下面的函数

所以每次调用前先加上这个就行了

"清空变量

CALL FUNCTION 'SERIAL_INTTAB_REFRESH'

* EXPORTING

*   OBJECTS_STATUS_REFRESH       = ' '

.

CALL FUNCTION 'HU_CREATE_GOODS_MOVEMENT'

EXPORTING

if_event       = if_event

if_commit      = space

is_imkpf       = is_imkpf

it_move_to     = it_move_to[]

it_external_id = it_external_id[]

IMPORTING

ef_posted      = l_subrc     "return

es_message     = wa_message  "export message

et_messages    = it_message[]. "

另外调用完一次BAPI不commit就紧接着调用HU_CREATE_GOODS_MOVEMENT 或者BAPI_GOODSMVT_CREATE,会报错。

7dae71f6003cdb4d75f25a7b7bb697e8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值