VB.NET 与 SAP RFC连接问题点
与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连接问题点的更多相关文章
- C# Sap Rfc 连接代码实例
根据不同的需求,安装不同位数的 Rfc SDK 1.构造 Sap Adress Information,且继承 IDestinationConfiguration public class SapAd ...
- 一个完整的SAP RFC调用接口封装
因为经常需要访问sap操作数据,就封装了一个类方便调用,运行条件需要安装sap客户端,在sap客户端安装之后会带有一个com接口,本接口就通过这个com访问sap,因为com的后期绑定问题故使用了vb ...
- SAP RFC通信模式
在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...
- SAP RFC函数远程调试跟踪管理软件
最近在搞OA系统与sap的接口开发,接口太多老是和.net的开发人员打嘴仗,为了避免不必要的纠结,自己做了一个rfc的调试工具,有些问题调试起来也比较容易了.程序是delphi开发的,为了保证程序可以 ...
- 最新.net和Java调用SAP RFC中间件下载
还记得2012年初我发布的全网络第一个关于.net 连接SAP RFC的NCO3原创博文,用的就是SAP出的最新的.Net Connector 3.0的版本,在那个时候都是普遍用其他蹩脚的方式或Web ...
- SAP RFC函数
RFC 接口 RFC是对一个函数模块的调用,但是调用者的系统与被调函数所在的系统是不一样的. RFC也可以在系统内被调用,但是通常调用和被调用是在不同的系统中的. 在sap系统中,远程调用的能力是有R ...
- .net 调用SAP RFC的几种方法
转自:http://www.cherpservice.com/pub/newsdetail.asp?Newsid=3613 第一种方式采用SAP.net Connector: 最新版本是3.,不开源, ...
- C# 使用 SAP NCO3.0 调用SAP RFC函数接口
最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件. 下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件. 在程序中 using SAP.Mid ...
- .net 调用SAP RFC函数获取数据的两种方式
方式1:使用客户端自带的组件 安装客户端以后,添加引用:SAPFunctionsOCX(.net 的Com列表里一般找不到,需要引用DLL[一般位于以下路径:Program Files\SAP\Fro ...
随机推荐
- .net core 3.0 Signalr - 04 使用Redis做底板来支持横向扩展
在实际的系统中,可能需要多台机器部署;然而,Signalr的连接信息是跟站点走的,举个例子 推送系统部署了A.B两个服务器,张三访问A服务器,李四访问B服务器,当张三通过A服务器向李四推送的时候,A服 ...
- .Net Core快速创建Windows服务
1.新建.Net Core控制台程序,添加新建项Windows服务: NuGet引用 System.ServiceProcess.ServiceController,然后修改Progran.cs: c ...
- [JavaScript] 《JavaScript高级程序设计》笔记
1.|| 和 && 这两个逻辑运算符和c#是类似的,都是惰性的计算 a() || b() 若a()为真返回a()的结果,此时b()不计算: a()为假则返回b() a() &am ...
- Android NDK(二) CMake构建工具进行NDK开发
本文目录 一Androidstudio中需要的插件 二项目配置 ①build.gardle配置 ②CMakeLists.txt ③Android和Cpp的代码 ④so文件生成 ⑤so文件的位置 一.A ...
- 网络驱动之net_device结构体
在Linux系统中,网络设备都被抽象为struct net_device结构体.它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程序非常有益,所以本文将着手简要介绍linux-2.6.3 ...
- Java工程师学习指南(入门篇)
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- python常用算法学习(4)——数据结构
数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...
- Java技能树-图片版
最近在总结技能树,打算先拓宽下视野和技术的广度,后面会详细研究每个常用的技术点,补充技术的深度!下面是我在ProcessOn上总结的,里面有些有注释,点击这里注册ProcessOn,点击这里,可查看或 ...
- Docker的安装及加速器配置
简介 Docker是一个开源项目 ,其主要目标是实现轻量级的操作系统虚拟化解决方案.Docker的基础是Linux容器(LXC)等技术.在LXC的基础上Docker进行了进一步的封装,让用户不需关心容 ...
- 前端Vue知识小白
感觉是已好久没写博文了.今日难得有时间,便写一篇文章.此文章是关于前端知识的,我本身是后端,因工作或其他需要,便学习了前端Vue.此文章是在菜鸟教程上学习的.那么下面进入正文! 首先,Vue.js是一 ...