2020-08-16 04:42发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,专家
然后继续进行一些更改。 然后离开事务。在用户离开事务之前,我需要检查是否有任何更改但未保存的内容。
检查上次保存后是否有任何数据更改的最佳方法是什么?
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标志(创建/读取/更新/删除)以清楚地区分当前阶段,或者还具有多带带的数据以检查总体更改状态,以防必须通过保存一次更新多个数据库表的情况
有关实际示例,请查找以下内容:
4)任何其他标准或自定义逻辑?
我想知道您是否可以想到其他任何常规或特定的标准,现成或自定义逻辑。 尤其是来自社区中其他遇到过此主题的人?
IF field1 <> saved_field1 或field2 <> saved_field2 要么 ... "有些改变了 ENDIF。
最多设置5个标签!
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标志(创建/读取/更新/删除)以清楚地区分当前阶段,或者还具有多带带的数据以检查总体更改状态,以防必须通过保存一次更新多个数据库表的情况
有关实际示例,请查找以下内容:
4)任何其他标准或自定义逻辑?
我想知道您是否可以想到其他任何常规或特定的标准,现成或自定义逻辑。 尤其是来自社区中其他遇到过此主题的人?
一周热门 更多>