SAP Cloud Platform Workflow的自定义用户任务UI中的列表中未显示任何项目

2020-09-10 11:36发布

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

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


你好

我在实现列表/集合/等时遇到问题。 与OData服务中的EntitySet一起使用。

我想在自定义用户任务UI中实现它,我在外部SAPUI5应用" decideOrder"中实现了该任务。

该应用程序本身可以与我在SAP Cloud Platform Workflow中的上下文模型(通过OData服务中的服务任务获取数据)完美配合

对于我的工作流程中的一个用例(顺便说一句,很容易的采购订单批准),我现在需要一个直接通过OData服务而不是我的上下文模型填写的列表。

为了进行测试,我使用随机用户数据创建了一个简单的OData服务。 我在一个新的UI5应用"测试表"中实现了它,并且即使没有编写任何代码也可以正常工作。

但是,当我想在我的工作流任务UI(与上面的应用程序具有相同的结构)中实现它时,没有显示任何数据。 我的" decideOrder" -App中的manifest.json同步数据没有问题,并且我将代码中的几乎所有内容与上面显示的App进行了比较。 现在,这是我的用户任务工作流UI的屏幕截图,其中没有显示来自同一OData服务的任何项目。

以下是上面显示的UI的代码:它与testtable App中的代码相同,但未使用IconTabFilter。

我从服务任务中获得的上下文模型是否确实通过EntitySet在OData模型方面存在问题? 我是否必须在工作流用户界面中分别初始化模型?

我真的没有主意...也许我错过了什么?!

提前谢谢!

此致

斯蒂芬

(14.8 kB)

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

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


你好

我在实现列表/集合/等时遇到问题。 与OData服务中的EntitySet一起使用。

我想在自定义用户任务UI中实现它,我在外部SAPUI5应用" decideOrder"中实现了该任务。

该应用程序本身可以与我在SAP Cloud Platform Workflow中的上下文模型(通过OData服务中的服务任务获取数据)完美配合

对于我的工作流程中的一个用例(顺便说一句,很容易的采购订单批准),我现在需要一个直接通过OData服务而不是我的上下文模型填写的列表。

为了进行测试,我使用随机用户数据创建了一个简单的OData服务。 我在一个新的UI5应用"测试表"中实现了它,并且即使没有编写任何代码也可以正常工作。

但是,当我想在我的工作流任务UI(与上面的应用程序具有相同的结构)中实现它时,没有显示任何数据。 我的" decideOrder" -App中的manifest.json同步数据没有问题,并且我将代码中的几乎所有内容与上面显示的App进行了比较。 现在,这是我的用户任务工作流UI的屏幕截图,其中没有显示来自同一OData服务的任何项目。

以下是上面显示的UI的代码:它与testtable App中的代码相同,但未使用IconTabFilter。

我从服务任务中获得的上下文模型是否确实通过EntitySet在OData模型方面存在问题? 我是否必须在工作流用户界面中分别初始化模型?

我真的没有主意...也许我错过了什么?!

提前谢谢!

此致

斯蒂芬

(14.8 kB)
付费偷看设置
发送
8条回答
Tong__Ming
1楼 · 2020-09-10 12:02.采纳回答

斯蒂芬,你好

此行为是设计使然。 解释如下:

https://help.sap.com/viewer/ f85276c5069a429fa37d1cd352785c25/Cloud/zh-CN/c628bb07530147c6ad292f03c3b3b700.html

我想您的模型是在vour组件启动时实例化的。 如SAP帮助中所述,您必须为服务URL加上前缀。 因此,要么不使用模型的自动实例化并自己创建模型,要么可以尝试以下方法:

在Components.js中:

/**
 *覆盖UIComponent的功能,因为如果在MyInbox-App中运行,我们的oData-Service需要一个不同的URL
 * @参数oManifestModels
 * @参数oManifestDataSources
  */
 _initComponentModels:函数(oManifestModels,oManifestDataSources){
 var服务;
//在收件箱中运行?
 如果(this.getComponentData()&& this.getComponentData()。startupParameters){
 var startupParameters = this.getComponentData()。startupParameters;
 如果(startupParameters.inboxAPI){
//是,在oData URL前面加上应用程序的路径
 var prefix ="/" + startupParameters.oParameters.sApplicationPath;
 用于(oManifestDataSources中的服务)
 如果(Object.prototype.hasOwnProperty.call(oManifestDataSources,服务))
 如果(oManifestDataSources [service] .uri)
 oManifestDataSources [service] .uri =前缀+ oManifestDataSources [service] .uri;
 用于(oManifestModels中的服务)
 如果(Object.prototype.hasOwnProperty.call(oManifestModels,service))
 如果(oManifestModels [service] .uri)
 oManifestModels [service] .uri =前缀+ oManifestModels [service] .uri;
 }
 }

 UIComponent.prototype._initComponentModels.call(this,oManifestModels,oManifestDataSources);
 },
