Как получить доступ к службе OData с помощью SAP S / 4HANA Cloud SDK в существующем приложении? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть Java-приложение в SAP Cloud Platform Cloud Foundry, которое интегрируется с SAP S / 4HANA Cloud (ERP-система моей компании), вызывая API (службы OData) в этой системе.Я слышал о 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));

Теперь меня попросили сделать что-то подобное с деловыми партнерами.Как сделать это для службы OData делового партнера , используя SDK?Нужно ли создавать новое приложение, если я хочу использовать SDK?

1 Ответ

0 голосов
/ 03 октября 2018

С помощью виртуальной модели данных Java 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();

Кстати, это также касается общения со службой назначения и применения заголовков аутентификации - вам больше не нужно делать это вручную.

Вы можете использовать SAP S / 4HANA Cloud SDK в любомJava проект.Просто включите зависимости com.sap.cloud.s4hana.cloudplatform:scp-cf (для Cloud Foundry) и com.sap.cloud.s4hana:s4hana-all.

...