1
tankren 232 天前
FM 调用之后先要判断 sy-subrc 或者 bapiret 内表是否有错误,没有问题才可以 commit
你在 CALL FUNCTION BAPI_TRANSACTION_COMMIT 设个断点看一下前面的 BAPI 返回值吧 |
2
tankren 232 天前
PS: 我只是顾问,非 ABAPer
|
3
VersionGod1 OP @tankren 不好意思之前没看到,调用是没有错误的。后来排查出原因是调用 BAPI 写入 SAP 的过程中,数据可能还没存入 SAP 数据库中,等 1s 去调用 commit 就好了。
|
4
VersionGod1 OP @tankren 不好意思记错了,那是另一个问题的解决方法,这个 commit 提交不上是因为要加事务( JCoContext 的 begin 和 end )。调用完 BAPI 要确保此次连接不能断掉,commit 完再断掉。
|
5
tankren 216 天前
@VersionGod1 #4 Cloud 版本吗?
|
6
VersionGod1 OP @tankren 你说的是 SpringCloud 版本吗,好像和版本没关系。这个好像和 Java 的调用 SAP 机制有关,正常应该是调用一个 SAP 函数后自动释放连接,但是 commit 函数要求 sap 连接需要连续,因此要加 JCoContext 的 begin 和 end 确保连接一直保持。
|
7
tankren 215 天前
@VersionGod1 #6 搜索并了解了一下,你这个是外部 JAVA 调用 SAP BAPI 吧,属于我的知识盲区了。
我看的这一篇 https://www.cnblogs.com/jiangzhengjun/p/4291479.html |
8
VersionGod1 OP @tankren 嗯嗯,是的,我是用外部 Java 调用的 SAP BAPI
|