http://www.cnblogs.com/jirigala/archive/2008/11/26/1341345.html 这几天做杭州炼油厂的SAP地磅接口、力控开发系统下的Rosemount流量计接口。SAP版本是4.6C,应该是比较早期的版本,中石化统一的版本吧。 连接SAP有一个叫SAP .NET Connector 2.0,NND,必须需要VS2003的开发环境才可以安装,现在都2008年年底了,我哪里还去找VS2003, 而且电脑里装得软件已经很多,基本上没有地方好装VS2003了,还不知道已经装了VS2008还能否安装VS2003了,不是一般的闹心,是非常的闹心。 已安装了Microsoft Visual Studio 2008、Oralce、SQL2000、SQL2005、MySql, 为了调试还装了SAP的客户端SAP Front End。 真的不想再折腾了,再去下载VS2003, 安装这个,简直是杀人啊。 SAP .NET Connector 2.0 是无法用了,想找到这个包的相关DLL,也没能找到,没办法,就直接引用了SAP的客户端的Com组件,想通过直接调用 客户端的组件来登录到SAP,然后调用RFC,这些接近折腾了1天,终于连接是可以了,但是死活调用不了RFC函数调用的功能,一对Connection赋值 就会抛出异常 Bad variant type,http://topic.csdn.net/u/20080219/14/83e2d29e-899b-4186-9910-e98fd6daac35.html 搞死人,折腾了一晚上,用C#, VB.net的都无法搞定,都同样会抛出异常,看了别人的解决方法,还是VS2003B编译什么的,我哪里去找VS2003了。 第二天,其实是有些绝望了,到处打电话咨询,找救兵,也没太多实质性的进展,我这个人有一个最大的优点,就是有些自信,而且不愿意放弃, 更不愿意认输,继续找找看吧,找来找去,感觉微软有一个新的连接SAP的方法,SQL2005 NET Data Provider for mySAP Business Suite,DataProviderSAP.exe 下载这个看看,感觉是比较新的,应该在VS2008里可以用,找了下载找得稍微有点儿晕,最终还是找到了,哈哈,安装也成 功了,接下来再找了例子程序,引用了相关的DLL,结果奇迹发生了,能调用SAP里的RFC函数了,不知道都调要了啥功能,总算能连接SAP,还能执 行RFC函数了。这时早已过了下班时间了,SAP的工程师都回去了,我们想调试自己写的RFC函数,死活就是不回来正确的结果。 第三天,经过跟SAP工程师的协调,发现SAP里,数据库里标准格式是 char10,我们传输过去的参数有8位的长度,应该是长度不够导致结果不 正常,SAP也比较怪一些,需要在前面补2个零。哦,结果正常,好开心啊,连接SAP成果,参数传递正确,调用RFC成功,读取结果正确。 以上文章,希望给有同样折腾中的人,少走点儿弯路,不浪费时间,提高生活质量吧,多陪陪家人。 总结: 可能很多技术问题都不难,折腾过了,走过一些弯路了,心里就有数了,这就是所谓的经验吧。多折腾了,经验就更多了,人也值钱了。 RFC 就像数据库里的 存储过程一样的调用就可以了,之前都不知道这个是什么东东云里雾里,原来还可以这么简单就可以调用了。 将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。 posted on 2008-11-26 12:35 吉日嘎拉 阅读(1881) 评论(23) 编辑 收藏 网摘 评论 #1楼 回复 引用 查看 呵呵,够折腾的 2008-11-26 12:51 | chy710 #2楼 222.66.39.* 回复 引用 用VB.NET直接调用 相关的COM就行了 网上有VB6的例子的,不过用c#直接调用就报错,除非使用反射 这个问题用VB解决比较方便。 2008-11-26 13:09 | byrybye [未注册用户] #3楼 回复 引用 查看 支持楼主一下 2008-11-26 13:11 | JesseZhao #4楼 [楼主] 回复 引用 查看 VB.NET 也测试过,一样的错误,死活不行,我怀疑是跟SAP的版本及 相关DLL的版本也有关系,可能有些版本上会很顺利就可以了。 2008-11-26 13:13 | 吉日嘎拉 #5楼 回复 引用 查看 支持楼主 2008-11-26 13:51 | aoper #6楼 回复 引用 查看 力控那东西贼拉恶心,功能是强大,太难用了!! 2008-11-26 15:47 | 天启 #7楼 回复 引用 查看 装了sap Client后,在vb.net中C:\Program Files\SAP\FrontEnd\Controls\wdtfuncs.ocx这个文件的com引用,即可直接调用sap了,我用此在上海石化的sap上读过数据。 ' 2008-11-26 16:18 | 81 #8楼 回复 引用 查看 写的真好,支持,文章关注中 2008-11-26 16:53 | Mahon #9楼 回复 引用 查看 直接引用ocx用vb.net可以的,记得主线程必须是STA,这是ocx机制的原因 2008-11-26 19:12 | RicCC #10楼 回复 引用 查看 记得当年也是碰到"Bad variant type"错误,在sap论坛上有人解决了 2008-11-26 19:15 | RicCC #11楼 回复 引用 查看 恩在这里呢,怀念一下05年的帖子,八成你也是这个问题造成的 https://www.sdn.sap.com/irj/scn/thread?messageID=367189 2008-11-26 19:27 | RicCC #12楼 [楼主] 回复 引用 查看 真的是牛人多多啊,天外有天,有时候不服不行。 2008-11-26 19:56 | 吉日嘎拉 #13楼 61.149.31.* 回复 引用 你也在用.net开发Rosemount流量计接口呀,我也有个 E+H的流量计,想用C#从串口取数据,然后转译到图形界面上再存到数据库里面。 你有这方面开发的例子么。 2008-11-26 21:24 | DXM [未注册用户] #14楼 119.39.26.* 回复 引用 我记得当时调用了后会弹出来登陆窗口 就因为这个问题当时就没有再用了 有什么办法不让登陆窗口弹出来吗 ^^ 2008-11-27 00:12 | jumbo1025 [未注册用户] #15楼 回复 引用 查看 用VB.Net是可以的,要安装SAP客户端组件。。。 用C#不会,我上个月也为了这个问题折腾了好几天,最后用VB.Net写的,打包成dll,在C#中引用。 Public Function QMStoSAP(ByVal dt As DataTable) As Boolean QMStoSAP = False Dim sapConn As Object ''Declare variant sapConn = CreateObject("SAP.Functions") ''Create ActiveX object ''Specify user sapConn.Connection.user = strUser ''Then password sapConn.Connection.Password = strPassword ''Client sapConn.Connection.Client = strClient ''Target server address sapConn.Connection.ApplicationServer = strApplicationServer ''Language code sapConn.Connection.Language = strLanguage ''SystemNumber sapConn.Connection.SystemNumber = iSystemNumber If sapConn.Connection.Logon(0, True) <> True Then QMStoSAP = False MsgBox("Cannot Log on to SAP") ''Issue message if cannot logon Exit Function End If 'Define function Dim objRfcFunc As Object objRfcFunc = sapConn.Add("ZRFC_WO_AUTO_GR") Dim objVBPA As Object objVBPA = objRfcFunc.Tables("ITABIN") strErrorMsg = "" strPostNO = "" 'set value for shipemnt For Each dr As DataRow In dt.Rows objVBPA.Rows.Add() objVBPA(objVBPA.RowCount, "ZPALLETID") = Trim(dr("ZPALLETID")) objVBPA(objVBPA.RowCount, "PLANT") = Trim(dr("PLANT")) objVBPA(objVBPA.RowCount, "COSTCENTER") = Trim(dr("COSTCENTER")) objVBPA(objVBPA.RowCount, "WO") = Trim(dr("WO")) objVBPA(objVBPA.RowCount, "QTY") = Trim(dr("QTY")) objVBPA(objVBPA.RowCount, "MATERIAL") = Trim(dr("MATERIAL")) objVBPA(objVBPA.RowCount, "REGION") = Trim(dr("REGION")) objVBPA(objVBPA.RowCount, "LOCA") = Trim(dr("LOCA")) objVBPA(objVBPA.RowCount, "REF1") = Trim(dr("REF1")) objVBPA(objVBPA.RowCount, "REF2") = Trim(dr("REF2")) Next If objRfcFunc.Call = False Then sapConn.Connection.Logoff() QMStoSAP = False MsgBox("Error occured - " & objRfcFunc.Exception) Exit Function End If ''VB6.0 中的写法:strPostNO = objRfcFunc.Imports("POSTNO"),在.Net中是不行的,因.Net是强类型语言 strPostNO = objRfcFunc.Imports("POSTNO").Value strErrorMsg = objRfcFunc.Imports("ERRORMSG").Value sapConn.Connection.Logoff() If Trim(strPostNO) <> "" Then QMStoSAP = True Else QMStoSAP = False End If End Function 2008-11-27 08:37 | 毛必盛 #16楼 回复 引用 查看 可否再花点时间写篇文章介绍一下DataProviderSAP的用法,造福大家。。。 2008-11-27 08:43 | 毛必盛 #17楼 59.40.167.* 回复 引用 收藏了,谢谢,之前做过一个,不过是用的vs2003解决的 2008-11-27 10:45 | imbin [未注册用户] #18楼 10.137.130.* 回复 引用 想不通,为什么VS2005和VS2008不支持SAP Connector了?? 2008-11-28 10:26 | nh022 [未注册用户] #19楼 [楼主] 回复 引用 查看 SAP Connector 是针对 vs2003 的插件,在VS2005,VS2008里无法安装了。 不是 VS2005,VS2008 不支持这些,我想是。 2008-11-28 11:22 | 吉日嘎拉 #20楼 123.112.118.* 回复 引用 我使用VS2005+ECC6.0,在VS2005中调用SAP Com组件,可以登录也可以调用RFC.代码如下 SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass(); func.Connection = conn; SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add("ENQUEUE_READ"); ifunc.Call(); 没有抛出楼主说的 Bad variant type异常.不知道是不是与ECC的版本有关系呢!此外,楼主能否提供一下在调用了RFC之后,如何对RFC中的参数进行赋值以及获得结果呢,谢谢! 2008-12-28 23:41 | flysky927 [未注册用户] #21楼 219.142.122.* 回复 引用 昨完的问题已经解决了,谢谢!大概如下: SAPFunctionsOCX.IParameter gclient = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("GCLIENT"); gclient.Value = "301"; SAPTableFactoryCtrl.Tables ENQs = (SAPTableFactoryCtrl.Tables)ifunc.Tables; SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item("ENQ"); 2008-12-29 14:35 | flysky927 [未注册用户] #22楼 219.142.122.* 回复 引用 昨天说错了,使用VS2005+ECC6.0,在form中不会报错,但在web下会报Bad variant type异常.使用了楼主说的方法但没有成功,最后使用了--引用-------------------------------------------------- RicCC: 恩在这里呢,怀念一下05年的帖子,八成你也是这个问题造成的 https://www.sdn.sap.com/irj/scn/thread?messageID=367189 -------------------------------------------------------- 帖中的方法!成功! 2008-12-30 17:47 | flysky927 [未注册用户] #23楼 59.41.47.* 回复 引用 您好: 我刚开始接触 .net通过RFC连接sap,现在把vs2008 和DataProviderSAP.exe 安装好,但下一步不知如何着手?vs2008中如何有SAPFunctionsocx控件呀 。小弟愚笨,谢谢了! 2009-01-13 16:59 | cara [未注册用户]