compass1988
2楼-- · 2020-09-10 12:03

HelloJürgen,

非常感谢您的回答。

这似乎是解决我的问题的正确方法:)

此致

Stephan

SC_Yao
3楼-- · 2020-09-10 12:17

你好,Stepan,

不知道您到底在尝试什么,但是我想这是同样的问题。 您必须在指向我的后端中存储的文档的每个URL前面加上我以前回答中的" startupParameters.oParameters.sApplicationPath"。 我的sap.m.UploadCollection包含指向我的SAP Backend中文档的URL时遇到了这个问题。 在Inbox中运行时,我必须在每个URL前面加上应用程序路径。

此致

于尔根

Alawn_Xu
4楼-- · 2020-09-10 12:06

你好斯蒂芬,

让我尝试在这里用您的用例向您解释。
例如,您想从S4HANA OData调用中加载项目列表: https://my.s4hana.ondemand.com/sap/opu/odata/sap/ODataService/DokumentSet(PO_NUMBER ='12345 ',ARC_DOC_ID ='45677')/$ value

假设您已经测试过代码已将列表项加载到自定义应用程序中。
>>如果您想使用与Workflow Task UI相同的自定义应用程序,那么您需要做更多的应用程序编码,如所述此处
>>任何外部API调用(如上述调用)都必须重定向到基于MyInbox的内部目标:/html5apps/ / <目标名称> /sap/opu/odata/sap/ODataService/DokumentSet(PO_NUMBER ='12345',ARC_DOC_ID ='45677')/$ value
(在我的解释中也是如此 博客

其他一切都保持不变。
这很简单。

让我知道它是否有效,
Archana

小熊yu生菜
5楼-- · 2020-09-10 12:10

我很高兴它能成功! 快乐的工作流程...

huskylover
6楼-- · 2020-09-10 12:08

HelloJürgen,

现在它可以工作了,我对来自OData服务的URL(到文档的链接)有疑问。 在我的收件箱中,它们不起作用,在外部应用程序中,它们起作用。

我也试图在这里找到解决方案:

https: //answers.sap.com/questions/12657333/problems-with-opening-urls-in-myinbox-in-user-task.html

然后我尝试感谢 Seshadri Sreenivas R Archana Shukla 此博客中的所有内容:

https://blogs.sap.com/2017/10/22/part-3-calling-external-service-in-task-ui-of-sap-cloud-platform-workflow/ #

但是在我看来,它似乎无法正常工作,因为我像您上面的代码中那样实例化了它。

我如何实现OData服务和模型通过/html5apps/application/destination/sap/opu/odata/sap/ODataService路由?

在neo-app.json中,我的清单manifest.json的代码如下:

"路径":"/img/sap/opu/odata/",
 "目标":{
 " type":"目的地",
 "名称":" S4H",
 " entryPath":"/img/sap/opu/odata/"
 },
 " description":" S/4Hana on prem"
 

我是否必须对模型进行单独的Ajax调用,或者可以在函数_initComponentModels中实现它?

非常感谢您,

此致

Stephan

Baoming ROSE
7楼-- · 2020-09-10 12:08

HelloJürgen,

再次感谢您。 正是那是我的问题! 同样与上载收藏集有关。

这是我当时试图打开的URL,但返回500 Internal Server Error:

 url ="/img/sap/opu/odata/sap/ODataService/DokumentSet(PO_NUMBER ='{PO_NUMBER}',ARC_DOC_ID ='{ARC_DOC_ID}')/$ value"
 

我到底要在这里更改什么?/sap/opu/odata/不是应用程序路径,还是必须在URL中的哪里设置?

感谢和问候,

Stephan

一周热门 更多>