扩展我的收件箱-自定义任务。 从列表导航到详细信息在移动设备上不起作用。

2020-08-15 22:57发布

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

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


大家好,

我尝试增强"收件箱"标准Fiori应用程序。 我遵循了我的收件箱可扩展性手册以提供特定的任务类型( 第63页)。 我为新任务类型成功添加了新屏幕,并填充了来自后端的数据。 问题是从S2(列表视图)到S3(详细信息视图)的导航在台式机上有效,而在移动设备上则无效。 在移动设备第一视图上打开应用程序时,看到的是S2(列表)而不是S3(详细信息)。 当我点击移动设备上的列表项时,在JavaScript调试器中出现以下错误"由于路由不存在,无法导航到名称为null的路由"。

错误在扩展S2.controller中开始。 我从菜谱中复制了代码。 这是我来自S2.controller的代码:

 sap.ui.controller(" cross.fnd.fiori.inbox.CA_FIORI_INBOXExtension.view.S2",{
 onInit:function(){
 var that = this;
//阅读配置文件以获取详细页面路由
//var sUrl = jQuery.sap.getModulePath(" cross.fnd.fiori.CA_FIORI_INBOXExtension")+"/TaskeExtensionMappingConfig.json";
 var sUrl ="/sap/bc/ui5_ui5/sap/z_inbox_ext/TaskeExtensionMappingConfig.json";
 that.oDetailRouteConfig = jQuery.sap.sjax({
 网址:sUrl,
 dataType:" json"
 })。data ||  {};
 },
 getDetailRouteName:function(oEvent){
 如果(!this.oDetailRouteConfig){
 返回"详细信息";
 }
 var oItem = this.getList()。getSelectedItem();
 如果(!oItem){
 返回null;
 }
 var oItemData = oItem.getBindingContext()。getModel()。getData(oItem.getBindingContext()。getPath());
 var sDetailRouteName = this.oDetailRouteConfig [oItemData.TaskDefinitionID];
 如果(sDetailRouteName){
 返回sDetailRouteName;
 }其他{
 返回"详细信息";
 }
 }
 });
 

在桌面上,当我从FLP打开应用程序时,调用getDetailRouteName函数3次,最后一次在行 var oItem = this.getList()。getSelectedItem(); 中提供该功能 详细。 在Mobile上,仅在加载应用程序时才执行一次此功能,首先打开列表视图(而不是详细视图),并且当我尝试导航变量oItem 时始终为null,尽管 this.getList()已加载。 哪里可能有问题?

谢谢您的任何建议。 如果您需要更多信息,请告诉我。

马丁

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

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


大家好,

我尝试增强"收件箱"标准Fiori应用程序。 我遵循了我的收件箱可扩展性手册以提供特定的任务类型( 第63页)。 我为新任务类型成功添加了新屏幕,并填充了来自后端的数据。 问题是从S2(列表视图)到S3(详细信息视图)的导航在台式机上有效,而在移动设备上则无效。 在移动设备第一视图上打开应用程序时,看到的是S2(列表)而不是S3(详细信息)。 当我点击移动设备上的列表项时,在JavaScript调试器中出现以下错误"由于路由不存在,无法导航到名称为null的路由"。

错误在扩展S2.controller中开始。 我从菜谱中复制了代码。 这是我来自S2.controller的代码:

 sap.ui.controller(" cross.fnd.fiori.inbox.CA_FIORI_INBOXExtension.view.S2",{
 onInit:function(){
 var that = this;
//阅读配置文件以获取详细页面路由
//var sUrl = jQuery.sap.getModulePath(" cross.fnd.fiori.CA_FIORI_INBOXExtension")+"/TaskeExtensionMappingConfig.json";
 var sUrl ="/sap/bc/ui5_ui5/sap/z_inbox_ext/TaskeExtensionMappingConfig.json";
 that.oDetailRouteConfig = jQuery.sap.sjax({
 网址:sUrl,
 dataType:" json"
 })。data ||  {};
 },
 getDetailRouteName:function(oEvent){
 如果(!this.oDetailRouteConfig){
 返回"详细信息";
 }
 var oItem = this.getList()。getSelectedItem();
 如果(!oItem){
 返回null;
 }
 var oItemData = oItem.getBindingContext()。getModel()。getData(oItem.getBindingContext()。getPath());
 var sDetailRouteName = this.oDetailRouteConfig [oItemData.TaskDefinitionID];
 如果(sDetailRouteName){
 返回sDetailRouteName;
 }其他{
 返回"详细信息";
 }
 }
 });
 

在桌面上,当我从FLP打开应用程序时,调用getDetailRouteName函数3次,最后一次在行 var oItem = this.getList()。getSelectedItem(); 中提供该功能 详细。 在Mobile上,仅在加载应用程序时才执行一次此功能,首先打开列表视图(而不是详细视图),并且当我尝试导航变量oItem 时始终为null,尽管 this.getList()已加载。 哪里可能有问题?

谢谢您的任何建议。 如果您需要更多信息,请告诉我。

马丁

付费偷看设置
发送
1条回答
派大星 ヾ
1楼-- · 2020-08-15 23:37

嗨,马丁,我在同样的问题上苦苦挣扎,并找到了解决方案。 您需要从S2.Controller.js重构方法'applySearchPattern'

 applySearchPattern:函数(sFilterPattern){
 var iCount = sap.ca.scfld.md.controller.ScfldMasterController.prototype.applySearchPattern.call(this,sFilterPattern);
 var sKey =(iCount> 0 || sFilterPattern ==""))?  " NO_ITEMS_AVAILABLE":" NO_MATCHING_ITEMS";
 var sNoDataText = this.oApplicationFacade.getUiLibResourceModel()。getText(sKey);


 this.getList()。setNoDataText(sNoDataText);
 this.searchListFlag = 0;
 如果(this.isMultiSelectActive()){
 返回iCount;
 }
 如果(!sap.ui.Device.system.phone){
 if(iCount === 0){//任务列表搜索FIX
 this.oRouter.navTo(" empty",null,true);
 this.getList()。removeSelections(true);
 如果(this.oDataManager && this.oDataManager.bOutbox){
 cross.fnd.fiori.inbox.Conversions.setShellTitleToOutbox(this.getOwnerComponent()," cross.fnd.fiori.inbox.view.S2");
 }
 }其他{
/**这就是解决方法*/
 var sDetailRouteName = this.getDetailRouteName();
 this.oRouter.navTo(sDetailRouteName,this.searchListFirstItem,true);
 }
 }
 返回iCount;
 },

 

一周热门 更多>