云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站服务器_天翼家庭云要钱吗_年度促销

小七 141 0

云计算网络_分布式_物联网是什么东西?

任务是在我的收件箱中隐藏带有空值的字段。一开始可能看起来很简单,但根据设置的复杂性和限制,可能会很困难。在我们的例子中,限制是不调整前端和尽可能少地修改SAP代码。此外,在设置的复杂性中加起来的属性是,大数据在线,我们正在处理一个扩展CD视图,而不是一个正常的视图(定义)。

这里的建议并不详尽,可能不是最佳实践,但是…它起了作用。如果你能想出一个方法来改进这个解决方案,或者如果你知道关于这个问题的其他解决方案,请留下你的评论。

那么,让我们深入探讨:

那些不起作用的解决方案

这些解决方案是在整个社区提出的,尽管它们看起来很有吸引力,但我们并没有设法让它们起作用。如果你知道什么,物联网协议,请分享。

元数据扩展文件:要开始考虑这个解决方案,首先必须能够创建元数据扩展文件。为此,注释@Metadata.allowExtensions:true必须存在。在这种特殊情况下,我们不能添加它,因为它只能在常规视图(定义)中添加,而不能在扩展视图中添加。默认情况下,原始视图没有元数据扩展名,因此无法在此处创建元数据扩展名文件。出于好奇,我们尝试将该解决方案应用于测试环境中的新自定义CDS视图,但没有成功。

直接赋值:根据此答案,可以通过提供以下格式的字段,直接为任何批注赋值:@我的注释:#(字段#到#获取#值)。我们试着这样做@用户界面隐藏动态的,但不幸的是我们没能让它工作。也许吧@用户界面隐藏不应该是动态的。

通过BOPF进行外部计算:通过外部计算提供注释值,使用BOPF框架可能是一个整洁的解决方法。要实现这一点,必须定义BO视图,设置注释@ObjectModel.readOnly文件:'EXTERNAL_CALCULATION',并使用SET_ATTRIBUTE_ENABLED方法相应地显示/隐藏字段。这个解决方案是在各种答案中提出的,有一篇很好的文档文章,并且被一位同事在定制CDS视图上确认已经实现(谢谢Ali)。不幸的是,这只能在自定义的CDS视图中实现,因为不能使用BOPF增强扩展视图。

确实有效的解决方案

另一位同事提出了这个基于属性的解决方案(感谢Andrei)sap:现场控制。我们使用了等价的词汇公共现场控制幸运的是,我们通过相对的MPC\u EXT类从后端提供了注释。

这个术语接受一系列的整数值,这些整数值被分配给不同的UI实用程序。通过将path属性指向edm.byte文件(integer)属性

我们的扩展视图部分,包含要隐藏的字段,看起来像:

它的计算结果是:

注意,在我们的例子中,大数据100,我们使用了值0(隐藏)和1(只读),因为我们要隐藏/显示的字段只是用于显示原因。代替1(只读),店铺淘客,您可以添加任何其他可接受的值,如上所述,物联网企业,以满足您的需要。

在重新定义和修改相关网关项目(可能不是最佳方式,但仍然合法)的相应MPC\U EXT类的定义方法后,我们添加以下代码:

请注意,对于中的上述代码define方法要工作,应该存在以下数据类型和别名。如果没有,那么您应该像这样添加它们:

并且上面的代码计算结果为:

正如您可以清楚地看到的,FieldControl注释引用FieldToGetHideOrShowValue字段,以检索我们以动态方式提供的值,用于控制FieldYouWantDynamicallyHidden字段的UI.

我们可以在MPC\u EXT类的DEFINE方法中实现这样的代码块,并将所需的项直接添加为生成的oData属性的属性:

后端代码看起来像:

然后属性看起来像这样:

简单地说,我们在这里所做的是通过模型提供者类(mpc\ U ext)实现一个基于代码的解决方案,以便为CDS扩展视图的字段启用字段控制功能,以便有条件地显示/隐藏它们,现在,系统将"看到"FieldYouWantDynamicallyHidden字段的字段控制注释,并通过对FieldToGetHiderShowValue字段的路径引用来获取一个值,告诉它是否隐藏它。

此解决方案的另一个可能应用是动态更改字段状态(隐藏、只读、强制、,等)基于用户交互,例如与复选框或其他字段的值。但是对于静态隐藏,总是建议使用@用户界面隐藏或者@消费。隐藏是这样。

在最后一点上,我要特别感谢我的同事Panagiotis通过CDS视图提供的全面指导。

有用的参考资料

通过MPC\ U EXT向odata服务添加注释

odata词汇注释API

属性sap:现场控制