与SAP RFC连接,电脑上必须要安装SAP软件,否则会报错ActiveX

输入工单号,无法带出SAP内接口RFC信息。

确认原因为:RFC接口需求的工单参数需要在前面加两位00,例如:1000541078(10个字符)改为 001000541078(12个字符),解决办法:使用string.PadLeft(12, "0")函数,自动补全左边两位00

RFC调用方法案例:

  Public SAPojb As Object
Public SAPConn As Object
Public StrSAPIP As String = ""
Public StrSAPClient As String = ""
Public StrSAPNo As String = ""
Public StrSAPAcc As String = ""
Public StrSAPPwd As String = ""
Public ObjSAPFunc As Object
Public theFunc As Object Dim R_AUFNR As String = ""
Dim R_NUM As String = "" Private Sub MMF02_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadSAPpara() '加载SAP
End Sub Public Sub SAPRFCClose() '关闭SAP
SAPConn = Nothing
End Sub Public Function LoadSAPpara() As Boolean '加载SAP
Try
Dim file As String = "c:\TMIS\saprfc.ini"
Dim Input As String = ""
Using sr As IO.StreamReader = IO.File.OpenText(file)
Input = sr.ReadLine()
Input = UCase(Input)
While sr.Peek > -1 Or Len(Input) > 0
If InStr(Input, "SAPIP") > 0 Then
StrSAPIP = Trim(Mid(Input, InStr(Input, "=") + 1))
End If If InStr(Input, "SAPCLIENT") > 0 Then
StrSAPClient = Trim(Mid(Input, InStr(Input, "=") + 1))
End If If InStr(Input, "SAPNO") > 0 Then
StrSAPNo = Trim(Mid(Input, InStr(Input, "=") + 1))
End If If InStr(Input, "SAPACC") > 0 Then
StrSAPAcc = Trim(Mid(Input, InStr(Input, "=") + 1))
End If If InStr(Input, "SAPPWD") > 0 Then
StrSAPPwd = Trim(Mid(Input, InStr(Input, "=") + 1))
End If Input = sr.ReadLine()
Input = UCase(Input)
End While
End Using
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function Public Function SAPRFCLink() As Boolean
Dim NonErr As Boolean = False
SAPojb = CreateObject("SAP.LogonControl.1")
SAPConn = SAPojb.NewConnection
Try
SAPConn.applicationserver = StrSAPIP
SAPConn.client = StrSAPClient
SAPConn.user = StrSAPAcc
SAPConn.password = StrSAPPwd
SAPConn.language = "EN"
SAPConn.CodePage = "8300" If SAPConn.logon(0, True) <> True Then
NonErr = False
Else
NonErr = True
End If Catch er As Exception
MsgBox(er.ToString)
End Try Return NonErr
End Function Private Sub txtWkNo_KeyDown(sender As Object, e As KeyEventArgs) Handles txtWkNo.KeyDown
Dim str As String = ""
Dim str2 As String = ""
Dim RNUM As Double = 0
R_AUFNR = txtWkNo.Text.Trim
If e.KeyCode = Keys.Enter Then
If SAPRFCLink() Then
MsgBox("SAP连接成功")
ObjSAPFunc = CreateObject("SAP.FUNCTIONS")
ObjSAPFunc.Connection = SAPConn
theFunc = ObjSAPFunc.add("Z_SFC_WOSMT")
theFunc.EXPORTS("P_AUFNR") = R_AUFNR.PadLeft(12, "0") If theFunc.call Then
MsgBox("OK,RFC有回传资料")
str = theFunc.imports("R_AUFNR").value.ToString()
str2 = theFunc.imports("R_NUM").value.ToString()
RNUM = Convert.ToDouble(str2) - 2
End If
Else
MsgBox("SAP连接错误,请检查SAP")
End If
lbSAP.Text = "工单:" & R_AUFNR & ",数量:" & RNUM
SAPRFCClose()
End If
End Sub

  SAPRFC.ini配置如下:

[SAPRFC]
SAPIP=10.10.10.96
SAPClient=888
SAPNo=00
SAPAcc=RFC
SAPPwd=123456

