带孩子的孩子的UDO

2020-09-24 04:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用由代码创建的UDO(名...

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

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


我正在使用由代码创建的UDO(名为程序),该代码具有多个子表。

这些子表(名为Benefits)中的一个实际上是UDO的另一个子表(名为Classs)的子表。 显示和编辑"类"表的行没有问题,因为它们直接链接到UDO对象。 但是,我需要显示和编辑链接到"类"表中所选行的表"好处"中的行。

为了显示与Classes表的特定行相关的Benefits行,我使用绑定到datatable的矩阵,该datatable通过查询检索数据。 为了插入/更新/删除行,我使用GeneralService执行操作,然后通过数据表重新加载矩阵中的数据。

这可以正常工作,但是我遇到的问题是,在使用常规服务编辑UDO子表后,我不再能够保存UDO表单(使用"更新"按钮)。 我收到错误:"另一个用户或另一个操作修改了数据;要继续,请再次打开窗口"。

这是因为系统看到当前的UDO记录是由另一个用户更新的,而实际上它是由同一用户但使用常规服务编辑的。 那么,我该如何处理这种情况?

我目前正在考虑两种方法。

第一个是将子表的子表移动到独立的UDT表(无对象自动递增)。 这样,我可以自由编辑UDT。 问题在于该表的主键不是我想要的形式,因为我需要一个Code/LineId主键,其中该Code与父UDO的Code相同,而LineId区分该行。

第二种方法是创建第二个UDO(名为"程序辅助"),该子对象具有一个子表(Benefits)。 这样,我可以创建行并将其链接到第一个UDO中的子表。 这似乎是一个很好的解决方案。

在选择第二种方法之前,我希望获得该社区专家的意见。 我也担心一个问题。 问题是我是否需要锁定第二个UDO,以防止多个用户使用常规服务编辑同一条记录? 是否存在跨多个UDO的相关数据的问题,并且系统将在这种情况下处理多个编辑的问题。

希望我的问题很清楚,谢谢。

1条回答
huskylover
2020-09-24 05:08 .采纳回答

Osama,

"另一个用户或其他操作已修改数据;要继续,请再次打开窗口"。
从逻辑上讲是正确的,如果在后台更新屏幕数据已经无效(显示过时的记录)

要解决此问题,您需要在更新常规服务后刷新屏幕,这样您的屏幕将具有最新记录。
您不能从UI更新一半记录,而从常规服务更新一半记录,您将 需要选择一个。

关于
Edy

一周热门 更多>