为使用JCO连续调用RFC保留SAP的rfc数据

问题描述 投票:0回答:2

我想知道是否有可能在SAP内存中保持通过JCO调用的rfc的打开状态,以便我可以缓存内容,这是我想到的情况:

假设一个简单的函数增加一个数字。该函数以0开头,因此我第一次使用导入参数1调用它时应返回1。

我第二次调用它应该返回2,依此类推。

JCO可以吗?

如果我有函数对象并进行两次成功调用,它将始终返回1。

我可以做我正在照相的事情吗?

sap rfc jco
2个回答
1
投票
但是请注意,您可能需要确保在单个上下文或“业务交易”中发生一系列调用。有关示例,请参见this question和我的答案。这些上下文是短暂的,并且允许您一开始就打算得到的内容–请注意,您不应该设计应用程序,以使其必须在几分钟或几小时内保持这些上下文的生命。

0
投票

    ABAP代码需要将其变量存储在ABAP会话存储器中。函数组的全局部分中的变量将执行此操作。或者,您可以使用标准ABAP技术“导出到内存/从内存导入”。
  1. [JCo需要保持两次调用之间的用户会话。默认情况下,JCo每次调用后都会重置后端用户会话,这当然会破坏该用户会话内存中存储的所有数据。为了防止这种情况,您需要使用JCoContext.begin()和JCoContext.end()获得有状态的RFC连接,以使用户会话在后端保持活动状态。
  • 示例代码:JCoDestination dest = ... JCoFunction func = ... try{ JCoContext.begin(dest); func.execute(dest); // Will return "1" func.execute(dest); // Will return "2" } catch (JCoException e){ // Handle network problems, ABAP exceptions, SYSTEM_FAILUREs } finally{ // Make sure to release the stateful connection, otherwise you have // a resource-leak in your program and on backend side! JCoContext.end(dest); }
  • © www.soinside.com 2019 - 2024. All rights reserved.