SAP CO11N BAPI_PRODORDCONF_CREATE_TT连续报工异步更新导致COGI解决方案

背景:

之前上一个项目上有同事碰到一个问题,外围接口数据进入SAP,可能会对同一工单同一工序进行连续多次报工,并且工序控制码配置的是会自动货物移动的,所以正常来说,调用完BAPI完之后除了报工数量会更新之外,还会自动收货产生一条物料凭证,当时的问题是,按照正常方式在接口中连续调用BAPI之后,发现报工的数量正常更新了,但是MIGO物料凭证并没有正常产生,比如报工了5次,每次数量是1000,最终报工数量正常,但是收货只有1000,其他的4000进了COGI,查看报错消息会发现是账号锁定问题,当时项目上同事采用了wait up to xxx seconds的方式进行解决,但这个方式是解决异步提交延迟问题最不建议的一种方式,在大批量数据处理中很浪费时间,所以最近抽空调查了一下这个问题的解决方向。

调查过程:

通过一些标准note的解释可以了解到,报工中涉及货物移动的处理是有单独的更新进程去触发的,而且是异步更新,所以即使在调用完BAPI_PRODORDCONF_CREATE_TT之后使用BAPI_TRANSACTION_COMMIT并附加WAIT参数去提交,也可能会出现因为货物移动没有处理完成而导致锁没有释放,从而产生COGI记录。

针对note中提到的将OPK4中的“自动售货”、“反冲”、“实际成本”都设置为“立即联机”,在系统中经过测试也确实并不能解决这个问题。

针对这种异步提交导致锁定,从而产生COGI的问题,官方note给出的解决方案如下,执行程序CORUPROC进行处理,如果要基于订单和工厂去处理,可以实施note:1008686。

场景还原:

初始状态:

模拟针对同一个订单同一道工序连续报工5次,每次报工1000个:

执行结果:

可以看到,虽然报工都成功了,AFRU表也成功更新了报工数量,但是货物移动只成功过账了1000,其余4000都由于锁定问题进了COGI,这种情况可以手工COGI重新执行进行处理,也可以调用程序CORUPROC进行处理:

虽然可以在报工完成后调用CORUPROC去处理COGI的问题,但是异步更新仍然有可能会导致BAPI_PRODORDCONF_CREATE_TT直接报错:

所以除了wait的方式是否有其他方式解决该问题?有。

解决方案:

通过多次的debug及尝试,发现如下两处地方的参数可以控制货物移动以同步提交的方式完成:

增强点1:

增强点2:

测试验证:

以上,问题解决,不会再出现锁定问题导致的COGI。

补充:

绝大部分BAPI异步提交的问题根本原因都是因为内部有COMMIT WORK语句(没有附加 AND WAIT),部分BAPI会有类似NO_COMMIT或者COMMIT_AND_WAIT等类似的参数来控制是否内部提交,或者内部以同步更新方式提交,所以很多时候需要同步提交处理BAPI的时候,不妨查看源码,看是否可以通过这些参数来避免内部以异步方式提交,因为如果在BAPI内部COMMIT WORK之后,外部再次使用BAPI_TRANSACTION_COMMIT(WAIT = 'X')或者COMMIT WORK AND WAIT是没有用的,所以我们只需要通过一些手段(比如增强,或者通过BAPI的控制参数)来避免BAPI内部进行异步提交即可解决这个问题,WAIT的方式并不推荐使用。

残留疑问:

虽然按照上述方式可以解决该问题,但我仍然没能说服自己为什么BAPI之后的COMMIT WORK AND WAIT为什么不起效果,因为更新进程被COMMIT WORK AND WAIT触发将会是以同步方式进行的,主流程中的锁会被带到V1更新进程中,当V1更新进程执行完毕会自动释放锁,虽然报工的BAPI会触发V2更新,但我单步跟踪过,V2的更新进程中并没有上锁的操作,按道理在BAPI之后同步提交应该不会有锁的存在,所以我仍然没能清晰准确的找到note中提到的单独的更新进程是在哪里触发的,可能调试过程中还是漏看了一些过程,等有空再仔细追踪一下。

Synchronous and Asynchronous Updating | SAP Help Portal

以上。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

需求之 实现获取调试信息在h5页面,在手机端可以查看调试(二)

事实证明 chatgpt很好用,有不懂的问题可以问它 https://zhuanlan.zhihu.com/p/690118775 国内外9个免费的ChatGPT网站 我筛选出来的比较好用免费的网站 fchat.dykyzdh.cn/ 这个也可以 阿里云的 通义灵码 在vscode中安装使用 而且阿里云有一个产品,可以…

我用过最好的GPT,NewspaceGPT使用心得

记住网址:https://newspace.ai0.cn 前言 只要你能表达明白,NewspaceGPT就不会让你失望。 Gpt4o预测GPT5 IT之家6月22日消息,在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布&…

MATLAB | 怎样绘制这样的环形柱状图

Hey, 各位又是好久不见,最近忙到后台消息都有些来不及看,非常抱歉,今天带来一个环形柱状图绘制的简易小代码,绘制效果如下: 下面直接给出完整代码,替换一下数据即可,代码都有注释的: 完整代码 …

PID理解

一、背景 pid理解 前几天看了bilibili的视频,链接:更好的理解PID【通过推小车的过程】,那个人使用matlab调整pid,另外使用推小车这个假设来解释pid。我其实当时也只是听懂一些,然后后面自己又琢磨。感觉是理解了。这…

python--fasApi学习(Dash+FastAPI框架)

在学习fastApi 框架时,发现了一个好用的框架,参考: 博客参考: https://blog.csdn.net/gitblog_00002/article/details/137331157下载文档并部署: 下载代码: git clone https://gitee.com/insistence2022/…