转载于:https://www.cnblogs.com/yxbsmx/articles/1383872.html

VS2008 连接 SAP 4.6C RFC 经验分享(转大虾经验)相关推荐

  1. VS2008 连接 SAP 4.6C RFC 经验分享(折腾了两天)

    这几天做杭州炼油厂的SAP地磅接口.力控开发系统下的Rosemount流量计接口.SAP版本是4.6C,应该是比较早期的版本,中石化统一的版本吧. 连接SAP有一个叫SAP .NET Connecto ...

  2. 本人香樟精英经验分享会部分经验

    本人香樟精英经验分享会部分经验 关于保研.考研与工作可以如何选择 相对来说,保研较好,考研需要备考花费特别多的时间与努力,而且报考院校只能选一个,但保研你可以申请国内任何一个高校,选择多,尝试的机会也 ...

  3. 前端学习总结,经验分享,项目经验分享过程

    前言 来,和魔王哪吒总结一下,分享一下自己对前端学习总结,经验分享,以及写过的项目经验分享过程. 如果觉得还不错的话,浏览的过程中,需要您: 点赞,分享,评论 有钱的捧个钱场,没钱的捧个人场 技术实践 ...

  4. 中科院信工所经验_保研经验分享:实力+经验+运气=保研成功

    个人情况 学校:某211电子科技大学通信工程学院, 排名:前五学期排名2/139,综合排名1/139(非官方排名,但因为面试的时候还没有出正式排名,所以可以跟老师说预计排名). 竞赛:全国大学生数学竞 ...

  5. 国防科大计算机夏令营经验分享,保研经验|理工科五所985高校夏令营经验

    原标题:保研经验|理工科五所985高校夏令营经验 个人介绍 姓名:萱同学 本科学校:南京理工大学 本科专业:兵器类-装甲车辆工程 年级排名:1/197(截止至第五学期) 专业排名:1/30(前5学期) ...

  6. 【爬虫】Python爬虫经验分享--爬取码市招聘项目

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途, ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/details/ ...

  7. 【21考研】合肥工业大学计算机经验分享集锦

    o( ̄▽ ̄)ブ 21考研结束了,22考研开始了,学姐收到了很多21上岸的学弟学妹们的经验分享,把这份成功传递给22的你们啦~ 经验分析集锦 经验分享1--初试390+ 经验分享2--跨考 经验分享3- ...

  8. 保研经验帖(二)夏令营经验分享

    保研经验帖(一)自身背景及保研前期准备 保研经验帖(二)夏令营经验分享 保研经验帖(三)预推免面试经验分享 保研经验帖(四)保研全过程整理复习及面试资料经验分享 因为疫情,大多学校都是采用的线上的形式 ...

  9. 基于 SAP BTP 平台的 AI 项目经验分享

    笔者在 SAP 成都研究院工作十五余年,也曾参加过一些基于 SAP Business Technology Platform(中文名称为 SAP 业务技术平台,以下简称 SAP BTP) 的 AI 服 ...

