【问题标题】:Modify an element inside a cds view修改 cds 视图中的元素
【发布时间】:2017-09-10 11:05:12
【问题描述】:

我想修改 cds 视图中的元素以更改其显示方式。我尝试使用虚拟元素,如果我从单独的元素(存储原始数据)中获取数据并将其放入新的虚拟元素中,它可以正常工作。

但是我无法弄清楚如何修改元素本身而不在表格中显示多余的元素。 如果我尝试隐藏原始数据,则数据未正确加载。如果我尝试使原始元素虚拟化,它会丢失它自己的数据。

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

【问题讨论】:

  • 您的用例是什么?您可以在该视图之上构建另一个 CDS 视图,并为该元素添加额外的显示逻辑吗?
  • @Allen 不,很遗憾没有。元素的修改需要ABAP代码,cds修改功能还不够
  • 一种可以提供 UI.hidden: true 原始元素注释的方式。
  • @Allen 通过此注解隐藏元素时,虚拟元素不接收数据。必须显示原始元素..
  • 您可以尝试 SET_FIELD_CONTROL 为您的 mpc_ext 中的原始元素隐藏前端的元素。 wiki.scn.sap.com/wiki/display/EmTech/…

标签: abap cds


【解决方案1】:

我刚刚对如何在SmartTable 上排除您的原始列进行了自己的测试。下面是我的测试演示。

要在表格设置对话框的“列”选项卡中排除您的原始列,有一个annotationsap: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'
).

【讨论】:

  • 我之前尝试过,但是当我使用这种方法隐藏原始元素时,我的虚拟元素不再接收数据
  • 您好,我刚刚仔细检查了一遍。我有 sap:visible 注释和数据。你错过了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多