admin 管理员组文章数量: 887007
C#调用SAP S4/HANA Gateway Service
公司使用SAP,并且实施公司做了一些提供报表数据的接口供调用,首先说明一下我对SAP不熟悉
但SAP用到的接口信息提供大家参考一下,这些Gateway Service使用的是DCP方式写的,SAP提供数据的协议叫:OData
相关资料大家自行百度、Google、bing
进入T-Code:SEGW
点击Open Project按钮打开对应的接口
双击DPC_EXT之后就进入类构建器,类似于WebService的东西吧
这里要注意的是有HeaderSet、ItemSet的区别,但我不知道有什么区别.....
前边说到用OData,这里必须要重定义一下HEASERSET_GET_ENTITYSET
主要是为了让方法可以获取得到OData的Token
然后有一个方法前面有绿色的,双击这个方法就可以进入代码编写界面
至此,SAP相关的我知道的也就到这里了,SAP的开发语言叫:ABAP
这个我也不熟悉就不误人子弟了
现在直接上代码,看看C#怎么调用SAP提供的接口
private Model.APIReturn ZOBIAPI(string PlantCode, DateTime DocDate){Model.APIReturn ret = new Model.APIReturn();string sDocDate = GetTimestamp(DocDate.ToUniversalTime()).ToString();string userid = "";string password = "";string url = "";//url = ":8000/sap/opu/odata/sap/ZODATA_ZOBI012_SRV/HeaderSet?sap-client=100";//测试环境url = ":8000/sap/opu/odata/sap/ZODATA_ZOBI012_SRV/HeaderSet?sap-client=800";//正式环境string token = "";string json = "";string authorization = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(userid + ":" + password));#region 通过 Headers-authorization 方式验证 BasicSystem.Net.HttpWebRequest request1 = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;request1.Method = "GET";request1.Headers.Add("authorization", authorization);request1.Headers.Add("x-csrf-token", "fetch");request1.CookieContainer = new System.Net.CookieContainer(); //没有Container就不能保存这次请求的Cookie,没有第一次的Cookie,第二次调用的时候会提示403using (System.Net.HttpWebResponse response1 = request1.GetResponse() as System.Net.HttpWebResponse){token = response1.GetResponseHeader("x-csrf-token");#region 调用APISystem.Net.HttpWebRequest requestAPI = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;requestAPI.Method = "POST";requestAPI.Headers.Add("x-csrf-token", token); //x-csrf-token方式需要先从服务器用GET方式取得tokenrequestAPI.ContentType = "application/json"; //用来指定提交给API的内容格式requestAPI.Accept = "application/json"; //用来指定API返回的内容格式requestAPI.CookieContainer = new System.Net.CookieContainer(); //new一个Container是为了将第一次的Cookie再次使用requestAPI.CookieContainer.Add(response1.Cookies); //将第一次的Cookie作为第二次再使用不然服务器会提示403json = @"{""ItemsSet"":[{""DocDate"":""\/Date(" + sDocDate + @")\/"",""DocDateAbc"":""\/Date(" + sDocDate + @")\/"",""PlantCode"":""" + PlantCode + @"""}]}";using (System.IO.StreamWriter sw = new System.IO.StreamWriter(requestAPI.GetRequestStream())){sw.Write(json);}using (System.Net.HttpWebResponse hwRespAPI = requestAPI.GetResponse() as System.Net.HttpWebResponse){System.IO.StreamReader sr = new System.IO.StreamReader(hwRespAPI.GetResponseStream());string resultJson = sr.ReadToEnd();ret = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.APIReturn>(resultJson);}#endregion}#endregionreturn ret;}
以上就是完整调用SAP接口的代码
记录一下方便以后自己查看
另外有一个T-Code可以使用服务的:/N/IWFND/MAINT_SERVICE
转载于:.html
本文标签: C调用SAP S4HANA Gateway Service
版权声明:本文标题:C#调用SAP S4HANA Gateway Service 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732351304h1533141.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论