在 SAP Gateway Client 里检查一个 OData V4 服务的$metadata时,如果某个字段只有一个值帮助,元数据通常很好理解。真正容易让人停下来研究几分钟的,是同一个属性下面突然出现两个甚至多个ValueListReferences。
SAP Gateway Foundation 官方示例里的ACCOUNT_ID正好属于这种情况。这个字段的SAP__common.ValueListReferences下面不是一个<String>,而是两个<String>。一个指向v4_tea_sh_account-sh,另一个指向v4_tea_sh_prospect-sh。
这并不是框架重复生成了两份 F4 元数据,也不是两个服务发生了冲突。这里对应的是 SAP Gateway Foundation for OData V4 中一个相当有代表性的设计,Collective Value Help,也就是集合值帮助。
SAP 官方文档对它的定义很简洁,集合值帮助向使用者提供多条搜索路径,每一条搜索路径对应一个 elementary value help,框架会自动把 collective value help 解析为这些 elementary value help。
这个设计看起来只是值帮助功能的一个细节,实际上把 ABAP Dictionary 时代的 Search Help、SAP Gateway 的 OData V4 元数