在dynpro中离开之前检查未保存的数据是否存在

2020-08-16 04:42发布

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

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


大家好,专家

我用表控件和Tabstrips创建了自己的dynpro程序。 用户可以在操作过程中保存数据。

然后继续进行一些更改。 然后离开事务。在用户离开事务之前,我需要检查是否有任何更改但未保存的内容。

检查上次保存后是否有任何数据更改的最佳方法是什么?

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

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


大家好,专家

我用表控件和Tabstrips创建了自己的dynpro程序。 用户可以在操作过程中保存数据。

然后继续进行一些更改。 然后离开事务。在用户离开事务之前,我需要检查是否有任何更改但未保存的内容。

检查上次保存后是否有任何数据更改的最佳方法是什么?

付费偷看设置
发送
2条回答
昵称总是被占用
1楼 · 2020-08-16 05:00.采纳回答

1)SY-DATAR

如果它适用于您的方案,则在屏幕上至少有一个输入字段的情况下,在发生PAI事件后,ABAP系统字段SY-DATAR会设置为" X" 被用户更改或通过其他数据更改,否则它保持初始状态。 如果将其更改为X,则必须将其存储为全局/会话标志,因为对于没有其他更改的下一个PAI事件,它将被重置为初始状态。 离开应用程序时,您可以检查sy-datar或您的标志是否不是初始的(请检查sy-datar = abap_true或gv_datar = abap_true),并抛出信息,表明数据已更改,并且是否应在离开前保存该消息。

2)ALV网格

如果碰巧使用了ALV网格,则可以使用CL_GUI_ALV_GRID的CHECK_CHANGED_DATA方法。

3)Y- 和X-Data

在SAP标准中,您会发现Y-DATA和X-DATA逻辑也解决了这个"问题"。 Y-DATA是您的旧原始数据(从数据库读取或最后一次保存),X-DATA是您的新的当前正在进行的更改,但尚未保存。

对于任何对象,表,结构变量 如果要与任何更改进行比较,则需要创建一个Y数据对象和一个X数据对象。 当前您很可能只有一个,一个对应的X数据,而您缺少Y数据进行比较。

如果只需要检查一个db-record的更改,您将拥有Y -和基于结构的X数据(相同或类似于db结构)。 如果您有多个db记录,则将基于表获得Y和X数据(也与db结构相同或相似)。

Y的基础结构的原因 -和X数据可能与您的db-table结构不同,这取决于您的方案:您可能只想与用户可以更改的相关属性进行比较,并且想要省略内部/系统属性,或者您想添加其他技术 属性,例如CRUD标志(创建/读取/更新/删除)以清楚地区分当前阶段,或者还具有多带带的数据以检查总体更改状态,以防必须通过保存一次更新多个数据库表的情况

有关实际示例,请查找以下内容:

  • 在程序SAPMV45A中搜索YVBAK和XVBAK
  • 或其他任何Y和X数据,例如Y-/XFPLA,Y-/XFPLT,Y-/XFPLTC
>

4)任何其他标准或自定义逻辑?

我想知道您是否可以想到其他任何常规或特定的标准,现成或自定义逻辑。 尤其是来自社区中其他遇到过此主题的人?

2楼-- · 2020-08-16 04:50
 IF field1 <> saved_field1
   或field2 <> saved_field2
   要么 ...
   "有些改变了
 ENDIF。

一周热门 更多>