Abap 修改cds视图中的图元

Abap 修改cds视图中的图元,abap,cds,Abap,Cds,我想修改cds视图中的元素,以更改其显示方式。我尝试使用虚拟元素,如果我从一个单独的元素(存储原始数据)获取数据并将其放入一个新的虚拟元素中,效果会很好 但是,如果不在表中显示一个冗余元素,我就无法理解如何修改元素本身。 如果我试图隐藏原始数据,则数据加载不正确。如果我试图使原始元素成为虚拟元素,它会丢失自己的数据 实现我想要的东西的正确方法是什么?关于如何排除SmartTable上的原始列,我刚刚做了自己的测试。下面是我的测试演示 要将原始列从“表格设置”对话框的“列”选项卡中排除,有一个sa

我想修改cds视图中的元素,以更改其显示方式。我尝试使用虚拟元素,如果我从一个单独的元素(存储原始数据)获取数据并将其放入一个新的虚拟元素中,效果会很好

但是,如果不在表中显示一个冗余元素,我就无法理解如何修改元素本身。 如果我试图隐藏原始数据,则数据加载不正确。如果我试图使原始元素成为虚拟元素,它会丢失自己的数据


实现我想要的东西的正确方法是什么?

关于如何排除
SmartTable上的原始列,我刚刚做了自己的测试。下面是我的测试演示

要将原始列从“表格设置”对话框的“列”选项卡中排除,有一个
sap:visible=false

重新定义mpc ext的
Define
方法:

data: 
lo_entity_type type ref to /iwbep/if_mgw_odata_entity_typ,
lo_property    type ref to /iwbep/if_mgw_odata_property,
lo_annotation  type ref to /iwbep/if_mgw_odata_annotation.

super->define( ).

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

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

lo_annotation = lo_property->/iwbep/if_mgw_odata_annotatabl~create_annotation( /iwbep/if_mgw_med_odata_types=>gc_sap_namespace ).
lo_annotation->add(
    iv_key    = 'visible'
    iv_value  = 'false'
).

您的用例是什么?你能不能在这个视图的基础上再构建一个CDS视图,为该元素添加额外的显示逻辑?@Allen不,不幸的是不能。元素的修改需要ABAP代码,cds修改函数不是提供UI的唯一方法。隐藏:原始元素的true批注。@Allen通过此批注隐藏元素时,虚拟元素不接收数据。必须显示原始元素。您可以尝试在mpc\U ext中为原始元素设置\u字段\u控件,以隐藏前端的元素。我以前尝试过这个方法,但是我的虚拟元素不再接收数据。当我使用这个方法隐藏原始元素Shello时,我只是仔细检查了一下。我有sap:可见注释和数据。你错过了什么?