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 ...
随机推荐
- Scala 学习笔记之implicit
implicit 分为隐式转换和隐式参数,下面例子展现了两种方式的用法: package com.citi.scala class Man(val name: String) { def talkWi ...
- 写了那么多年 Java 代码,终于 debug 到 JVM 了
继上篇文章 原创 | 全网最新最简单的 openjdk13 代码编译 之后,我们有了自己编译后的 jdk 和 hotspot,如下图所示.接下来就来干一番事情. 搭建调试环境 1.下载 CLion 软 ...
- .NET斗鱼直播弹幕客户端(上)
现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎.斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆.看到有不少主播接入弹幕语音播报器.弹幕点歌等模块,这都需要首先连 ...
- SpringBoot系列:Spring Boot使用模板引擎JSP
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- XCTF-Misc
最近无聊在做一下杂项,随便总结一下关于杂项的知识. 一. xcaliflag 这个直接拖进stegsolve里面,大约是在Blue的第3位左右就很清楚了 二.
- 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标
因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...
- Spring-Data-Jpa使用总结
参考资源列表 官方文档:https://docs.spring.io/spring-data/jpa/docs/2.1.5.RELEASE/reference/html/ <Spring Dat ...
- 使用TryGetComponent取代GetComponent以避免Editor中的内存分配
作为Unity开发人员,可能或多或少都会遇到过一个常见的Unity的GC分配问题——在Editor中使用GetComponent方法来获取一个不存在的Component时会分配额外的内存.就像下图 需 ...
- Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现
Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...
- MySQL的索引原理(图解)
数据库的索引原理 0.什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能 ...