Skip to Content
Product Information
Author's profile photo Jacky Liu

Using API hub SDK to Call odata api in S4HANA CLOUD by JAVA

In one of my blog about C# call s4hc odata api(https://blogs.sap.com?p=725), C# can generate class for s4hc odata api . It is easy to use the related class to CRUD operation through S4HC odata API . Then is it possible to do the same in JAVA ? The answer is yes, if develop in SCP , use cloud platform sdk . If develop in third party java system, use API Hub sdk . Today’s blog is hwo to use API hub SDK to Call odata api in s4hc .

Step 1, download API hub SDK , still I will use billing odata api .

Step 2, Import project in Eclipse

Paste the source code , change the URL , user name and pass word .

The following is the source code :

package com.sap.apibhub.sdk.consumer;

import com.sap.apibhub.sdk.client.*;

import com.sap.apibhub.sdk.client.auth.ApiKeyAuth;

//import com.squareup.okhttp.Response;

import com.sap.apibhub.sdk.client.auth.HttpBasicAuth;

import com.sap.apibhub.sdk.client.auth.OAuth;

import java.util.ArrayList;

import com.sap.apibhub.sdk.api_billing_document_srv.api.*;

import com.sap.apibhub.sdk.api_billing_document_srv.model.ABillingDocumentType;

public class BillingService {

public static void main(String[] args)

{

ApiClient defaultApiClient = Configuration.getDefaultApiClient();

defaultApiClient.setBasePath(“https://my3xxxxx-api.saps4hanacloud.cn/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV”);

defaultApiClient.getAuthentications().clear();

defaultApiClient.getAuthentications().put(“httpBaseAuth”, new HttpBasicAuth());

defaultApiClient.setUsername(“username”);

defaultApiClient.setPassword(“password”);

defaultApiClient.setConnectTimeout(2000);

ABillingDocumentApi abillingDoc = new ABillingDocumentApi();

abillingDoc.setApiClient(defaultApiClient);

// for(Authentication: auth in defaultApiClient.getAuthentications() ) {}

try {

ArrayList<String> filter = new ArrayList<String>();

ArrayList<String> expand = new ArrayList<String>();

filter.add(“BillingDocument”);

filter.add(“CreationDate”);

filter.add(“CreationTime”);

expand.add(“to_Item”);

expand.add(“to_Partner”);

ABillingDocumentType result = abillingDoc.aBillingDocumentBillingDocumentGet(“90000000”,filter,expand);

System.out.println(result.toString());

}

catch(ApiException e){

System.err.println(e.getResponseBody());

}

finally {

System.out.println(“odata call finished”);

}

}

}

Assigned Tags

      3 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Priyank Kumar Jain
      Priyank Kumar Jain

      Thanks for sharing this Jacky

      Author's profile photo Sai Giridhar Kasturi
      Sai Giridhar Kasturi

      thanks for your contribution

      Author's profile photo Hiroyuki Miyaji
      Hiroyuki Miyaji

      Thank you for your explain for this.

      It was helpful.

      By the way, should I need to write item Name on coding ?

      I would you like to learn, if there is method for no coding.

      For example, APIClass.Item_Name etc.

      Regards,

      Hiroyuki Miyaji