BAPI_GOODSMVT_CREATE

我想,搜到这篇文章的朋友,都用过,或者准备用BAPI_GOODSMVT_CREATE方法。由于时间的关系,我就不复述这个方法怎么用了。说点儿我遇到的问题。

应用场景:把已经投到生产订单1中的物料A,从生产订单1中冲销出来,直接投到生产订单2中。

起初是调用两次BAPI_GOODSMVT_CREATE方法,分别去生成冲销物料凭证和投料物料凭证。但这种方法遇到了问题,例如冲销凭证生成之后,投料凭证生成失败了。其实就是没处理好事务。

所以,就想能不能在一张物料凭证里,即生成移动类型是261的明细,又生成移动类型是262的明细。代码如下,从原来程序里复制过来的。红色粗体的那行代码是我后加的,起初没写。以为给不同的move_type就能实现我的需求。但经过测试发现,如果不写红色粗体的那句话,生成的物料凭证,明细行的移动类型都是262。加上“itab-xstob = ''.”才实现了我想要的效果。

第二个问题,如果物料A当前非限制使用的库存数量是0的话,如果物料凭证里第一条明细的移动类型是261,第二条明细的移动类型是262,是会报错的。我的解决办法是按移动类型做了降序排序。下表中蓝色粗体的那行语句。

  LOOP AT pciabt.
    itab-move_type  = '262'.
    itab-plant      = pciabt-plant.
    itab-material   = pciabt-material.
    itab-entry_qnt  = pciabt-qty.
    itab-entry_uom  = pciabt-erfme.
    itab-item_text  = pciabt-zseq.
    itab-stge_loc   = pciabt-issue_loc.
    itab-orderid     = pciabt-aufnr.
    itab-reserv_no   = pciabt-reserv_no.
    itab-res_item    = pciabt-res_item.
    itab-xstob       = 'X'.
    APPEND   itab.
  ENDLOOP.
  LOOP AT pciabt2.
    itab-move_type  = '262'.
    itab-plant      = pciabt2-plant.
    itab-material   = pciabt2-material.
    itab-entry_qnt  = pciabt2-qty.
    itab-entry_uom  = pciabt2-erfme. 
    itab-item_text  = pciabt2-zseq.
    itab-stge_loc   = pciabt2-issue_loc.
    itab-orderid    = pciabt2-aufnr.
    itab-reserv_no  = pciabt2-reserv_no.
    itab-res_item   = pciabt2-res_item.

    itab-xstob       = ''.
    APPEND   itab.
  ENDLOOP.

  SORT itab BY move_type DESCENDING.
*  SORT itab BY move_type.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rarenmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值