我在SAP Cloud Platform Cloud Foundry上有一个Java应用程序,该应用程序通过调用该系统中的API(OData服务)与SAP S / 4HANA Cloud(我公司的ERP系统)集成。我听说过SAP S / 4HANA Cloud SDK,它使这种情况变得更加容易。
如何利用SAP S / 4HANA Cloud SDK?当前,在检索产品主数据的情况下,我用于调用SAP S / 4HANA的代码看起来像这样(简化并结合在一起)。我自己创建了S4Product
类作为响应的表示。 baseUrl
和authHeader
是在与SAP Cloud Platform上的目标服务进行对话之前确定的。
StringBuilder url = new StringBuilder(baseUrl);
url.append("/sap/opu/odata/sap/API_PRODUCT_SRV/A_Product");
url.append("&$select=Product,CreationDate");
url.append("&$filter=ProductType eq '1'");
url.append("&$top=10");
URL urlObj = new URL(url.toString());
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Authorization",authHeader);
connection.setDoInput(true);
final InputStreamReader in = new InputStreamReader(connection.getInputStream());
String response = CharStreams.toString(in);
List<S4Product> result = Arrays.asList(new Gson().fromJson(response, S4Product[].class));
现在,我被要求与商业伙伴做类似的事情。如何使用SDK为business partner OData service执行此操作?如果要使用SDK,必须创建一个新的应用程序吗?
答案 0 :(得分:6)
使用Java virtual data model of the SAP S/4HANA Cloud SDK,您的代码将被以下内容代替。
final List<Product> products = new DefaultProductMasterService()
.getAllProduct()
.select(Product.PRODUCT, Product.CREATION_DATE)
.filter(Product.PRODUCT_TYPE.eq("1"))
.top(10)
.execute();
这将以流利且类型安全的API处理您之前手动完成的所有操作。在这种情况下,类Product
由SAP S / 4HANA Cloud SDK提供,无需自己创建。它提供了具有所有字段的实体类型的Java表示形式,我们将使用它们来定义选择和过滤查询选项。
对于您关于业务合作伙伴的问题,它看起来与此非常相似。
final List<BusinessPartner> businessPartners = new DefaultBusinessPartnerService()
.getAllBusinessPartner()
.select(BusinessPartner.BUSINESS_PARTNER /* more fields ... */)
// example filter
.filter(BusinessPartner.BUSINESS_PARTNER_CATEGORY.eq("1"))
.execute();
顺便说一句,这还包括与目标服务的对话和应用身份验证标头-您不再需要手动执行此操作。
您可以在任何Java项目中使用SAP S / 4HANA Cloud SDK。只需包含依赖性com.sap.cloud.s4hana.cloudplatform:scp-cf
(对于Cloud Foundry)和com.sap.cloud.s4hana:s4hana-all
。