SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
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 相同检查的问题相关推荐
- SAP ABAP 调用事务代码并跳过第一步
有时候可能需要在程序中双击alv界面 调用事务代码 然后进入界面 可以使用SET PARAMETER ID 'XXX' 然后 CALL TRANSACTION 'XXX' *设置参数 (参数的ID ...
- SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析
本文是这篇文章SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍的后续. 在本地新建一个 excel 文件,内容如下: 使用下面的 ABAP 代码进行 ...
- SAP接口集成-abap调用外部数据库
SAP接口集成-abap调用外部数据库 前言 一.SAP配置外部数据源 二.使用步骤 1.新建测试程序 2.使用场景介绍 总结 前言 PI/PO集成方式很多,但是有趣的灵魂不多,现在介绍一个直接用ab ...
- SAP创建Web Service以及用ABAP调用
如果运行 soamanager 打不开,网页显示 devaix .zhongpin.com ,打开 C :\WINDOWS\system32\drivers\etc, 用记事本打开 hosts 文件 ...
- 在SAP API hub自动生成使用ABAP调用API的胶水代码
登录api.sap.com, 找到自己想用ABAP调用的API: API References里,点击Code Snippt, 即可看到API Hub自动生成的使用ABAP调用该API的代码: 要获取 ...
- SAP ABAP 添加企业微信群机器人并调用 API 发送消息
SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...
- SAP ABAP BAPI_GOODSMVT_CREATE 的 GOODSMVT_CODE GM_CODE参数
SAP ABAP BAPI_GOODSMVT_CREATE 的 GM_CODE 参数 引言: GM_CODE 为 BAPI_GOODSMVT_CREATE 货物移动分配事务代码. 关键字:SAP AB ...
- SAP ABAP SteammPunk 蒸汽朋克的最新进展 - 嵌入式蒸汽朋克
Steampunk is going all-in 什么是 SAP ABAP Steampunk(蒸汽朋克)? Steampunk(又名 SAP BTP ABAP 环境):提供一个 ABAP 平台,它 ...
- 最详细的 SAP ABAP Web Service 创建和消费步骤讲解
本文原版发表于 SAP 官方社区,当时用的英文版写作,标题为:Step by step to create, consume and trace web service in ABAP system ...
最新文章
- 拿什么来拯救你,我的table
- css animation 触发,在JavaScript中触发CSS动画
- 为什么python工程师掌握这些就够了_Python学到什么程度才可以去找工作?掌握这4点足够了!...
- BERT+CRF互联网金融新实体发现
- autoLayout+sizeClass屏幕适配
- Dropout和BN层的模式切换
- 利用jquery制作出网页对话框的效果
- 微软快捷键截图_如何在Microsoft Office的屏幕提示中显示快捷键
- 2016山东教师教育网- 一师一优课
- Java实现生成并下载Excel文件
- MATLA矩阵、特征值相关备忘
- 青少年CTF-Web-CheckMe01
- UVa 437 The Tower of Babylon (DAG最长路)
- 4G工业路由器大气环境监测方案
- 微信小程序地图(二) 跑步路线展示
- 服务器过关稳定靠谱有利于网站的运行
- [GitHub][2014-05-11 18:34:13]eqq-python
- JavaSE基础知识点
- IT忍者神龟之hibernate 延迟加载问题探讨
- 即刻下载|连锁零售数字化转型难?领先企业实践助你打开新思路