VB.NET 与 SAP RFC连接问题点的更多相关文章

  1. C# Sap Rfc 连接代码实例

    根据不同的需求,安装不同位数的 Rfc SDK 1.构造 Sap Adress Information,且继承 IDestinationConfiguration public class SapAd ...

  2. 一个完整的SAP RFC调用接口封装

    因为经常需要访问sap操作数据,就封装了一个类方便调用,运行条件需要安装sap客户端,在sap客户端安装之后会带有一个com接口,本接口就通过这个com访问sap,因为com的后期绑定问题故使用了vb ...

  3. SAP RFC通信模式

    在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...

  4. SAP RFC函数远程调试跟踪管理软件

    最近在搞OA系统与sap的接口开发,接口太多老是和.net的开发人员打嘴仗,为了避免不必要的纠结,自己做了一个rfc的调试工具,有些问题调试起来也比较容易了.程序是delphi开发的,为了保证程序可以 ...

  5. 最新.net和Java调用SAP RFC中间件下载

    还记得2012年初我发布的全网络第一个关于.net 连接SAP RFC的NCO3原创博文,用的就是SAP出的最新的.Net Connector 3.0的版本,在那个时候都是普遍用其他蹩脚的方式或Web ...

  6. SAP RFC函数

    RFC 接口 RFC是对一个函数模块的调用,但是调用者的系统与被调函数所在的系统是不一样的. RFC也可以在系统内被调用,但是通常调用和被调用是在不同的系统中的. 在sap系统中,远程调用的能力是有R ...

  7. .net 调用SAP RFC的几种方法

    转自:http://www.cherpservice.com/pub/newsdetail.asp?Newsid=3613 第一种方式采用SAP.net Connector: 最新版本是3.,不开源, ...

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

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

  9. .net 调用SAP RFC函数获取数据的两种方式

    方式1:使用客户端自带的组件 安装客户端以后,添加引用:SAPFunctionsOCX(.net 的Com列表里一般找不到,需要引用DLL[一般位于以下路径:Program Files\SAP\Fro ...

随机推荐

  1. JavaScript 类型 检测

    前言 ECMAScript中有5种数据类型,分别为Number,Boolean,Null,Undifined和String,以及一种复杂的数据类型Object(由名值对组成,是这门语言所有对象的基础类 ...

  2. Openshift创建Router和Registry

    Openshift创建Router和Registry: [root@DockerServer openshift]# oadm policy add-scc-to-user privileged sy ...

  3. Mysql高手系列 - 第22篇:深入理解mysql索引原理,连载中

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第22篇. 背景 使用mys ...

  4. 最简单的JS实现json转csv

    工作久了,总会遇到各种各样的数据处理工作,比如同步数据,初始化一些数据,目前比较流行的交互数据格式就是JSON,可是服务器中得到的JSON数据如果提供给业务人员看的话可能会非常不方便,这时候,转成CS ...

  5. 用到的Dos命令总结 持续更新

    1.xcopy命令:复制的扩展命令     常用参数:/s:复制空文件夹 不使用可能会造成文件混乱    /y忽略覆盖提示 使用/y会直接覆盖全部 例子:xcopy lark-UI\dist C:\U ...

  6. SQL Server 2012企业版和标准版的区别

    关于使用Microsoft SQL Server 数据库的公司一般会有疑问,企业版数据库和标准版数据库的区别在哪?如果采购企业版的价格和标准版的价格相差很大,从多方资料查询发现,我认为最主要的区别是硬 ...

  7. Selenium+PhantomJS使用时报错原因

    运行下面代码:'''PhantomJS运用''' from selenium import webdriverimport time # 通过keys模拟键盘from selenium.webdriv ...

  8. AWVS安全渗透扫描

    1.打开软件,点击New Scan 2.在website url中输入被扫描的网址,点击next 3.在scanning profile中选择测试的漏洞类型,默认选择default(默认) 在scan ...

  9. powershell(一)

    Windows powershell是一种命令行外壳程序和脚本环境,它内置在win7以上版本的操作系统中,使命令行用户和脚本编写者可以利用.NET Framework的强大功能.powershell程 ...

  10. 基于STL的队列略解

    什么是STL 以下内容摘自这儿. STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Le ...