RAP开发中CDS实现前端实时立即变化

在做RAP的Fiori Elements开发时,用我们需要做一些功能,一个字段改变时,别一个字段立即变化,或者立即报错 ,对于值的变化,在RAP开发中可以在behavior使用determination来实现,而报错可使用validation来实现。在测试就会发现,这个改变或者报错,只是在后端的改变,不会影响前端(IE端)。而validation需要到保存时才会被触发。为了“立即”触发,这时就需要使用在behavior使用side effects了。side effects有许多的功能,更多细节可参考这里

以下是一个使用的例子,

其中的代码:

实现一个功能,当字段ExpectedDate变化时会“立即”触发ValidateEDate较验,并显示检查结果到前端。在behavior加上上面内容后,在对应的behavior类中会生成一个对应的较验类方法,例如:

这样实现了当字段改变时立即触发值的有效性检查。

事实上side effects还能实现更多的“立即”效果,可以参看这里

field 触发,刷新复杂目标:可以刷新关联实体、权限等。示例如下:

$self 触发:只要实体本身被任何操作修改,就触发刷新。

action 触发:用户在前端点击 action 按钮时触发。

determine action 触发:字段变化时,先触发后端的 determine action 逻辑,然后刷新指定的目标

更详细的语法与用法,可以参考SAP官方的 side effect 关键字文档12社区博客文章

对于“修改EBELN/EBELP后刷新Matnr, OrderQuantity, Meins”的需求,使用简洁的 field ... affects field ... 写法是最合适的