SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题

引言: 调用 MIGO 的BAPI(BAPI_GOODSMVT_CREATE)实现特定业务的物料移动是每位开发都绕不开的的活。最近我用 BAPI 实现公司间调拨批量收货时遇到了一个奇怪问题:未发货过账的公司间调拨直接成功收货,没有任何提示!

关键字:SAP ABAP BAPI_GOODSMVT_CREATE MIGO MB0A

文章目录

  • SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
    • 1. 原因分析
      • 1.1 业务层面的分析
      • 1.2 ABAP层面的分析
    • 2. 进一步验证
    • 3. 如何解决
    • 4. 思维发散
    • 其他

1. 原因分析

  • 根据从业经验,这要么是我的问题,要么是 SAP 的问题。
    经过一番思考和请教,我发现这个问题很有趣,这既有我的问题,SAP 也脱不了干系,为什么这么说,请看我以下的两点分析。

1.1 业务层面的分析

  • 调拨业务,一般的业务流程是发货过账(GI)在先,收货过账(GR)在后。但这不是绝对的,以公司间调拨和工厂间调拨为例。
  • 公司间调拨,从记账的角度,这是两个不同公司代码下的账,记账原则上只追求物料移动借贷相等,并产生两张物料凭证,因此 GR 是可以在 GI 之前的。
  • 工厂间调拨,从记账的角度,这是同一个公司代码下的账,记账使用“一步法”,只产生一张物料凭证,没有操作上的先后。

1.2 ABAP层面的分析

  • MIGO 收货:我们在实际操作时,提示“交货 8000153752 的收货不可能:错误码 3”,下图。
  • BAPI_GOODSMVT_CREATE 收货:成功!
  • 分析小结:虽然从业务层面可以解释公司间调拨的GR可以在GI之前,但是,我们在实际操作 MIGO 收货时,却提示收货不可能。此时男人的第六感告诉我:前台 MIGO 和 BAPI 的执行不一致。

2. 进一步验证

除了实践,没什么比 Note 更有公信力:356665

这个 Note 其实不是主讲这件事,不过也明确提及了 BAPI 不会执行与 MIGO 一样的检查

3. 如何解决

执行 Note 建议,使用函数 SD_DELIVERY_ITEMS_RECEIVE 进行收货的前置检查,直接上代码,下图。

两点说明:
1)非常值得注意的是,我这里进行的是交货订单级别的检查,如果你需要行项目级别的检查,请务必填写行项目号。
2)为什么详细处理了函数的Exceptions参数?这里可以参考我的另一篇文章:

SAP ABAP 如何处理函数抛出的例外参数消息文本(Function Exceptions)

实现效果,下图。

4. 思维发散

  • MIGO 是 SAP 业务抽象的大动作之一(此外还有如 BP ),从 SAP 版本时间线上看,MIGO 的功能整合 SAP 一直在进行,在 S4 的体现中尤为突出,在1610版本中会直接报错强制采用 MIGO 进行处理。
  • 对已有的功能进行整合是一项大工程,要考虑的问题非常多,小心翼翼、步步为营又举步维艰, BP 和 MIGO 就是其中两个很典型的例子。可能也因为这样,难免会有一些遗漏或新的想法,如文章中的这个问题。
  • 对 BAPI_GOODSMVT_CREATE 这个 BAPI 我相信还有更多的问题,这一点从我们经常重新启用 MB 事务码就可以佐证,而在 SUPPORT 和 SCN 中,我也看到了巨量 MIGO 相关帖子。

注意:

  • 可能不同版本的ERP组件此BAPI的实现版本不同,以Note声明为准
  • MB0A是已过时的事务码

其他

我的微信群、QQ群和其他发布平台。

  • 关于微信群、QQ群和其他发布平台

长期提供开发和运维服务。

  • 关于提供开发和运维服务的详情

SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题相关推荐

  1. SAP ABAP 调用事务代码并跳过第一步

    有时候可能需要在程序中双击alv界面 调用事务代码 然后进入界面 可以使用SET PARAMETER ID 'XXX'  然后 CALL TRANSACTION 'XXX' *设置参数 (参数的ID ...

  2. SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析

    本文是这篇文章SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍的后续. 在本地新建一个 excel 文件,内容如下: 使用下面的 ABAP 代码进行 ...

  3. SAP接口集成-abap调用外部数据库

    SAP接口集成-abap调用外部数据库 前言 一.SAP配置外部数据源 二.使用步骤 1.新建测试程序 2.使用场景介绍 总结 前言 PI/PO集成方式很多,但是有趣的灵魂不多,现在介绍一个直接用ab ...

  4. SAP创建Web Service以及用ABAP调用

    如果运行 soamanager 打不开,网页显示 devaix .zhongpin.com ,打开 C :\WINDOWS\system32\drivers\etc, 用记事本打开 hosts 文件 ...

  5. 在SAP API hub自动生成使用ABAP调用API的胶水代码

    登录api.sap.com, 找到自己想用ABAP调用的API: API References里,点击Code Snippt, 即可看到API Hub自动生成的使用ABAP调用该API的代码: 要获取 ...

  6. SAP ABAP 添加企业微信群机器人并调用 API 发送消息

    SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...

  7. SAP ABAP BAPI_GOODSMVT_CREATE 的 GOODSMVT_CODE GM_CODE参数

    SAP ABAP BAPI_GOODSMVT_CREATE 的 GM_CODE 参数 引言: GM_CODE 为 BAPI_GOODSMVT_CREATE 货物移动分配事务代码. 关键字:SAP AB ...

  8. SAP ABAP SteammPunk 蒸汽朋克的最新进展 - 嵌入式蒸汽朋克

    Steampunk is going all-in 什么是 SAP ABAP Steampunk(蒸汽朋克)? Steampunk(又名 SAP BTP ABAP 环境):提供一个 ABAP 平台,它 ...

  9. 最详细的 SAP ABAP Web Service 创建和消费步骤讲解

    本文原版发表于 SAP 官方社区,当时用的英文版写作,标题为:Step by step to create, consume and trace web service in ABAP system ...

最新文章

  1. 拿什么来拯救你,我的table
  2. css animation 触发,在JavaScript中触发CSS动画
  3. 为什么python工程师掌握这些就够了_Python学到什么程度才可以去找工作?掌握这4点足够了!...
  4. BERT+CRF互联网金融新实体发现
  5. autoLayout+sizeClass屏幕适配
  6. Dropout和BN层的模式切换
  7. 利用jquery制作出网页对话框的效果
  8. 微软快捷键截图_如何在Microsoft Office的屏幕提示中显示快捷键
  9. 2016山东教师教育网- 一师一优课
  10. Java实现生成并下载Excel文件
  11. MATLA矩阵、特征值相关备忘
  12. 青少年CTF-Web-CheckMe01
  13. UVa 437 The Tower of Babylon (DAG最长路)
  14. 4G工业路由器大气环境监测方案
  15. 微信小程序地图(二) 跑步路线展示
  16. 服务器过关稳定靠谱有利于网站的运行
  17. [GitHub][2014-05-11 18:34:13]eqq-python
  18. JavaSE基础知识点
  19. IT忍者神龟之hibernate 延迟加载问题探讨
  20. 即刻下载|连锁零售数字化转型难?领先企业实践助你打开新思路

热门文章

  1. 业务知识 - 行业笔记
  2. React使用cra创建项目,开启装饰器
  3. js牛客网、赛码网输入输出
  4. React —— Descriptions(根据自己需求判断要显示哪些)
  5. 数码摄影入门:焦距是什么?
  6. Altium designer AD原理图导入word文档、pdf,生成矢量图的方法;
  7. 美国国土安全部仍然使用 COBOL 语言
  8. JAVA的诞生及版本
  9. DEBUG 代码调试
  10. 浅谈共线性的产生以及解决方法(上篇——前世)