Smart Value Help 总结

发布时间 2023-03-26 15:02:37作者: JerryWang_汪子熙
  1. 在 Product 这个 EntityType 上,定义一个 property,名叫 CurrencyCode.

  2. 我们的 Smart Field 并不直接绑定到这个 CurrencyCode 上,而是绑定到另一个只包含纯粹价格值的 Price 字段上。Price 字段通过注解 sap:unit="CurrencyCode",将其的单位字段,绑定到 CurrencyCode 字段上。

  3. 货币单位通过另一个名叫 Currency 的 EntityType 来描述。这个 EntityType 包含 CURR 和 DESCR 两个 property,分别表示货币单位的 code 和描述值。

那么 Price 在运行时显示的单位,到底应该显示 CURR 的值,还是 DESCR 的值呢?这就得通过下图所示的自定义注解来指定了。

(1) 通过 Target 属性,指定以下注解施加的目标字段是 CurrencyCode

(2) 给 CurrencyCode 定义的注解类型是 com.sap.vocabularies.Common.v1.ValueList

(3) 给注解定义 Label 属性的值为 Currency,即 UI 界面元素的标签显示为 Currency 这个字符串。因为我们的例子,货币单位仅仅显示为一个 Text Field,不会显示出标签文本,所以这个 Label 属性无论定义与否都无关紧要。

(4) CollectionPath 属性指定 CurrencyCode 的 Value Help 的数据源,来自 EntityType Currency. 这个属性值如果指定错误,会遇到下图所示的错误消息:

Right now, there are no visible columns in the table. Please select the columns you need in the table settings.

本来应该显示货币列表的表格里,现在什么也没有显示。

(5) 通过 com.sap.vocabularies.Common.v1.ValueListParameterOut 的 LocalDataProperty 以及 ValueListProperty 属性,分别将 CurrencyCode 和 CURR 绑定起来。

(6) 设置 Currency EntityType 的 DESCR 字段类型为 com.sap.vocabularies.Common.v1.ValueListParameterDisplayOnly,意思是这个字段仅仅是为了增加 Value Help 里表格显示的可读性而设计出来供锦上添花之用。

当用户在 Value Help Table 里选择了某一行之后,该行的 CURR 字段值会传回到 CurrencyCode 字段上,而 DESCR 字段值不会参与到 Value Help 值传递场景中。