.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服务
服务名称要用英文开头 不包含特殊字符,不然会报错,保存
2.设置OData服务内容
工作中心视图用于设置整体服务的权限,也可以不设置,然后在实体对象中明细设置对象权限
选择业务对象.并创建对应实体类型
导入功能中,设置功能类型和参数
保存并激活
打开 服务 URL 并保存为 接口配置.XML
测试接口
3.在VS 2015中使用
添加服务引用
地址可以选择保存的 接口配置.XML 也可以直接使用URL(需要用Byd 用户登陆)
点确定就可以了
4.在VS 2017中使用
添加链接的服务
选择插件,没安装的需要安装
选择导出的 接口配置.xml (不支持URL登陆)
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(); }