星戈瑞Sulfo-CY7 NHS Ester结构与荧光性质

【星戈瑞stargraydye】以下数据均来自文献资料,星戈瑞暂未进行独立验证, 仅供参考! Sulfo-Cy7 NHS Ester是一种应用于生物医学领域的荧光染料,其结构特性和荧光性质使其在荧光标记、组织成像和药物追踪等方面发挥着作用。 Sulfo-Cy7 NHS Ester的结构特性…

python接口自动化测试数据和代码分离解析

common中存放的是整个项目中公共使用的封装方法 从工程目录上可以看到区分 datas中专门存放测试数据(yml文件) cases中专门集中存放测试用例 ... 数据分离的第一步先找到工程项目路径 1 2 3 4 5 6 7 8 9 10 11 12 # -*- encoding: utf-8 -*- """ __Software…

6月28日PolarDB开源社区长沙站,NineData联合创始人周振兴将带来《数据库DevOps最佳实践》主题分享

6月28日(周五),PolarDB 开源社区将来到湖南长沙,与湖南的开发者朋友们一起进行数据库技术交流!NineData 联合创始人周振兴受邀参加,并将带来《数据库 DevOps 最佳实践》的主题分享。 本次活动议程&#xff…

GEE问题——EEException:未注册 Earth Engine 或项目未注册。

问题 EEException:未注册 Earth Engine 或项目未注册。 EEException: Not signed up for Earth Engine or project is not registered. 解决方案 在谷歌社区里面这个问题已经被记录了: [Notice] Removing access for unregistered Cloud projects on 2024-06-17 查看下…

SpringBoot集成IotDB

1、引入依赖 <dependency><groupId>org.apache.iotdb</groupId><artifactId>iotdb-session</artifactId><version>0.14.0-preview1</version></dependency><dependency><groupId>cn.hutool</groupId><a…

JAVA小知识29:IO流(上)

IO流是指在计算机中进行输入和输出操作的一种方式&#xff0c;用于读取和写入数据。IO流主要用于处理数据传输&#xff0c;可以将数据从一个地方传送到另一个地方&#xff0c;例如从内存到硬盘&#xff0c;从网络到内存等。IO流在编程中非常常见&#xff0c;特别是在文件操作和…

第4章 客户端-Java客户端Jedis

1.获取Jedis maven配置加入项目中 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.2</version> </dependency>2.Jedis的基本使用 Jedis的使用方法非常简单&#xff0c;只要下面三…

首次30米空间分辨率生成中国年度耕地栅格数据1986-2021

中国1986-2021年30米分辨率年度耕地数据集 数据介绍 精确、详细且及时的耕地范围信息对于粮食安全保障和环境可持续性至关重要。然而&#xff0c;由于农业景观的复杂性和足够训练样本的缺乏&#xff0c;在大范围下进行高时空分辨率的耕地动态监测仍然具有挑战性&#xff0c;尤其…

洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼

在互联网时代&#xff0c;App推广和运营面临着前所未有的挑战。流量红利逐渐衰退&#xff0c;用户获取成本不断攀升&#xff0c;如何确保在多变的互联网环境下&#xff0c;迅速搭建起能时刻满足用户需求的运营体系&#xff0c;成为众多企业急待解决的问题。今天&#xff0c;我们…

docker部署FastDFS整合Springboot

文章目录 1、FastDFS是什么&#xff1f;2、搭建docker环境3、部署fastdfs4、整合springboot5、接口测试参考文章 1、FastDFS是什么&#xff1f; FastDFS是一个开源的轻量级分布式文件系统&#xff0c;它对文件进行管理&#xff0c;功能包括&#xff1a;文件存储、文件同步、文…

聚星文社官网

推文工具可以帮助你将小说内容简洁明了地转化为推文形式&#xff0c;以便更好地在社交媒体上进行宣传和推广。以下是一些建议的小说推文工具&#xff1a; 聚星文社 字数统计工具&#xff1a;使用字数统计工具&#xff0c;如Microsoft Word或在线字数统计器&#xff0c;来确保你…

[JS]对象

介绍 对象是一种无序的数据集合, 可以详细的描述某个事物 事物的特征在对象中用属性来表示, 事物的行为在对象中用方法来表示 使用 创建对象 let 对象名 {属性名&#xff1a;值&#xff0c;方法名&#xff1a;函数&#xff0c; } let 对象名 new Object(); 对象名.属性…

工业网关的功能与作用解析-天拓四方

在工业4.0和智能制造的时代背景下&#xff0c;工业网关作为连接现场设备与云端平台的桥梁&#xff0c;正发挥着日益重要的作用。它不仅为工业设备的远程监控和管理提供了可能&#xff0c;还为企业实现数字化转型和智能化升级提供了有力支持。本文将对工业网关的功能与作用进行解…

Python:基于TSFEL库对时间序列进行特征分析

1. TSFEL 时间序列作为主要TSFEL提取方法的输入传递&#xff0c;要么作为先前加载在内存中的数组传递&#xff0c;要么存储在数据集中的文件中。 由于TSFEL可以处理多维时间序列&#xff0c;因此随后应用了一套预处理方法&#xff0c;以确保信号质量足够和时间序列同步&#xf…

AI音乐大模型:深度剖析创意与产业的双重变革

随着AI技术的飞速发展&#xff0c;音乐大模型在最近一个月内纷纷上线&#xff0c;这一变革性技术不仅颠覆了传统的音乐创作方式&#xff0c;更是对整个音乐产业及创意产业带来了深远的影响。本文将从多个维度出发&#xff0c;深度剖析AI音乐大模型对创意与产业的双重变革。 一、…