使用SAP Cloud SDK(NodeJS)的并排SuccessFactors扩展的复杂查询

2020-08-16 03:06发布

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

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


大家好,

我正在尝试使用SAP Cloud SDK创建请求构建器,以调用Successfactors Odata API。 我遇到了复杂的OData查询问题,其中包括$ expand以及自定义字段。

  1. https://xxxxxxxxxxxxx/odata/v2/WfRequest(11111L)?$ expand = wfRequestUINav
    我为上述api创建了以下请求构建器:
 WfRequest.requestBuilder()
                 .getByKey(11111)
                 。选择(
                     WfRequest.WF_REQUEST_UI_NAV
                 )
                 。执行({
                     destinationName:" sfapi"
                 });
 

我收到以下错误:
通过密钥请求获取OData失败!

因此,我通过向WF_REQUEST_UI_NAV添加 TO_ 来修改代码,如下所示:

WfRequest.TO_WF_REQUEST_UI_NAV

,但仍然出现相同的错误。 所以我认为这可能是自定义字段,并更改了代码,如下所示:

 const WF_REQUEST_UI_NAV = WfRequest.customField('wfRequestUINav');

 函数getWFRequestsDetail(){
     返回WfRequest
                 .requestBuilder()
                 .getByKey(11111)
                 。选择(
                     WF_REQUEST_UI_NAV
                 )
                 。执行({
                     destinationName:" sfapi"
                 });
 }
 

我得到以下输出,但没有得到扩展的结果

 {
   " wfRequestUINav":{
     " __deferred":{
       " uri":" https://api12preview.sapsf.eu/odata/v2/WfRequest(11111L)/wfRequestUINav"
     }
   }
 }
 

任何人都可以帮助解决此问题吗?

感谢与问候,

Harish

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

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


大家好,

我正在尝试使用SAP Cloud SDK创建请求构建器,以调用Successfactors Odata API。 我遇到了复杂的OData查询问题,其中包括$ expand以及自定义字段。

  1. https://xxxxxxxxxxxxx/odata/v2/WfRequest(11111L)?$ expand = wfRequestUINav
    我为上述api创建了以下请求构建器:
 WfRequest.requestBuilder()
                 .getByKey(11111)
                 。选择(
                     WfRequest.WF_REQUEST_UI_NAV
                 )
                 。执行({
                     destinationName:" sfapi"
                 });
 

我收到以下错误:
通过密钥请求获取OData失败!

因此,我通过向WF_REQUEST_UI_NAV添加 TO_ 来修改代码,如下所示:

WfRequest.TO_WF_REQUEST_UI_NAV

,但仍然出现相同的错误。 所以我认为这可能是自定义字段,并更改了代码,如下所示:

 const WF_REQUEST_UI_NAV = WfRequest.customField('wfRequestUINav');

 函数getWFRequestsDetail(){
     返回WfRequest
                 .requestBuilder()
                 .getByKey(11111)
                 。选择(
                     WF_REQUEST_UI_NAV
                 )
                 。执行({
                     destinationName:" sfapi"
                 });
 }
 

我得到以下输出,但没有得到扩展的结果

 {
   " wfRequestUINav":{
     " __deferred":{
       " uri":" https://api12preview.sapsf.eu/odata/v2/WfRequest(11111L)/wfRequestUINav"
     }
   }
 }
 

任何人都可以帮助解决此问题吗?

感谢与问候,

Harish

付费偷看设置
发送
5条回答
三十六小时_GS
1楼 · 2020-08-16 03:37.采纳回答

您好 h d krishnamurthy

该服务似乎不允许选择所有以" *"表示的字段。 由于其他服务不允许这样做,因此我将不得不与团队核实是否以及如何解决此问题。 同时,您可以通过以下方法获得相同的结果:

 WfRequest
   .requestBuilder()
   .getByKey(11111)
   .withCustomQueryParameters({
     $ expand:WfRequest.WF_REQUEST_UI_NAV._fieldName,
     $ select:WfRequest.WF_REQUEST_UI_NAV._fieldName
   })
   .execute({destinationName:'sfapi'}); 

