在RDS Project中使用CDS时,使用OData功能的最佳实践,例如"验证"

2020-08-25 15:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有一个Gateway项...

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

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


嗨,

我有一个Gateway项目,其中使用RDS公开基于CDS视图的实体。 要求之一是我提供一项服务来验证实体中的数据而不保存它。

我找不到使用函数导入/操作执行此操作的方法,因为我只能将简单类型用作导入参数,并且需要发送大量数据来进行验证。

过去,当在SEGW中不使用RDS时,我在实体属性中添加了一个虚拟的" operation"字段,以允许我在执行更新时将代码发送到后端,以停止保存。 现在,我正在使用CDS视图,这似乎不是一个好的解决方案,因为此伪字段现在将最终存储在数据库对象上。

有人能更好地执行这种"验证"功能吗?

谢谢

安德鲁

7条回答
spaceman01
2020-08-25 16:05

我想到的三种方式。

1。 根据我的理解,这是不可能的,如果您正在使用" Draft"为Fiori建立一个抽象编程模型,那么您所说的情况将像小菜一碟。 您将创建草稿条目(不是最终的),并在验证操作时,可以检查草稿条目数据并引发错误。

查看系统是否支持草稿功能。

https://blogs.sap.com/2019/01/09/abap-programming-model-for-sap-fiori-draft-based-for-non-guid-keys-more-more../

如果您没有草稿功能,我想到的另一种解决方法是在操作单击时手动触发深层创建方法,并像以前一样发送一个参数并将其检入 深层创建,我知道它将在表中创建一个属性,但是您必须忍受这一点。 如果要避免使用表格中的虚拟列,则有2种方法(认为这是过大的方法)

2。 使用虚拟字段

https://help.sap。 com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/7.51.7/zh-CN/a7fc007921d44263b09ccc092392b05f.html

3。 或创建一个动作验证,一次调用验证并发送深层数据(批处理)并将其捕获到变更集处理方法中,仅在进行验证动作的情况下进行验证,否则执行深层创建逻辑,方法是从deepcreate方法复制并放置

这是第二点,我假设这批Action和Deep Create数据将在变更集处理方法中组合在一起。

我建议您使用第一种方法,因为我认为这是最好的方法,它具有草稿数据并调用操作。

< p>谢谢

Mahesh

一周热门 更多>