公司使用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

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

  1. [转帖]SAP S4 HANA 1610与ECC的比较

    SAP S4 HANA 1610与ECC的比较 https://zhuanlan.zhihu.com/p/27266476 SAP S4 HANA是下一代的ERP套件,是SAP 战略的核心,相关资料也 ...

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

    喜欢博主的读者也许会意识到,这是本博客中第一篇有关屏幕增强的文章.之前没有总结过相关的东西,除了因为相关经验有限之外,我个人也是不喜欢所谓dynpro编程的,它有许多“潜规则”一样的东西要记住,想要运 ...

  3. 关于SAP S4 HANA 的13个问题

    SAP S/4HANA的路线图是怎样的?价格是多少?下一步还将添加哪些新模块?莫不闻专业SAP问答平台结合SAP HANA及SAP HANA应用商务套件开发全球负责人Uwe Grigoleit帮大家整 ...

  4. K2 BPM项目 基于COM组件调用SAP RFC 问题

    K2 BPM项目 基于COM组件调用SAP RFC 问题 问题前景: 环境:Win 2008 R2 64bit 最近项目中有支流程需求中需要在会计入账环节回写SAP的会计凭证. SAP组给我们提供.N ...

  5. java 调用SAP RFC函数错误信息

    RFC接口调用SAP如果有异常会通过com.sap.mw.jco.JCO$Exception: 抛出异常 在开发中遇到的异常有如下 用户名密码可能是错误或者用户无权限,确认用户,必要时联系SAP负责人 ...

  6. XP安装IIS来加载aspx页面(Web调用SAP数据)

    1,安装IIS 在XP中安装IIS方法很简单,安装时需要提供安装光盘来加载I386文件,可以使用虚拟光驱或光盘.在此做个简单说明(控制面板-添加/删除 Windows组件-勾选Internet信息服务 ...

  7. SAP S4 Finance6个支持企业实时财务管理的主要创新领域

    本文将讲述下 SAP Simple Finance里面6个支持企业实时财务管理的主要创新领域. Simple Finance 在以下几个方面具有自己独特的优势: ● 更加简洁的用户体验,可以让用户在任 ...

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

    最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件. 下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件. 在程序中 using SAP.Mid ...

  9. C#如何通过NCO3.0来连接SAP并调用SAP中的RFC

    ,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnc ...

随机推荐

  1. HDU-5974

    A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  2. 自动清除firefox缓存

    1.在firefox的地址栏上输入about:config回车 2.找到browser.cache.check_doc_frequency选项,双击将3改成1保存即可.  选项每个值都是什么含义的.请 ...

  3. linux下安装Drcom

    环境:台式机物理机,centos7 因为要下载依赖包,物理机一开始没有网络,所以我先使用的是实验室的公用ip,然后完成以下操作(网上有大神说,可以现在其他机器上下载依赖包,copy过来也可以,但我没有 ...

  4. Ajax.BeginForm 的使用

    @using (Ajax.BeginForm("AddHomeRule", "MyHome", new AjaxOptions { HttpMethod = & ...

  5. 将Date转换成 yyyy-MM-dd 格式的字符串

    // 方法1 原型Date.prototype.format = function (format) {    var o = {        "M+": this.getMon ...

  6. c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

    最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...

  7. 转载-【深度学习】深入理解Batch Normalization批标准化

      全文转载于郭耀华-[深度学习]深入理解Batch Normalization批标准化:   文章链接Batch Normalization: Accelerating Deep Network T ...

  8. h5模型文件转换成pb模型文件

      本文主要记录Keras训练得到的.h5模型文件转换成TensorFlow的.pb文件 #*-coding:utf-8-* """ 将keras的.h5的模型文件,转换 ...

  9. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  10. python的入门1(补发)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...