尝试从SFSF LMS提取数据时出现500个内部服务器错误

2020-08-21 07:09发布

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

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


大家好,

我正在做一个场景,我需要使用Odata从SFSF LMS中获取数据并将报告发送给第三方。 在使用SAP CPI Successfactor适配器进行get调用时,出现如下错误:

错误详细信息:" com.sap.gateway.core.ip.component.exception.ODataProcessingException:HTTP/1.1 500内部服务器错误,原因:org.apache.olingo.client.api.communication .ODataServerErrorException:HTTP/1.1 500内部服务器错误 "

我要呼叫的实体是:

端点:/learning/odatav4/public/user/learningplan-service/v1

实体:LearningItemDetails,LearningItemDocuments

端点:/learning/odatav4/public/user/learningHistory/v1

实体:学习历史,学习历史等。

示例适配器屏幕截图:

有人可以帮助我解决实际问题吗?

此致

苏维克

(14.1 kB)

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

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


大家好,

我正在做一个场景,我需要使用Odata从SFSF LMS中获取数据并将报告发送给第三方。 在使用SAP CPI Successfactor适配器进行get调用时,出现如下错误:

错误详细信息:" com.sap.gateway.core.ip.component.exception.ODataProcessingException:HTTP/1.1 500内部服务器错误,原因:org.apache.olingo.client.api.communication .ODataServerErrorException:HTTP/1.1 500内部服务器错误 "

我要呼叫的实体是:

端点:/learning/odatav4/public/user/learningplan-service/v1

实体:LearningItemDetails,LearningItemDocuments

端点:/learning/odatav4/public/user/learningHistory/v1

实体:学习历史,学习历史等。

示例适配器屏幕截图:

有人可以帮助我解决实际问题吗?

此致

苏维克

(14.1 kB)
付费偷看设置
发送
6条回答
三十六小时_GS
1楼 · 2020-08-21 07:32.采纳回答

苏维克,你好

对于您的情况,这不是一个好的设计/解决方案,我完全同意。 这对于某些呼叫可能有用,但是当您需要共享所有数据时,这根本不是一个好主意。

由于要与第三方共享,因此可以在SuccessFactors中使用LMS模块的导出功能。 可以将这些数据导出为.CSV文件,该文件可以将该文件放置在Successfctors SFTP上。 将文件存储到此处后,您可以将文件从SFTP提取到CPI流中。 然后,在此流程中,您可以使用CSVto X转换器并最后以您喜欢的格式共享它。 是JSON XML和电子邮件或其他内容。 您可以安排此时间,甚至可以公开CPI的终结点(可能与之一起使用API​​管理),然后您的流可以充当中间件来从SFTP中获取数据,并以数据作为响应。

亲切的问候,

95年老男孩
2楼-- · 2020-08-21 07:33

您好干范范伯格(Dries Van Vaerenbergh)

感谢您分享您的想法。 我还向SF LMS团队询问了同样的问题,以生成报告,然后根据要求进行CPI转换。

此致

苏维克

callcenter油条
3楼-- · 2020-08-21 07:11

嗨苏维克,

您首先尝试使用Postman之类的工具执行请求吗?

我想说的是,先仔细检查一遍,看看是否可行。

此SAP帮助文档描述了"学习OData API"的使用情况:

https://help.sap.com/viewer/ 5aab9bef78fc4c4fa199c1f7aa142720/1908/zh-CN/ed0b38ff14e74e1891a7170405e102a6.html

Ringarding LearningItemDetails如果我没有记错的话,我认为必须通过以下过滤器

获取/learning/odatav4/learningPlan/v1/LearningItemDetails
 ?$ filter = lisCriteria/itemID eq'1147305822'
 和lisCriteria/itemTypeID eq'COURSE'
 和lisCriteria/revisionDate eq 1147304737000 

如果您可以在Postman中进行这样的呼叫,请尝试在CPI中尝试,也许可以像本博客中那样首先使用HTTP尝试(并使用OAuth):

https://blogs.sap.com/2019/11/17/cloud-platform-integration-oauth2-credentials/

之后,您可以尝试返回到OData请求。 但是我认为您的情况下可能缺少HTTP强制过滤器。

亲切的问候,

四川大学会员
4楼-- · 2020-08-21 07:26

嗨,干范范伯格(Dries Van Vaerenbergh)

感谢您的回复。

是的,我没有应用任何过滤条件。 应用过滤器后,我仅获得一项的详细信息。 但是要求是获取对象LearningItemDetails的所有记录并将其发送给第三方。 所以我的问题是如何实现这种情况? 我尝试了多种方法,但是没有运气。 请让我知道我如何克服这种情况?

我也尝试了以下情形。 在这里,我也无法使用过滤器获取数据。 如果我们无法在没有过滤器的情况下获取数据,那么通过SAP CPI进行集成将是一项挑战。

获取/learning/odatav4/curriculum/v1/CurriculumItemStatuses?$ filter = cisCriteria/targetUserID eq'user'和cisCriteria/curriculumID eq'curriculum_id'和cisCriteria/rootCurriculumID eq'root_curriculum_id'

请在这里建议。

此致

苏维克

此致

苏维克

蓋茨
5楼-- · 2020-08-21 07:36

嗨苏维克,

前段时间,我自己使用了这些Learning API,并且有类似的要求。 这里的问题是学习API非常有限,您几乎必须对每个请求都应用过滤器。 您可以通过遍历请求并根据参数构建请求来解决。 这将意味着很多呼叫,这根本不是最佳实践。 或者,您构建一些逻辑并将结果缓存在NodeCache中,或者将必要的数据复制到其他位置,然后在cpi中使用它。 解决方法有很多可能性,但是在这种情况下,它正在寻找性能最佳的方法。

遗憾的是这些API是如此有限。

亲切的问候,

吹牛啤
6楼-- · 2020-08-21 07:17

您好干范范伯格(Dries Van Vaerenbergh)

要解决的变通方法是,我需要为每个调用构建参数,因为结果是构建一个流或文件的调用数量很大。 因为对于每个项目,每个用户或参数值的每种组合,我都需要调用SF LMS Odata API并逐个捕获记录,这在我看来非常复杂,而且设计也不佳。 由于LMS API每次调用仅返回一项/记录。

您对此有何看法?

此致

苏维克

一周热门 更多>