2018年7月24日–使用基于文本元素的词汇注释的新编码
2018年7月26日–添加了如何使用基于CD的OData服务的说明
2018年7月26日–添加了从数据元素检索文本的代码
2018年10月14日–添加了附加解决方案(仅适用于sap:标签)
28.09.2019–如何实现动态变化(例如本年度)
2020年3月10日–如何实现多种语言的动态变化
今天一位客户问我如何改变属性sap:标签, sap:标题和sap:quickinfo输入使用ABAP基于代码的实现开发的OData服务。
SAP网关框架默认情况下从基础数据元素检索的数据,他们希望使用自定义注释并从其他数据元素检索相同的数据。
然后我得到了如何为基于CDS的OData服务更改这些注释。
在本博客中,我实际上不会展示如何更改sap注释,而是展示如何发布基于词汇表的注释,企业信息化应用,而不是在公共词汇表上。
这些注释也可以在SAPUI5中解释,如果使用sap Fiori Elements应用程序,则可以使用这些基于词汇表的注释将使用,而不是通过sap:标签, sap:标题和sap:quickinfo。
假设原始OData服务将有一个实体集ProductSet,其实体类型Product绑定到DDIC结构BAPI\u EPM\u Product\u头。
上述三个sandard sap注释对于属性类别如下所示。
这是因为属性类别基于数据元素SNWD\u PRODUCT\u CATEGORY.
解决方案1:使用文本元素
灵活的方法是使用文本元素作为我们基于常用词汇表的基于词汇表的注释的源。
以下注释的目标是实体类型产品的属性类别。
上述注释是如果我们将以下代码添加到我们的MPC\u EXT类的DEFINE方法中,则生成此代码。
请注意,我们使用的是来自\u text\u元素的方法set\u string\u。
注意:
如果使用方法set\u string,注释将不支持多种语言。
类的文本元素可以使用事务SE24进行维护。在编辑模式下,选择按钮文本元素或按F5。
我们创建三个文本元素并将其翻译为德语。您必须确保首先激活您的更改。
在将文本翻译成德语(或任何其他语言)后,什么是大数据概念,我们可以测试我们服务的元数据文档。
结果是,在使用德语登录时,SAP网关客户端显示以下响应。
解决方案2:使用数据元素
可以分配的文本也可以从现有的数据元素中检索到基于词汇表的注释。
这些注释的优点是字段描述已经被维护和翻译。
在我们的MPC\u EXT类的DEFINE方法中,我们将四个字段描述映射到基于词汇表的注释公共.标签, 普通标题, 通用A.QuickInfo以及公共文本.
在$metadata文档中的结果如下:
解决方案3(仅适用于sap:标签)
如果只是sap:标签应该这也可以通过使用以下代码片段来实现:
这只适用于sap:标签自没有要更新的特定方法sap:标题和sap:quickinfo。
文本元素的创建方法与
中所示相同。如果我们生成一个列表报告应用程序来使用我们的服务,我们将看到产品类别的列现在使用存储在文本元素中的类别值标签,手游返利,大数据有什么用,而不是使用存储在sap:标签。
对方的标题列(这里是:Price和productid)使用注释提供的文本sap:改为使用标签。
以如何在SAPUI5应用程序中使用基于词汇表的注释为例,我已经基于主细节模板生成了一个sapfiori应用程序。
当您在应用程序中添加以下代码时Detail.view.xml文件你的主要细节应用程序
结果屏幕如下:
这意味着您可以更改的默认值sap:标签, sap:标题和sap:quickinfo如果需要。
如果OData服务基于CDS视图,建议将其作为OData服务发布,如果需要添加CDS视图尚不支持的功能,则使用Service Builder和引用数据源方法。(请参阅联机帮助-将CDS实体公开为OData服务)。
同样对于基于CDS视图的OData服务,请参阅注释sap:标签, sap:标题和sap:quickinfo是取自基础数据库表的数据元素。原因是,只有这样才能确保通过SAPGUI使用的基于经典用户界面显示相同的描述。
由于无法更改SAP提供的数据元素的文本,因此必须使用中所述的注释@EndUserTextSAP Online Help添加字段标签和说明
但是,通过这种方式,只能设置特定于客户的值sap:标签和sap:quickinfo。
假设我们有一个使用以下注释的CDS视图。
如果您使用英语作为登录语言维护了DDL源代码,那么ProductId属性的注释如下所示:
但是如果您使用不同的语言(如德语)登录,您只能得到注释的空字符串sap:标签。
为了实现多语言支持,您必须使用事务SE63。
现在属性在用德语登录时会显示以下元数据
最近我问到如何实现多语言元数据的动态变化。
下面的PoC代码做到了这一点。
,美国高防云服务器