当前位置:网站首页>VBA调用SAP RFC实现数据读取&写入
VBA调用SAP RFC实现数据读取&写入
2022-04-23 06:29:00 【Willie Y】
1、RFC结构
RFC属性配置:

RFC输入参数:

ZSCE_MAT×表结构:

RFC输出参数:

2、VBA代码
Public Const StartRow% = 2 '数据起始行
Public Const EndRow% = 3 '数据结束行
Public Const DataSheetName$ = "Data"
Public SAP As Object
'******************************************************************************
'* Function Desc:VBA调用SAP RFC
'* Author:
'* Param:
'* Returns:
'******************************************************************************
Sub InputData()
Dim WrtDataResult As String
Dim IMATNR$, ZYIELD$
If ContectSAP = False Then
MsgBox "连接SAP失败"
Exit Sub
End If
If MsgBox("连接SAP成功!是否将表" & DataSheetName & "中数据导入SAP?", vbYesNo, "警告") = vbNo Then
Exit Sub
End If
Call OperationPrompts("写入数据到SAP,请稍候……")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With ThisWorkbook.Sheets(DataSheetName)
For i = StartRow To EndRow
IMATNR = .Cells(i, 1).Value
ZYIELD = .Cells(i, 2).Value
WrtDataResult = CallRFC(IMATNR, ZYIELD)
.Cells(i, 3).Value = WrtDataResult
Next i
'注销登录
SAP.Connection.LOGOFF
Call OperationPrompts("已断开SAP……")
UF_Prompt.Label1.Caption = "【程序运行结束】"
ThisWorkbook.Save
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
调用RFC核心代码:
'******************************************************************************
'* Function Desc:VBA调用SAP RFC
'* Author:
'* Param:
'* MATNR_No:
'* ZYIELD_value:
'* Returns:
'******************************************************************************
Public Function CallRFC(MATNR_No$, ZYIELD_Value$) As String
Dim LogFlag As Boolean
Dim Result As String
Dim InputTable As Object
Dim Result1 As Object
Dim Result2 As Object
Set RFC = SAP.Add("RFC_Z_SCE_CHANGEMATERIAL")
Set InputTable = RFC.Tables("ZSCE_MAT_GDPW")
'rfc参数表赋值
With InputTable
.Rows.Add
.Value(.RowCount, "MATNR") = MATNR_No
'.Value(.ROWCOUNT, "VOLUM") = VOLUM_Value
.Value(.RowCount, "ZYIELD") = ZYIELD_Value
End With
'call RFC
LogFlag = RFC.Call
If LogFlag = True Then
'设置返回参数
Set Result1 = RFC.Imports("ZMSGNO")
Set Result2 = RFC.Imports("ZMESSG")
CallRFC = MATNR_No & "," & Result1.Value & "," & Result2.Value
Else
CallRFC = "RFC调用失败!"
End If
InputTable.FreeTable
Set InputTable = Nothing
Set Result1 = Nothing
Set Result2 = Nothing
Set RFC = Nothing
End Function
代码中RFC表结构赋值需要一行一行赋值。Exports参数传参和Imports参数类似。
RFC的调用中,Exports表示输入RFC的参数,Imports表示RFC返回的调用结果。
总结:
日常工作中,VBA读取SAP表,或者调用RFC还是比较方便的,不需要在SAP使用ABAP开发并传输搭配生产系统,基本上改改上述代码就可用。
更多信息请参考:ExcelVBA与SAPRFC接口调用实例 - 豆丁网
版权声明
本文为[Willie Y]所创,转载请带上原文链接,感谢
https://blog.csdn.net/willieyuan/article/details/124326876
边栏推荐
- 对js中argumens的简单理解
- 命令行参数传递库argparse的使用
- Unity ugui determines the solution of clicking on the UI and 3D objects
- 踩坑日记:Unable to process Jar entry [module-info.class]
- Thorough inquiry -- understanding and analysis of cocos2d source code
- Unity 获取一个文件依赖的资源
- Apache Hudi 如何加速传统的批处理模式?
- Nodejs (I) event driven programming
- 防抖和节流
- SQL sorts string numbers
猜你喜欢
随机推荐
Dropping Pixels for Adversarial Robustness
js之什么是事件?事件三要素以及操作元素
03Scanner类的使用(控制台输入)
C reads the registry
Idea shortcut
FSM finite state machine
面经总结2
Unity获取真实地理地图应用Terrain笔记
Nodejs (I) event driven programming
C#控制相机,旋转,拖拽观察脚本(类似Scenes观察方式)
事件系统(二)多播事件
将单行文字自动适应到目标矩形框内
unity UGUI判断点击在UI上和3D物体上的解决方案
Samplecamerafilter
MySQL8.0 安装/卸载 教程【Window10版】
Rethink | open the girl heart mode of station B and explore the design and implementation of APP skin changing mechanism
Understanding the Role of Individual Units in a Deep Neural Networks(了解各个卷积核在神经网络中的作用)
企业微信免登录跳转自建应用
Teach-Repeat-Replan: A Complete and Robust System for Aggressive Flight in Complex Environments
C#操作注册表全攻略








