点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我使用" cds import"来导入以下edmx,它是SuccessFactors用户实体:
https://api2.successfactors.eu/odata/ v2/User/$ metadata
硬拷贝: sf-user.txt
我的service.js实现:
module.exports =异步srv => { const ext =等待cds.connect.to('PLTUserManagement') srv.on('READ','User',req => { console.log('已读') 返回ext.tx(req).run(req.query) }) }
在测试服务时,我收到CDS的错误500和远程服务的400的错误:
http://127.0.0.1:4004/userbrowser/User
<错误xmlns =" http://docs.oasis-open.org/odata/ns/metadata">500
请求失败,状态码为400
我逐步执行了请求,并根据生成的CSN找到了cd组成的完整URL。
/User?$ select = userId,addressLine1,addressLine2,addressLine3,benchStrength,bonusBudgetAmount,bonusTarget,businessPhone,businessSegment,cellPhone,公民身份,城市,compensationBonusEligible,compensationEligible,compensationReadOnly,compensationSalaryEligibleReligable,CompensationR, ,criticalTalentComments,custom01,custom02,custom03,custom04,custom05,custom06,custom07,custom08,custom09,custom10,custom11,custom12,custom13,custom14,custom15,dateBirth,dateOfCurrentPosition,dateOfPosition,defaultFullName,defaultLocale,department,division,email,empId 员工类别,种族,传真,最终职位代码,最终职位家庭,最终职位角色,名字,未来领导者,性别,雇用日期,家庭电话,影响减值,影响减值,职位注释,职位代码,职位家庭,职位级别,职位角色,姓氏修改, ,level,localCurrencyCode,位置,lumpsum2Target,lumpsumTarget,已婚,米 atrix1Label,matrix2Label,矩阵管理的,优点有效日期,优点目标,mi,少数族裔,国籍,newToPosition,昵称,目标,onboardingId,origHireDate,密码,payGrade,性能,潜在,促销金额,提成比例,原因保留,重新定位,重新定位 工资,salaryBudgetExtra2Percentage,salaryBudgetExtraPercentage,salaryBudgetFinalSalaryPercentage,salaryBudgetLumpsumPercentage,salaryBudgetMeritPercentage,salaryBudgetPromotionPercentage,salaryBudgetTotalRaisePercentage,salaryLocal,salaryProrating,称呼,sciLastModified,seatingChart,serviceDate,SSN,状态,状态,stockBudgetOptionAmount,stockBudgetOther1Amount,stockBudgetOther2Amount,stockBudgetOther3Amount,stockBudgetStockAmount,stockBudgetUnitAmount,后缀,sysCostOfSource, sysSource,sysStartingSalary,timeZone,标题,totalTeamTeam,用户名,退伍军人禁用,退伍军人奖章,退伍军人保护,退伍军人分离,邮政编码,customManager_userId,customReports_userId,directReports_userId,hr_userId,hrRepor ts_userId,manager_userId,matrixManager_userId,matrixReports_userId,proxy_userId,secondManager_userId,secondReports_userId,userPermissionsNav_userId&$ orderby = userId%20asc&$ top = 1000
通过Postman执行相同的路径会呈现相同的错误代码,但会在返回的错误中提供更多信息:
<?xml版本=" 1.0"编码=" utf-8"?>COE_PROPERTY_NOT_FOUND
[COE0021]无效的属性名称:User/customManager_userId。 请在管理中心> OData API数据字典或实体元数据中检查属性名称。 确保没有删除该字段的数据模型更改,请执行刷新元数据以确保缓存未损坏。
我猜潜在的问题是来自API业务中心的EDMX文件与SuccessFactors API的当前OData实现不一致。
让我感到困惑的是,在我的实现中,我要求将传入的查询转发到远程服务。 该查询似乎是'/User'而不是'/User?$ select = ...'。 CDS为什么要这样做,我如何"修复"它?
我更改了实现,以获取没有$ select的整个实体:
module.exports =异步srv => { const ext =等待cds.connect.to('SF_User') srv.on('READ','User',async req => { console.log('已读') const result =等待ext.tx(req).get('/User') 返回结果 }) }
然后这会导致另一个错误,我不知道该如何解决...
<错误xmlns =" http://docs.oasis-open.org/odata/ns/metadata">
null
<消息>在实体集合的序列化期间发生错误。 使用以下密钥在实体序列化期间发生错误:userId:SFADMIN。 该实体包含" delegatorOfAutoDelegateConfigNav"的数据,该数据不属于"用户"类型的结构或导航属性。
sf-user.txt
(51.7 kB)
Hi Pieter
cds框架尚不支持外部服务中的复杂查询。 因此,您已经可以通过自定义处理程序自行构造查询。 不要直接通过原始服务调用传递查询。
干杯!
嗨,Pieter,
如果在这里还有任何未解决的问题,请告诉我吗? 我们已经与您讨论了OData日期时间转换。 node.js运行时将尽快通知您。 我们可以关闭BCP票吗?
最诚挚的问候,
Olena
嗨Olena,
存在属性错误的问题(请参见上文:以'_userid'结尾的任何内容),该属性来自于实体在导入其EDMX之后的关联。 直到我从CSN手动删除所有关联之后,查询才成功,因为不再对不存在的属性进行$ select选择。
最诚挚的问候,
Pieter
谢谢,我现在才意识到您正在测试我的v2 cds代理服务。
从服务中我确实可以看到v2中的纪元与V4中的ISO标准的差异。
IMO,如果cds支持使用v2外部服务,则应将日期格式从epoch转换为ISO,就像v2代理正在处理反向转换一样。
一周热门 更多>