如何修改ODATA中属性的文本

场景:OData中的属性字段的文本参考系统已有字段时,可能未必是用户想要的提示文本,针对此情况,将属性文本的方法记录如下。

注释:我使用环境是S4 HANA 1709,SAP GUI 750,ABAP Eclipse Neon。

如下图所示:

图1

在最后ODATA返回的metadata文件中对Category属性的label heading quickinfo等文本属性想进行修改。

1.在事务代码SEGW中对属性的文本直接进行修改如下图


图2

直接修改Label属性的文本,是最简单直观的方法,但是如果涉及到这个文本要进行多语言翻译,那就不推荐了。


图3
图4

点击Label Editor的按钮会弹出图4的对话框,可以指定符合需求的Data Element,文本即可修改,Data Element的文本翻译好后,多语言就能正常显示。

或者自己在SE11中新建一个结构,里面参考的Data Element全部用符合需求的,通过这个结构创建Entity Type,所有Data Element进行翻译后解决多语言问题。



2.如果使用CDS View中的数据作为ODATA的数据源,那直接使用CDS Annotation指定即可。

注释:CDS Annotation多与Fiori Elements一起使用或着相关的模版。

图5

在CDS View中用EndUserText-Annotations,比如@EndUserText.label: 'Inspection Method Status Criticality'.(此处的label仍然需要在后台翻译)。

在WEB IDE的local annotation文件编辑器中,找到 UI.Data.Field节点,点击Action栏位的+按钮,在弹出的图7中进行相应属性添加以及文本修改.(此处添加的文本会在I18N文件中多一个属性和文本,这个需要随同I18N文件中其他文本一起进行翻译 )

图6
图7


3.通过修改MPC_EXT中的Define方法实现对文本的修改

METHOD define.

"数据声明

DATA: lo_annotationTYPE REF TO /iwbep/if_mgw_odata_annotation,

lo_entity_typeTYPE REF TO /iwbep/if_mgw_odata_entity_typ,

lo_propertyTYPE REF TO /iwbep/if_mgw_odata_property.

"调用MPC父类的define方法

super->define(  ).

"找到修改属性所在的Entity Type.

lo_entity_type= model->get_entity_type( 'ProductHeader' ).

"找到修改的属性

lo_property= lo_entity_type->get_property( 'Category' ).

"直接绑定修改后文本的数据元素

lo_property->bind_data_element_for_text( iv_element_name= 'S_SEATSMAX' ).

ENDMETHOD.

保存激活后,重新生成ODATA,然后查看ODATA的metadata文件.

如果想再次Debug Define方法,请重新生成ODATA,否则无法进入断点。(ODATA只会在每次生成后的第一次调用进入MPC,MPC_EXT方法生成metadata文件)

4.也是通过修改MPC_EXT中的Define方法实现对文本的修改,只是思路和效果有略微差异

代码如下图

图8


    最后Metadata的文本更新效果:

图9

你可能感兴趣的:(如何修改ODATA中属性的文本)