.net(c#) 簡單調用SAP byd OData 服務


.net Odata 插件

OData Connected Service

https://marketplace.visualstudio.com/items?itemName=laylaliu.ODataConnectedService#review-details

OData v4 Client Code Generator

https://marketplace.visualstudio.com/items?itemName=bingl.ODatav4ClientCodeGenerator

 

1.在Byd中建立自定義 OData服務

image

image

image

服務名稱要用英文開頭 不包含特殊字符,不然會報錯,保存

2.設置OData服務內容

image

工作中心視圖用於設置整體服務的權限,也可以不設置,然后在實體對象中明細設置對象權限

image

選擇業務對象.並創建對應實體類型

image

導入功能中,設置功能類型和參數

image

保存並激活

image

打開 服務 URL 並保存為 接口配置.XML

image

測試接口

image

 

3.在VS 2015中使用

添加服務引用

image

地址可以選擇保存的 接口配置.XML 也可以直接使用URL(需要用Byd 用戶登陸)

image

點確定就可以了

4.在VS 2017中使用

添加鏈接的服務

image

選擇插件,沒安裝的需要安裝

image

選擇導出的 接口配置.xml  (不支持URL登陸)

image

 

5.Codeing

 

        static  void Main(string[] args)
        {
            var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";
            odatacardtest odata = new odatacardtest(new Uri(url))
            {
                //認證信息
                Credentials = new NetworkCredential("zh3305", "*******")
            };
            //執行查詢 where 會自動轉換成ABAP查詢語句.支持常見查詢語句轉換 Contains StartsWith EndWith == 等等常用語句
            var cardRoots = odata.TCardRootCollection.Where(t => t.CarParkName.Contains("2")).ToList();
            Console.WriteLine(JsonConvert.SerializeObject(cardRoots));
            Console.ReadKey();
        }
    }
 
//.net Core 
 static async Task Main(string[] args)
        {
            var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";
            odatacardtest odata = new odatacardtest(new Uri(url))
            {
                //認證信息
                Credentials = new NetworkCredential("zh3305", "**********")
            };
            var query = (DataServiceQuery<TCardRoot>)(from cust in odata.TCardRootCollection
                                                      where cust.CarParkName == "2"
                                                      select cust);
            // 必須改為調用 BeginExecute 和 EndExecute 方法。
            query.BeginExecute(ar =>
            {
                if (ar.AsyncState is DataServiceQuery<TCardRoot> peopleQuery)
                {
                    var people = peopleQuery.EndExecute(ar).ToArray();
                    foreach (var p in people)
                    {
                        Console.WriteLine(p.CarParkName);
                    }
                    Console.WriteLine(JsonConvert.SerializeObject(people));
                }
            }, query);
            Console.ReadKey();
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM