在分析列表页面(Fiori元素)中设置紧凑型过滤器默认值

2020-09-04 05:02发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


是否可以在"分析列表"页面的紧凑型过滤器上将过滤器默认值设置为"日期范围"?

使用 https://blogs.sap.com/2018/08/23/fiori-ovp-defaulting-values-into-global-filters /但我无法获得 适用于ALP的相同方法。 奎师那(Krishna Kishor Kammaje)已对 https://blogs.sap.com/2018/08/20/navigation-from-a -fiori-ovp /但我无法使其正常工作。

这是OVP正常工作。

(10.5 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


是否可以在"分析列表"页面的紧凑型过滤器上将过滤器默认值设置为"日期范围"?

使用 https://blogs.sap.com/2018/08/23/fiori-ovp-defaulting-values-into-global-filters /但我无法获得 适用于ALP的相同方法。 奎师那(Krishna Kishor Kammaje)已对 https://blogs.sap.com/2018/08/20/navigation-from-a -fiori-ovp /但我无法使其正常工作。

这是OVP正常工作。

(10.5 kB)
付费偷看设置
发送
9条回答
Climb_Ma
1楼 · 2020-09-04 05:43.采纳回答

已经检查了UI5代码,以下启用了此功能。

Manifest.json:

(其中文件名customMain.contoller.js放置在路径webapp> ext> controller的文件夹中)

"扩展":{
 "扩展名":{
 " sap.ui.controllerExtensions":{
 " sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage":{
 " controllerName":" [namespace.here] .ext.controller.customMain"
 }
 }
 }
 },
 

customMain.controller.js

 sap.ui.define([],function(){
 "使用严格";
 return sap.ui.controller(" [[YourProjectNamespace.here] .ext.controller.customMain",{

 onBeforeRendering:function(){

//获取对SmartFilterBar的引用
 var oSmartFilter = this.getView()。byId(" template :: SmartFilterBar");

//创建要默认的JSON数据
 var dateFormat = sap.ui.core.format.DateFormat.getDateInstance({
 模式:" yyyy-MM-dd"
 });
 var oToday = dateFormat.format(new Date());
 var o30DaysEarlier1 = new Date();
 o30DaysEarlier1.setDate(o30DaysEarlier1.getDate()-30);
 var o30DaysEarlier = dateFormat.format(new Date(o30DaysEarlier1));
 var oDefaultFilter = {
 工作日期:{
 最低:o30天之前,
 高:今天
 }
 };

//默认为全局过滤器值
 oSmartFilter.setFilterData(oDefaultFilter);
 }
 });
 });
 

在OData服务类定义中,如果要将过滤器字段设置为日期,还需要确保重新定义DEFINE方法。

方法定义。

 数据:lo_entity_type类型参考/iwbep/if_mgw_odata_entity_typ,

           lo_property类型参考/iwbep/cl_mgw_odata_property,
           lo_annotation类型参考/iwbep/if_mgw_odata_annotation。

     super-> define()。

     lo_entity_type =模型-> get_entity_type(iv_entity_name ='[ODataQueryTypeHere] Type')。

     lo_property?= lo_entity_type-> get_property(iv_property_name ='[FieldYouWantToFilterOn]')。

     呼叫方法lo_property->/iwbep/if_mgw_odata_annotatabl〜create_annotation

       出口
         iv_annotation_namespace =/iwbep/if_mgw_med_odata_types => gc_sap_namespace

       接收
         ro_annotation = lo_annotation。

     lo_annotation-> add(iv_key ='display-format'iv_value ='Date')。

     lo_annotation-> add(iv_key ='filter-restriction'iv_value ='interval')。

     呼叫方法lo_property->/iwbep/if_mgw_odata_property〜set_type_edm_datetime。

     调用方法lo_property->/iwbep/if_mgw_odata_property〜set_internal_type
       出口
         iv_type = cl_abap_typedescr => typekind_date。

   终止方法。

在OData服务元数据中给出以下定义

 <属性名称=" [FieldYouWantToFilterOn]" Type =" Edm.DateTime" Precision =" 0" sap:aggregation-role =" dimension" sap:creatable =" false" sap:display-format =" Date" sap  :filter-restriction =" interval" sap:semantics =" yearmonthday" sap:text =" [FieldYouWantToFilterOn] _T" sap:updatable =" false" sap:label =" [LabelOfFieldYouWantToFilterOn]"/> 

最终结果为

软件心理学工程师
2楼-- · 2020-09-04 05:47

嗨,马克,

感谢您的回复。

这是控制器文件。

 sap.ui.controller(" ZBI_SALSANA.ext.controller.ListReportAction",{
 onBeforeRendering:function(){
//获取对SmartFilterBar的引用
 var oSmartFilter = this.getView()。byId(" template :: SmartFilterBar");
//创建要默认的JSON数据
 var dateFormat = sap.ui.core.format.DateFormat.getDateInstance({pattern:" yyyy-MM-dd"});;
 var oToday = dateFormat.format(new Date());
 var o30DaysEarlier1 = new Date();
 o30DaysEarlier1.setDate(o30DaysEarlier1.getDate()-30);
 var o30DaysEarlier = dateFormat.format(new Date(o30DaysEarlier1));
 var oDefaultFilter = {日期:{低:o30DaysEarlier,高:oToday}};
//默认为全局过滤器值
 oSmartFilter.setFilterData(oDefaultFilter);
 }
 });
 

这是最重要的

"扩展":{
 "扩展名":{
 " sap.ui.controllerExtensions":{
 " sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage":{
 " controllerName":" ZBI_SALSANA.ext.controller.ListReportAction"
 }
 }
 }
 },
 。
 。
 。

 "页面":{
 " AnalyticalListPage |销售":{
 " entitySet":"销售",
 "零件": {
 " name":" sap.suite.ui.generic.template.AnalyticalListPage",
 "列表":是的,
 "设置":{
 " defaultFilterMode":"紧凑",
 " tableType":" AnalyticalTable",
 " gridTable":否,
 " multiSelect":否,
 " autoHide":是的,
 " showGoButtonOnFilterBar":否,
 " condensedTableLayout":是的,
 "关键绩效指标": {}
 }
 },
 "页面":{
 " ObjectPage |销售":{
 " entitySet":"销售",
 "零件": {
 "名称":" sap.suite.ui.generic.template.ObjectPage"
 }
 }
 }
 }
 }
 

这是文件夹结构。

谢谢

Tanveer

Alawn_Xu
3楼-- · 2020-09-04 05:30

嗨,

是否可以避免在属性中使用某些值?

例如,

如果我想特别避开约翰。

$ filter = EmployeeName ne'John'

在CDS视图或Fiori Elements中是否可以执行此操作?

一周热门 更多>