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 = "http://10.29.10.110:8000/sap/opu/odata/sap/ZODATA_ZOBI012_SRV/HeaderSet?sap-client=100";//测试环境
            url = "http://10.29.10.126: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 方式验证 Basic
            System.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,第二次调用的时候会提示403

            using (System.Net.HttpWebResponse response1 = request1.GetResponse() as System.Net.HttpWebResponse)
            {
                token = response1.GetResponseHeader("x-csrf-token");
                #region 调用API
                System.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方式取得token
                requestAPI.ContentType = "application/json"; //用来指定提交给API的内容格式
                requestAPI.Accept = "application/json"; //用来指定API返回的内容格式
                requestAPI.CookieContainer = new System.Net.CookieContainer(); //new一个Container是为了将第一次的Cookie再次使用
                requestAPI.CookieContainer.Add(response1.Cookies); //将第一次的Cookie作为第二次再使用不然服务器会提示403
                json = @"{""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
            }
            #endregion

            return ret;
        }

以上就是完整调用SAP接口的代码

记录一下方便以后自己查看

另外有一个T-Code可以使用服务的:/N/IWFND/MAINT_SERVICE

原文地址:https://www.cnblogs.com/ZC_Mo-Blog/p/10953674.html

时间: 2024-10-27 18:26:16

C#调用SAP S4/HANA Gateway Service的相关文章

SAP S4/HANA BP屏幕增强添加自定义字段(BDT方式)

喜欢博主的读者也许会意识到,这是本博客中第一篇有关屏幕增强的文章.之前没有总结过相关的东西,除了因为相关经验有限之外,我个人也是不喜欢所谓dynpro编程的,它有许多“潜规则”一样的东西要记住,想要运用熟练,就需要花些力气去学,而它又十分老旧,在SAP的发展路线中处于即将被淘汰的地位..即便学成,可能也没什么用处. 但是在S4开始普及的这段时间里,我们毕竟还是使用着GUI.过去的供应商.客户的事务代码被废弃,相关的功能被整合到事务代码BP(Business Partner)中,因此相应的增强也要

关于SAP S4 HANA 的13个问题

SAP S/4HANA的路线图是怎样的?价格是多少?下一步还将添加哪些新模块?莫不闻专业SAP问答平台结合SAP HANA及SAP HANA应用商务套件开发全球负责人Uwe Grigoleit帮大家整理了一些关于SAP新一代商务套件的关键问题.1.SAP S/4HANA能为客户带来哪些商业价值?投资回报期有多久?谁会是直接受益者?基于SAP HANA平台开发的SAP S/4HANA是全新一代的SAP商务套件.其特点是简化.高效以及一些非常瞩目的优势,比如:针对传统交易的大量规划和模拟选项.SAP

SAP S4 HANA Cloud PA Course内容目录

S4C10-Implementing SAP S4HANA Cloud – Procurement 2 S4C30-Implementing SAP S4HANA Cloud – Finance 5 S4C60-Implementing SAP S4HANA Cloud – Sales 9 S4F01-Financial Accounting in SAP S4HANA for SAP ERP FI Professionals 13 S4F02-Management Accounting in

C#调用sap接口及返回数据到sap

public class SapClass { /// <summary> /// /// </summary> /// <param name="fphm">发票号码</param> /// <param name="fprq">发票开票日期</param> /// <param name="fkf">付款方</param> /// <para

C# 使用 SAP NCO3.0 调用SAP RFC函数接口

C# 使用 SAP NCO3.0 调用SAP RFC函数接口 最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件. 下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件. 在程序中 using SAP.Middleware.Connector; 具体看下面代码 使用app.config文件配置注册客户端连接 <?xml version="1.0"?> <configuration> <configSec

PO配置调用SAP RFC

直接调用SAP中的RFC 1. 导入RFC 2 在对应命名空间下面创建SI 选择出入站,同步或异步,并设置参数类型,选择对应的RFC. 3创建OM 选择两边的SI或者RFC,一定要点击保存(等待下面出现MT) 填写MM名称,选择命名空间,(同步有两个MM) 创建MM 配置MM字段对应 激活 SI  OM MM 在对应的BC下面创建CC 选择通信类型 填写地址 激活CC 创建ID  (选择系统,选择接口,选择命名空间) 选择入站CC 选择SAP 选择OM 选择出站 ERP CC 激活ID 总建立文

java webservices 以Axis1.4方式 调用sap webservice接口.

1. 首先需要下载Axis1.4 jar包,这个必应搜索大把,下载下来后把jar包加入eclipse工程项目路径中即可. 2. 下载mail.jar和activation.jar 俩个包.下载地址:https://www.eclipse.org/webtools/wst/components/ws/download_instructions_for_jars.html 该网址中含有所有 java webServices 所需要的jar包.如果确实这俩个包,运行时会有:Unable to find

惊心动魄的SAP S4客户额度调整运动

今天一大早,收到商务部发来的消息,说某一个客户的额度超额了,但实际上并未超额.从SAP系统中反馈的额度来看,显示超了2万多.后来经过在BP画面检查信用段发现,这个客户额度占用里面,某一个未清订单已经部分交货并开票了,这点在未清发票里面也有体现,但未清订单里这个订单额度仍旧是总额,如此额度就被重复占用了.这明显违反了SAP里面额度计算的规则,很明显这是SAP新版本的Bug!后来我在测试系统中想还原该问题,却没办法能够重现情景,这个单子的异常到底是什么情况就不知道了. 那么接下来就得重新计算该客户的

如何使用 JMeter 调用你的 Restful Web Service?进行简单的压力测试和自动化测试

表述性状态传输(REST)作为对基于 SOAP 和 Web 服务描述语言(WSDL)的 Web 服务的简单替代,在 Web 开发上得到了广泛的接受.能够充分证明这点的是主流 Web 2.0 服务提供商在接口设计中对 REST 的普遍采用 - 包括雅虎.谷歌以及脸谱 - 出于简单易用.以面向资源的模型发布自己的服务的偏好他们都已经抛弃了 SOAP 和基于 WSDL 的接口.在你必须要对你的 RESTFul web service 进行测试的时候,你可能会有这两个选择: 使用 URL 对你的 Web