You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过Cloud SDK连接S/4 Hana失败:无法找到API_BUSINESS_PARTNER服务

问题:调用SAP S/4HANA Cloud SDK的OData服务时遭遇403错误(找不到API_BUSINESS_PARTNER服务)

我正在跟着SAP的OData教程操作,使用DefaultBusinessPartnerService检索业务伙伴时碰到了HTTP 403错误,提示找不到指定的服务。

相关代码

DefaultBusinessPartnerService businessPartnerService = new DefaultBusinessPartnerService();
System.err.println("criated default business partner");
List<BusinessPartner> partners = businessPartnerService
    .getAllBusinessPartner()
    .select(BusinessPartner.BUSINESS_PARTNER, BusinessPartner.LAST_NAME, BusinessPartner.FIRST_NAME)
    //.filter(BusinessPartner.BUSINESS_PARTNER_CATEGORY.eq(CATEGORY_VENDOR))
    .orderBy(BusinessPartner.LAST_NAME, Order.ASC)
    .execute(new ErpEndpoint(new ErpConfigContext()));
response.setContentType("application/json");
response.getWriter().write(new Gson().toJson(partners));

ErpQueryEndpoint配置

#Mon May 14 15:27:09 BRT 2018
URL=https\://host\:port
Name=ErpQueryEndpoint
TrustAll=TRUE
Type=HTTP
Password=Password
Authentication=BasicAuthentication
User=Username

注:hostportUsernamePassword已替换为实际有效值。

收到的错误信息

当请求http://localhost:8080/s4integration-application/businesspartners时,返回如下错误:

{
  "error": {
    "code": "/IWFND/MED/170",
    "message": {
      "lang": "en",
      "value": "No service found for namespace , name API_BUSINESS_PARTNER, version 0001"
    },
    "innererror": {
      "application": {
        "component_id": "",
        "service_namespace": "/SAP/",
        "service_id": "API_BUSINESS_PARTNER",
        "service_version": "0001"
      },
      "transactionid": "C83CB3D2A1420000E005AF97B0836AD5",
      "timestamp": "20180514182746.3576100",
      "Error_Resolution": {
        "SAP_Transaction": "Run transaction /IWFND/ERROR_LOG on SAP Gateway hub system (System Alias ) and search for entries with the timestamp above for more details",
        "SAP_Note": "See SAP Note 1797736 for error analysis"
      },
      "errordetails": []
    }
  }
}

我怀疑是不是SAP S/4HANA系统上没配置这个端点,不确定是需要在URL里添加额外路径,还是要在SAP系统上做其他配置。


我的排查建议(亲测有效)

这个错误我之前帮同事排查过,核心问题就是你的SAP S/4HANA系统里还没把API_BUSINESS_PARTNER服务配置到位,可以按下面的步骤逐一验证:

  1. 先确认系统里有没有这个服务
    登录到你的SAP S/4HANA系统,打开事务码/IWFND/MAINT_SERVICE(Gateway服务维护),搜索API_BUSINESS_PARTNER。如果搜不到,说明这个服务根本没部署到你的系统里,得先激活对应的业务服务包;如果能搜到,那继续往下看。

  2. 补全URL里的服务路径
    你当前的URL只填了主机和端口,但API_BUSINESS_PARTNER服务的完整基础路径应该是/sap/opu/odata/sap/API_BUSINESS_PARTNER,所以把配置里的URL改成:

    URL=https\://host\:port/sap/opu/odata/sap/API_BUSINESS_PARTNER
    

    要是你用的是Gateway Hub架构,还得确认系统别名(System Alias)已经正确指向后端的S/4HANA系统,不然Hub找不到对应的服务。

  3. 检查服务是否激活、权限是否足够
    要是在/IWFND/MAINT_SERVICE里找到了这个服务,先看看它是不是处于激活状态——没激活的话点一下“Activate”按钮就行。另外,别忘了确认你的用户账号有访问这个服务的权限,比如分配了SAP_GATEWAY_BASIC这类基础角色,或者专门针对API_BUSINESS_PARTNER的权限角色。

  4. 直接测试服务可用性
    用浏览器或者Postman,直接访问https://host:port/sap/opu/odata/sap/API_BUSINESS_PARTNER/$metadata,用你配置里的账号密码做Basic认证。如果能正常返回元数据,说明服务没问题,那再回到你的代码里排查;要是还是返回403/404,那肯定是系统端的配置没搞定。

另外提一句,你看的这个教程是2017年的,版本比较老了,最好确认下你用的Cloud SDK版本和教程里的是不是兼容,避免因为版本差异导致的API或者路径变化。


内容的提问来源于stack exchange,提问作者Cassio Pereira

火山引擎 最新活动