微软云_需要企业邮箱的网贷_免费

2021-05-03 15:03

大家好,

这个博客是关于了解持久锁如何在新的ABAP编程模型中为Fiori应用程序创建悲观锁,这也将锁定GUI应用程序。

我看到人们(包括我自己)在努力回答客户谈论Fiori应用程序中的悲观锁由于SAP官方只提供了ETAG功能,因此基于乐观的锁定。但由于持久锁的存在,它将同时为Fiori和GUI应用程序创建悲观的锁。

请查看下面的博客,了解UI5应用程序可用的锁机制以及为什么引入持久锁。

注意:下面的博客讨论了覆盖持久锁和处理第二个应用程序中的锁部分,因此您可以跳过该部分,来这里看看锁是如何工作的,而无需深入了解技术,免费云服务器试用,因为它可能有点混乱:).

通过持久锁和CD视图锁定S4HANAObjectModel.生命周期注释

概述:

持久锁是持久锁,因为它们不依赖于会话/提交工作。它们取决于上下文,并且将持续更长的时间(基于配置的到期时间)。那么,我刚才提到的新背景是什么??

来自SAP帮助链接

因此上下文基于草稿文档,如SAP所述,这些仅适用于少数框架,其中一个是Fiori的ABAP编程模型,可能也适用于RAP。

对于不太熟悉此框架的人,请查看我的另一个博客,因为下面的例子就是基于它的,如果你试过这个例子一次,下面的过程很容易理解https://blogs.sap.com/2019/01/08/abap基于非guid键的sapfiori draft编程模型。。

让我们看看它的实际操作

我们将使用上述博客中的相同示例。

场景:将有两个用户DUSER1和DUSER2同时打开销售订单在Fiori启动板中应用并编辑相同的销售订单条目。

注意:到目前为止,我们还没有在此配置任何锁定,它们是自动实现的。

第一个DUSER1打开下面的销售订单并单击编辑按钮。

单击编辑按钮时,请求将被发送到后端,并将创建一个草稿文档,从那时起,用户将处理草稿文档,一旦保存,数据将被复制到活动文档,草稿将被删除。

与草稿文档一起,SM12中还将创建一个锁,称为持久锁。这将由持久锁类为草稿条目自动创建,持久锁类是APM框架的一部分。您还可以注意到,大数据共享平台,锁不是为SO头键创建的,它只针对草稿条目。

现在当DUSER2打开同一个应用程序时,他将看到它被"DUSER1"锁定的状态。

如果DUSER2打开SO并编辑它,他将得到以下错误,因为锁仍然存在于SM12中。

所以到目前为止,我们已经看到了锁是如何工作的正常草案条目。如果您观察到,没有为SO头键创建锁,它只是为SM12中的草稿条目创建的。

现在如果有一个遗留GUI应用程序仍在使用,会发生什么?或者,如果任何接口调用来自SAP系统外部,并试图更新或删除SAP系统中的条目。

因此,无论是草稿条目锁定还是活动条目锁定,都应该正确链接,因为在某些情况下,用户可能会从Fiori应用程序锁定活动条目,也可能是一些接口调用或gui应用程序或某些后台作业或其他应用程序其他进程可能同时尝试更新相同的条目。

对于这个SAP使它变得如此简单,我们只需要创建或使用一个现有的锁对象,并在操作中调用它(在创建BOPF对象时,SAP也会自动创建该对象)。这么简单对吧?我们开始吧。

转到Lock类,在下面的方法中,实现锁定

因此对于我们的遗留应用程序和活动文档,实现了锁定。回到fiori应用程序,点击"取消"按钮,删除草稿并解除草稿条目的锁定。

现在再次打开销售订单,点击"编辑"按钮,它将创建草稿文档,同时为草稿文档和活动文档创建锁条目。让我们检查SM12锁

我们可以看到创建了两个锁,一个用于草稿条目,一个用于活动条目,发发淘客助手,物联网架构,但都与草稿文档链接。但我们从未将任何草稿文档传递给排队对象,也没有将草稿id自动传递给它。

有一个类将首先设置排队上下文,然后创建的任何排队对象锁都将附加草稿id。我在ABAP代码中找不到它,可能是他们在内核级别将草稿id设置为活动条目锁。

下面是为草稿文档创建排队上下文的代码,它将附加到在该会话中创建的任何锁。即使您调用BU\u PARTNER enqueue FM,BU PARTNER锁也将与SO\u HEAD Draft ID链接。但是,是的,如果您想在Fiori应用程序中创建Draft条目时锁定任何依赖对象,它非常有用。

只是为了测试锁定是否在GUI中起作用,我创建了下面的报表程序

从GUI应用程序锁定代码:

现在当我们执行它时,我们将得到锁定错误。

同样,如果我们在GUI应用程序中成功获得销售订单的锁定,那么在Fiori应用程序中,我们将得到错误。

分享到:
收藏
相关阅读