我们可以为错误 "No error field found in JSON" (VDM:401) 做些什么?

What can we do for the error "No error field found in JSON" (VDM:401)?

我们尝试通过我们的 Java 应用程序调用 API API_BUSINESS_PARTNER。 Java 实现与 SAPUI5 - 前端应用程序通信,以便可以通过应用程序显示数据。 通过我们的本地系统,它可以毫无问题地运行,我们还可以取回数据。但是通过应用程序,我们收到错误 "No error field found in JSON" 并且 ODataConnectivityUtil 的 SCP - 日志向我们显示相应的用户未获得授权。 因此,我们尝试调用一个较旧的 MMIM_MATERIAL_DATA_SRV 并且它可以正常工作。我们在 API_PRODUCT_SRV 中收到相同的错误消息。所以一般来说它似乎不适用于新的 APIs。

谢谢, 最好的问候。

您使用的是哪个版本的 S/4HANA Cloud SDK?这可能是我们在旧版本中遇到的问题。能不能更新到最新的release版本再试一下?

有关版本的详细信息可在此处找到: https://sap.github.io/cloud-s4-sdk-examples/release-notes/

提示:我还建议使用我们提供的虚拟数据模型类来调用此类 OData 服务。您可以在此处找到有关此主题的博客 post:https://blogs.sap.com/2017/05/21/step-4-with-sap-s4hana-cloud-sdk-calling-an-odata-service/

请查看 S/4HANA OData 日志,您可以使用事务 /iwfnd/error_log(在它之前放 /n)找到它。 然后执行 OData 调用以引发错误。如果您随后在 OData 日志中找到一个条目,则表示对 S/4HANA 的身份验证成功。然后你会找出更多的错误细节。 如果您没有找到任何条目,很可能您没有正确验证。在这种情况下 S/4HANA returns 401 和一个 HTML 文档作为响应负载。

再次感谢您的支持。

我们现在已经解决了这个问题。 问题是第一个元数据请求是在默认客户端(客户端 100)上执行的,尽管我们在目标配置中设置了 "sap-client=200"。 我们在客户端之间的密码不同,因此我们收到了身份验证错误。

我们怀疑 "newer" API 将无法从 SCP 访问目标配置。所以它可能适用于旧版本。

我们遇到的一个问题是 Cloud SDK 不会从目标配置(用于元数据请求)中获取客户端。

另一个问题是错误消息 "No error field found in JSON" 具有误导性。

只有 "ODataConnectivityUtil" 的提示,我们才能看到我们的身份验证错误。再次感谢。