Since currently  S4HC odata version is 2.0,  I think we can not use odata client generater (it works for Odata v4).  

 In my previous blog , I blog dow the method  of using httprequest to call odata API in  S4HANA Cloud and then use XML to extract the data  . In this blog , I want  to using a more efficient way( WCF ) to  call odata api  in S4HC . Although  some associates have write a blog about this topic. But I want to give a simplist example .

By using WCF  Visual studio generate a service class base the metadata file.    The following is the steps :

1,  Get metadata from postman ,and save the response to  xml file .

2 Create a new project  in VS :

 Create a new project in VS2012

[File] > [New]>[Project]

Or Ctrl+ Shift+N

3 . Add service reference in project :

4. using code to use the service .

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net;

using System.Security;

using System.Data.Services.Client;



namespace ConsoleApplication5


    class Program


        static void Main(string[] args)


            BillingService.API_BILLING_DOCUMENT_SRV_Entities context =

                new BillingService.API_BILLING_DOCUMENT_SRV_Entities(new Uri(""));

            context.SendingRequest += new EventHandler<System.Data.Services.Client.SendingRequestEventArgs>(OnSendingRequest);


            var billings = context.A_BillingDocument.Execute();

            foreach (var billing in billings)


                Console.WriteLine(billing.AccountingDocument + "|" + billing.BillingDocumentDate + "|" + billing.CompanyCode);



            Console.WriteLine("loop finished");



        private static void OnSendingRequest(object sender, SendingRequestEventArgs e)


            string authorization = "UserName" + ":" + "PassWord";

            string base64 = Convert.ToBase64String(Encoding.Default.GetBytes(authorization));

            base64 = "Basic " + base64;

            // Add an Authorization header that contains an OAuth WRAP access token to the request.

            e.RequestHeaders.Add("Authorization", base64);





5, Execute the program .

Best regards!

Jacky Liu