最新文章

  1. 「模型解读」GoogLeNet中的inception结构,你看懂了吗
  2. php防止恶意频繁刷新页面或form提交
  3. Vue2 学习笔记3
  4. 分布式理论:CAP是三选二吗?
  5. android的json解析方式,Android解析JSON方式
  6. adobe 书签怎么设置_让我们设置一些规则…没有Adobe Analytics处理规则
  7. JAVA入门级教学之(赋值运算符)
  8. matlab求RMSECV,CARS 用于matlab模式识别(分类和回归)的特征变量提取方法 联合开发网 - pudn.com...
  9. 4021-基于链地址法的散列表的删除(C++,附思路)
  10. 六元均匀直线阵的各元间距为_地采暖安装有哪些要求?盘管间距误差多少?盘管固定有何要求?...
  11. WSGI Middleware
  12. linux缺页异常处理--内核空间
  13. 阿里云盘内测申请_阿里云网盘开放内测申请,网盘行业又成香饽饽了?
  14. Unity插件-HighlightingSystem(边缘光)
  15. Java设计模式 -8- 适配器模式(Adapter模式)
  16. 使用jsMind实现可拖拽思维导图
  17. 字符串String实战之商品对象缓存管理之新增与获取详情
  18. 百行代码发射红心,程序员何愁命不中女朋友!
  19. uniapp开发中ios底部出现安全距离问题怎么解决?
  20. TO_DATE使用詳解

热门文章

  1. 定了,《气瓶安全技术规程》,要求气瓶使用“可追溯的永久性电子识读标识”
  2. MAGCN:基于lncRNA与miRNA相互作用和图卷积网络预测miRNA与疾病的关联(Briefings in Bioinformatics)
  3. Python计算机视觉编程 第一章——基本的图像操作和处理
  4. 全球及中国粉末冶金产业应用前景与发展规模分析报告2022版
  5. 欢迎使用 Cmd Markdown 编辑阅读器
  6. 企业根据利润,发放奖金。
  7. 移动界面尺寸!安卓1080P界面设计规范解读
  8. Java毕设项目-航空订票管理系统的设计与实现
  9. springboot风电检测物联网平台JAVA源码 iot物联网源码
  10. 《都挺好》Q版苏大强变身程序员表情包,哪一个深得你心?