ABAP 在增强中COMMIT

前言

呃,又是很磨人的需求,正常情况下是不允许在增强中COMMIT的,会影响源程序本身的逻辑,但是这个需求就得这么干...

就是在交货单增强里面要再调用一次交货单BAPI,通过SO的交货单自动创建STO的交货单,如果无法成功创建STO交货单那么原SO交货单也不允许新建

STO交货单失败的情况很好做,反正都不建报个E类型错就行;但是STO交货单要是创建成功那就要COMMIT了,而且还要写到自建表里面,最后用下面的方法实现了

解决方案

看了别的大佬的博客,用远程RFC可以另起一个会话,在另外的会话中做commit就不会影响原来的bapi,我再wait个半秒钟从自建表里面捞commit的结果就能知道BAPI有没有成功

抄了个大概,要建两个RFC,一个正常的RFC给BAPI调用,一个远程的RFC给正常的RFC调用

增强里面调用正常RFC

正常RFC调用远程RFC,返回uuid给增强程序,后续增强程序根据uuid查询日志自建表判断此次远程调用是否成功并获取消息

远程RFC调用BAPI并COMMIT

重点没什么,其实主要就是STARTING NEW TASK让SAP另起一个异步会话去处理,增强里面直接调远程RFC会报错,所以就用这种间接的方式了

相关推荐
修电脑的猫13 小时前
Performance Monitoring on Production Systems in SAP ERP(ABAP性能优化)
性能优化·abap
LilySesy4 天前
ABAP+&SFSY-FORMPAGES&变成星号
经验分享·sap·abap·erp系统·smartforms
一只团子(Lucas Chu)15 天前
跟着团子学SAP PS:SAP项目型制造方案补充方案-SAP PMMO简介
sap·ps·eppm
小哥来啦24 天前
SAP 生产订单报工检查报错异常(接口)
sap·co11n·co13
SAP-nkGavin1 个月前
ABAP设计模式之---“童子军法则(The Boy Scout Rule)”
设计模式·sap·abap
SAP-nkGavin1 个月前
简单说一说Modern ABAP这个概念
sap·abap
爱喝水的鱼丶1 个月前
SAP-ABAP:在DEBUG过程中修改内表中的数据的方法详解
运维·开发语言·sap·异常处理·abap·修改内表
爱喝水的鱼丶2 个月前
SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践
开发语言·低代码·微服务·云原生·sap·abap
爱喝水的鱼丶2 个月前
SAP-ABAP:SAP的BAPI_PO_CHANGE功能详解
开发语言·sap·abap·bapi·采购订单修改
IT小白农民工2 个月前
SAP Business One(B1)打开自定义对象报错【Failed to initialize document numbering:】
经验分享·sap