WebDynpro和R/3系统之间的状态性ARFC2连接

2020-09-24 12:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们最近将SAP Portal升级到了NW 7.5,现在正在使用NWDS 7.5。 我们的项目模型已升级到ARFC2。 从那时起,我们遇到了一些问题-如果执行ARFC2模型在后端调用Lock FM,则设置了锁,但是当控件回到WD时,锁被释放,另一个问题是FM中的全局变量被重新初始化,这将导致 如果保持用户状态,通常情况并非如此。

我们想使用注释2216054,但是我们已经拥有组件的最新版本,并且所有模型在迁移后的作用域类型为WD_APPLICATION_SESSION_SCOPE。
我们的Java应用程序使用来自不同项目的一些wd组件,这些项目具有自己的模型。 因此,我们从一个模型中调用FM来设置锁定,然后再从另一个模型中调用FM,等等。

我们决定在FM通话中使用注释2501389。 我们从方法beginJCoContext()开始每个调用,并由endJCoContext()结束调用。 但是什么都没有改变。 之后,我们在wdDoExit()中移动了方法endJCoContext()。 而且我们的锁没有被释放,这很好,但是我们看到了会话的问题-当用户使用相同的应用程序打开新窗口时,他开始在后端使用相同的消息,并且锁不会像外部锁一样引发错误 。 所以我们不知道它是如何使用的。 也许它仅在一种方法的调用顺序中起作用。

我想知道是否有一种方法可以通过ARFC2在后端中调用两个或多个RFC功能模块,并且后端中只有一个会话? 如何在ARFC2模型中配置/实现状态连接?

提前感谢您的建议!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们最近将SAP Portal升级到了NW 7.5,现在正在使用NWDS 7.5。 我们的项目模型已升级到ARFC2。 从那时起,我们遇到了一些问题-如果执行ARFC2模型在后端调用Lock FM,则设置了锁,但是当控件回到WD时,锁被释放,另一个问题是FM中的全局变量被重新初始化,这将导致 如果保持用户状态,通常情况并非如此。

我们想使用注释2216054,但是我们已经拥有组件的最新版本,并且所有模型在迁移后的作用域类型为WD_APPLICATION_SESSION_SCOPE。
我们的Java应用程序使用来自不同项目的一些wd组件,这些项目具有自己的模型。 因此,我们从一个模型中调用FM来设置锁定,然后再从另一个模型中调用FM,等等。

我们决定在FM通话中使用注释2501389。 我们从方法beginJCoContext()开始每个调用,并由endJCoContext()结束调用。 但是什么都没有改变。 之后,我们在wdDoExit()中移动了方法endJCoContext()。 而且我们的锁没有被释放,这很好,但是我们看到了会话的问题-当用户使用相同的应用程序打开新窗口时,他开始在后端使用相同的消息,并且锁不会像外部锁一样引发错误 。 所以我们不知道它是如何使用的。 也许它仅在一种方法的调用顺序中起作用。

我想知道是否有一种方法可以通过ARFC2在后端中调用两个或多个RFC功能模块,并且后端中只有一个会话? 如何在ARFC2模型中配置/实现状态连接?

提前感谢您的建议!

付费偷看设置
发送
2条回答
大简至美
1楼-- · 2020-09-24 12:48

你好,奥尔加,

请找到您问题的答案:

1。

问:我想知道是否有一种方法可以通过ARFC2在后端调用两个或多个RFC功能模块,并且后端只有一个会话?

A .:

此方案应在不同的会话中实施。 一旦不再使用会话,您需要使JCO连接变为IDLE,并将其移回池中。 当存在多步骤逻辑工作单元(LUW)时,其中几个功能模块连续执行并在之后提交,业务应用程序应根据需求开始和结束全状态连接。

正如您所发现的,它在disconnectifAlive()所在的同一位置引入了一个新的API'disconnectAllStatefullSessions'。

在应用程序退出期间调用此API将使JCO连接IDLE,因此可用于另一个RFC模块。

 wdContext.current  InputElement()。modelObject()。modelInstance()。disconnectAllStatefullSessions();  

不进行此更改,只要将响应发送回WebDynpro Java,对后端表的锁定就会释放。

2。

问:如何在ARFC2模型中配置/实现状态连接?

A .:

对于任何范围,ARFC2模型都执行 STATELESS RFC调用! 这就是FRAMEWORK.SCA 7.50中ARFC2模型的工作方式。

如果有多个使用相同JCO目标的模型,则需要通过调用disconnectifAlive api断开每个连接。

对于全状态方案,由应用程序决定是否开始全状态调用序列。

在应用程序退出期间,调用disconnectifAlive或disconnectAllStatefullSessions API可以避免此问题(请注意: 2316926

致谢,

xfwsx85
2楼-- · 2020-09-24 13:01

非常感谢您的回答!
我尝试将模型的范围更改为UC_SCOPETYPE,但是很遗憾,没有任何更改。

请问您能解释一下如何在应用程序开始时设置对后端表的锁定,以及如何在应用程序 运行 (不在单个通话顺序中)?

如果我理解正确,则需要为此目的建立活动的有状态连接。 否则(使用无状态连接) 一旦响应发送回WebDynpro Java,我就会失去锁定。 对? 我只能使用注释 2501389中的方法创建活动的有状态连接(在应用程序运行时打开)。 但是,如果单个调用序列在锁定期间还不够,并且您希望在应用程序运行时在r3中拥有主动锁定,该如何使用它们? 是逼真的工具吗?
迈恩,谢谢你!

一周热门 更多>