与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. 快学Scala 第十四课 (读取行,读取字符, 控制台读取)

    读取行: import scala.io.Source object FileReader { def main(args: Array[String]): Unit = { val source = ...

  2. Java9以后的垃圾回收

    1: finalize() 方法 finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行, 由于fi ...

  3. 为什么一个Http Header中的空格会被骇客利用 - HTTP request smuggling

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Linux防火墙常用操作

    /tcp —— 配置白名单 sudo systemctl start firewalld — 启动防火墙 sudo firewall-cmd --state - 看状态 sudo firewall-c ...

  5. 最简单的ArcGIS Engine应用程序(终)

    在上文的基础上,下面将使用简单的代码实现要素类属性的查看.(最简单的ArcGIS Engine应用程序(下)) 新增一个窗体,并从工具箱拖动DataGridView控件到该窗体中.设置该对象的Dock ...

  6. Vue-CLI项目路由案例汇总

    0901自我总结 Vue-CLI项目路由案例汇总 router.js import Vue from 'vue' import Router from 'vue-router' import Cour ...

  7. 无 PowerShell.exe 执行 Empire 的几种姿势

    在实战中,Empire成为域渗透.后渗透阶段一大利器,而Empire是一个Powershell RAT,所以PowerShell必须要能运行Empire中几乎所有的启动方法都依赖于使用PowerShe ...

  8. [NOIp2009] luogu P1072 Hankson 的趣味题

    把 c 改成 d 下了两个点. 题目描述 已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0​,a1​,b0​,b1​,设某未知正整数 xxx 满足: xxx 和 a0a_0a0​ ...

  9. ‎Cocos2d-x 学习笔记(26) 从源码学习 DrawCall 的降低方法

    [Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/cocos2dx-drawcall-glcalls 1. 屏幕左下角 我们通常在Cocos ...

  10. 小白学 Python(5):基础运算符(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...