C#与SAP接口对接
1、传入传出都是表
try{RfcDestination destination = RfcDestinationManager.GetDestination("DEV");RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = destination.Repository.GetFunctionMetadata("ZMM_PR_CHANGE"); //RFC函数名称myfun = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction(); //定义输入函数IRfcTable tSAP = myfun.GetTable("IT_PR");for (int i = 0; i < dt.Rows.Count; i++){IRfcStructure struSAP = tSAP.Metadata.LineType.CreateStructure();#regionstruSAP.SetValue("PREQ_NO", dt.Rows[i]["采购申请编号"].ToString());struSAP.SetValue("PREQ_ITEM", dt.Rows[i]["采购申请的项目编号"].ToString());struSAP.SetValue("DELETE_IND", dt.Rows[i]["采购凭证删除标识"].ToString());#endregiontSAP.Append(struSAP);}myfun.SetValue("IT_PR", tSAP); //table 参数myfun.Invoke(destination);IRfcTable dtSAPData = myfun.GetTable("IT_PR");string errRow = "", errMessage = "";for (int i = 0; i < dtSAPData.RowCount; i++){IRfcStructure stru = dtSAPData[i];#region sql = "update MM_purPurchaseApplyDetail set MTYPE = '" + stru.GetValue("MTYPE").ToString().Trim() + "',MESSAGE = '" + stru.GetValue("MESSAGE").ToString().Trim() + "' where BillNo = '" + txt_BillNo.Text.Trim() + "' and RowCode = '" + stru.GetValue("PREQ_ITEM").ToString().Trim() + "' ";if (!DB.AF.sqlExec(sql, sqlconnSAP, out errMsg)){XtraMessageBox.Show("更新PR明细失败!");}#endregionif (stru.GetValue("MTYPE").ToString().Trim() != "S"){errRow += stru.GetValue("PREQ_ITEM").ToString().Trim() + " ";errMessage += "第[" + stru.GetValue("PREQ_ITEM").ToString().Trim() + "]行:" + stru.GetValue("MESSAGE").ToString() + "\n";}}if (errRow.Length > 0){XtraMessageBox.Show("第[" + errRow + "]行Sap单据修改失败!失败原因为:" + "\n" + errMessage);}elseXtraMessageBox.Show("SAP单据修改成功!");}catch (Exception ex){XtraMessageBox.Show(ex.Message);}
2、传入表、返回结构
RfcDestination destination = RfcDestinationManager.GetDestination("DEV");RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = destination.Repository.GetFunctionMetadata("ZMM_BAPI_GOODSMVT_CREATE_N"); //RFC函数名称myfun = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction(); //定义输入函数IRfcTable tSAP = myfun.GetTable("IT_RES");for (int i = 0; i < GV.RowCount; i++){IRfcStructure struSAP = tSAP.Metadata.LineType.CreateStructure();#regionstruSAP.SetValue("RSNUM", ""); //预留/相关需求的编号struSAP.SetValue("RSPOS", ""); //预留 / 相关需求的项目编号struSAP.SetValue("AUFNR", GV.GetRowCellValue(i, "订单号").ToString()); //订单号#endregiontSAP.Append(struSAP);}myfun.SetValue("IT_RES", tSAP); //table 参数try{myfun.Invoke(destination);}catch (Exception ex){XtraMessageBox.Show("调用接口失败!"+ex.Message);}IRfcStructure getstu = myfun.GetStructure("O_RETURN");DOCNO = getstu.GetValue("DOCNO").ToString();MTYPE = getstu.GetValue("MSGTP").ToString();MESSAGE = getstu.GetValue("MSTXT").ToString();
3、传入表、返回字段
try{RfcDestination destination = RfcDestinationManager.GetDestination("DEV");RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = destination.Repository.GetFunctionMetadata("ZMM_PR_CREATE"); //RFC函数名称myfun = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction(); //定义输入函数//IRfcFunction func = rfcRep.CreateFunction("ZMM_IS_PR_CREATE");IRfcTable tSAP = myfun.GetTable("IT_PR");for (int i = 0; i < dt.Rows.Count; i++){IRfcStructure struSAP = tSAP.Metadata.LineType.CreateStructure();#regionstruSAP.SetValue("PREQ_ITEM", dt.Rows[i]["采购申请的项目编号"].ToString());struSAP.SetValue("PR_TYPE", dt.Rows[i]["订单类型"].ToString());struSAP.SetValue("PR_TEXT", dt.Rows[i]["备注"].ToString());struSAP.SetValue("PLANT", dt.Rows[i]["工厂"].ToString());struSAP.SetValue("PUR_GROUP", dt.Rows[i]["采购组"].ToString());#endregiontSAP.Append(struSAP);}myfun.SetValue("IT_PR", tSAP); //table 参数myfun.Invoke(destination);EV_NUMBER = myfun.GetString("EV_NUMBER");MTYPE = myfun.GetString("MTYPE");MESSAGE = myfun.GetString("MESSAGE");
4、传入字段、返回表
sesstab.Clear();try{RfcDestination destination = RfcDestinationManager.GetDestination("DEV");RfcFunctionMetadata BAPI_COMPANYCODE_GETDETAIL_MD = destination.Repository.GetFunctionMetadata("ZMM_GET_STOCK_QUANTITY_MUL"); //RFC函数名称myfun = BAPI_COMPANYCODE_GETDETAIL_MD.CreateFunction(); //myfun.SetValue("IV_MATERIAL", "" + txt_MaterialID.Text.Trim() + ""); //物料编号myfun.SetValue("IV_PLANT", "" + ddl_Company.EditValue.ToString().Trim() + ""); //工厂myfun.SetValue("IV_STGE_LOC", "" + ddl_Warehouse.EditValue.ToString().Trim() + ""); //库存地点myfun.SetValue("IV_BATCH", "" + txt_BatchNo.Text.Trim() + ""); //批号myfun.Invoke(destination);MTYPE = myfun.GetString("MTYPE");MESSAGE = myfun.GetString("MESSAGE");IRfcTable tSAP = myfun.GetTable("ET_STOCK");XtraMessageBox.Show(MTYPE+":"+ MESSAGE);for (int i = 0; i < tSAP.RowCount; i++){IRfcStructure stru = tSAP[i];DataRow dr = sesstab.NewRow();dr["物料编号"] = stru.GetValue("MATERIAL").ToString();dr["工厂"] = stru.GetValue("PLANT").ToString();dr["库存地点"] = stru.GetValue("STGE_LOC").ToString();dr["批号"] = stru.GetValue("BATCH").ToString();dr["库存"] = stru.GetValue("LABST").ToString();dr["物料描述"] = stru.GetValue("MAKTX").ToString();dr["规格型号"] = stru.GetValue("GROES").ToString();dr["基本计量单位"] = stru.GetValue("MEINS").ToString();sesstab.Rows.Add(dr);}GC.DataSource = sesstab;}catch (Exception ex){XtraMessageBox.Show(ex.Message);}
C#与SAP接口对接相关推荐
- 2021.12.9 java代码对接sap接口(soap协议、webservice)
2021.12.9 java对接sap接口(soap协议.webservice) 问题:对接sap接口,代码调试 执行: 1.soapui 软件测试是否能正确访问 未能正确访问,因为未在本地配置域名映 ...
- springboot 对接sap接口,不生成连接配置文件文件的方法。
springboot 对接sap接口,不生成连接配置文件文件的方法. 网上大部分都是要生成两个连接文件,导致部署的时候,要考虑jar和文件怎么部署,很不方便.本文只记录,不生成连接文件这一种方式. 1 ...
- C#如何连接SAP调用SAP接口函数
在项目中我们经常会遇到SAP与其他应用系统对接的情况,如OA对接SAP的FI.HR模块,生产系统对接SAP的MM模块等等.这里和大家介绍下C#如果调用SAP接口,从而调用SAP接口函数. 下面先贴出代 ...
- SAP接口调用公共方法
在和SAP进行系统对接时,提供的是RFC接口,每个接口函数写一个调用方法的话会比较麻烦,现对其进行一些封装,通过字段映射的方式去实现接口的调用. 1.首先,新建一个类,以函数名作为类名,类成员为传参参 ...
- 电商适用电子面单接口对接案例
电子面单接口现在有快递公司.菜鸟和快递鸟提供 快递公司是一家家合作,要接口文档,逐一对接 菜鸟和快递鸟是电子面单接口集成方,能打印多家快递电子面单,菜鸟目前支持15家,快递鸟支持20家,基本上都是常用 ...
- 金审系统与SAP接口
https://blog.csdn.net/forever_crazy/article/details/51187636 会计信息是国家审计监督的重要内容,保证会计信息准确透明,遏制会计信息失真,是全 ...
- 用VB开发SAP接口程序
SAP R/3系统是业界最先进.最稳定的ERP系统,国际和国内大型企业采用该系统的比例遥遥领先于其它ERP系统的总和.SAP R/3内建了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBO ...
- 系统接口对接的进度工作应该谁来干_第三方分账系统开发的那些坑,给你节省几十万...
小猫接触过上百个平台经营者,他们在咨询第三方分账系统时,都会或多或少的抱怨原有合作产品的坑.比如"接口对接速度过慢,影响上线进度"."系统体验不好,导致平台用户流失严重& ...
- JEECG支付服务窗专题 - 平台与服务窗接口对接
一.准备支付宝服务窗各种密钥,填写管理平台服务窗帐号信息 1. 私钥.应用公钥.支付宝公钥.APPID 私钥.应用公钥.支付宝公钥是由支付宝官方开放平台提供的,具体密钥配置请查看官方文档,本文暂不说明 ...
最新文章
- 绘制你的世界:探索构图和真实的深度感
- CCF真题 201312-2 ISBN号码
- 关于kafka生产者相关监控指标的理解(未解决)
- ubuntu20.04安装讯飞输入法(失败经历)
- eShopOnContainers 知多少[7]:Basket microservice
- 安装使用sublime 对比工具sublimerge
- 阿里开源首个移动AI项目,淘宝同款推理引擎
- 微信小程序input安卓手机获取焦点时候上移
- 51Nod-1049 最大子段和【DP】
- chromium的部署工具depot_tools和gclient
- 汇编语言输出斐波那契数列
- iOS AVPlayer的那些坑
- NS3 Tracing System详解
- Mac与Linux SSH无密登陆(互信)
- 转载:H.264 H.265 硬件解码芯片?
- Python 错误 RuntimeError: CUDA error (10): invalid device ordinal
- 小草音乐播放器[emlog插件]
- 5-3 人际资源整合-辨别同事、结交优质同事、拒绝烂同事
- 进入旅游营销时代,携程有什么“大招”?
- OpenDaylight系类教程(十二)-- Release Notes
热门文章
- 截取数组对应的长度值(形成一个新的数组)
- C#编译出现Program does not contain a static ‘Main‘ method suitable for an entry point 如何解决
- 各省(包括西藏)财政税收、收入、支出整理面板指标合集(1995-2021)
- 表格html适应手机端,纯CSS实现响应式表格适应移动端
- CRM 活动类型单据结束时间
- 如何用c语言return数组函数
- 关于日志打印的几点建议
- 【Android】5.0录音权限处理时遇到的问题
- CCS6软件及仿真器驱动安装
- APIJSON使用和搭建