还请注意,出于生产目的,不建议选择实体的所有属性,请考虑执行以下操作。 它还可以使用解决方法为您省钱:

 WfRequest
   .requestBuilder()
   .getByKey(11111)
   .select(WfRequest.WF_REQUEST_UI_NAV.select(
     LinkedEntityName.SOME_PROPERTY
   ))
   .execute({destinationName:'sfapi'}); 

希望对您有帮助!

P。 S.在EDMX文件上,我找不到与WF_REQUEST_UI_NAV对应的任何属性,因此也可能还有其他问题。

野沐沐
2楼-- · 2020-08-16 03:36

您好丹尼斯·亨普芬

是的,这是同样的问题。 感谢您的答复。 我尝试使用try-catch记录错误,但奇怪的是它没有引发任何堆栈错误:

但是,我正在附加EDMX文件。 此规范文件来自 https://api.sap.com/api/ECWorkflow/resource租户。 但是,我正在使用的租户是 https://api12preview.sapsf.eu/odata/ v2 。 我无法附加规格文件,但可以在此处找到: https://api.sap .com/api/ECWorkflow/overview

可以请教一下吗?

大道至简
3楼-- · 2020-08-16 03:51

感谢附加edmx文件,我们将仔细研究一下并回复给您! 关于记录错误:execute函数返回一个Promise,因此您要么必须通过catch函数注册一个回调来记录错误,要么需要添加一个wait并使整个函数异步。 因此:

 ... 
.execute({ destinationName:" sfapi" }) 。然后( ... ) .catch(错误=> {console.log(error.stack);});

或:

异步函数getWfRequestDetails(){
   尝试{
     var response =等待WfRequest ...
   } catch(e){
     console.log(e.stack);
   } ... 

顺便说一句,我不确定如果将整个错误对象交给console.log会发生什么。 如果传递error.stack,则肯定会记录整个堆栈跟踪。

当学会了学习
4楼-- · 2020-08-16 03:49

您好丹尼斯·亨普芬

请在错误跟踪下方找到

错误:OData通过密钥请求获取失败!
     在Object.errorWithCause(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ @sap \ cloud-sdk-util \ dist \ error.js:14:20)
     在C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ @sap \ cloud-sdk-core \ dist \ request-builder \ get-by-key-request-builder.js:107:90
     在processTicksAndRejections(内部/进程/task_queues.js:97:5)
 造成原因:
 错误:获取对https://api12preview.sapsf.eu/odata/v2的请求失败! 无法理解以下字符序列的API请求:字符位置编号:empWfRequestNav/*:16个无效字符:*。 有关正确的API语法和示例,请参阅https://help.sap.com/viewer/d599f15995d348a1b45ba5603e2aba9b/PRODUCTION/zh-CN。
 {" code":" ServerErrorException"," message":{" lang":" en-US"," value":"无法理解具有字符序列:empWfRequestNav/*的API请求,字符位置编号:16个无效字符:  *。有关正确的API语法和示例,请参阅https://help.sap.com/viewer/d599f15995d348a1b45ba5603e2aba9b/PRODUCTION/zh-CN。"}}
     在Object.errorWithCause(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ @sap \ cloud-sdk-util \ dist \ error.js:14:20)
     在ConstructError(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ @sap \ cloud-sdk-core \ dist \ request-builder \ request \ odata-request.js:208:29)
     在C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ @sap \ cloud-sdk-core \ dist \ request-builder \ request \ odata-request.js:197:73
     在processTicksAndRejections(内部/进程/task_queues.js:97:5)
 造成原因:
 错误:请求失败,状态码为500
     在createError(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ axios \ lib \ core \ createError.js:16:15)
     在解决时(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ axios \ lib \ core \ settle.js:17:12)
     在IncomingMessage.handleStreamEnd(C:\ MyWorkplace \ Project \ WorkerCouncilApp \ MAIN \ testextension \ srv \ node_modules \ axios \ lib \ adapters \ http.js:237:11)
     在IncomingMessage.emit(events.js:322:22)
     在endReadableNT(_stream_visible.js:1187:12)
     在processTicksAndRejections(内部/进程/task_queues.js:84:21)
 

谢谢

Harish

SAP小菜
5楼-- · 2020-08-16 03:52

谢谢, Marika Marszalkowski 详细的答复。 测试后,我将进一步更新。 第二点,您是否暗示可能存在其他EDMX?

谢谢

Harish

一周热门 更多>