当前位置:网站首页>VBA調用SAP RFC實現數據讀取&寫入
VBA調用SAP RFC實現數據讀取&寫入
2022-04-23 07:52: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://yzsam.com/2022/04/202204230628041296.html
边栏推荐
- Double sided shader
- 命令行参数传递库argparse的使用
- Page dynamic display time (upgraded version)
- C#控制相机,旋转,拖拽观察脚本(类似Scenes观察方式)
- Solve the problem of deploying mysql8 in docker with correct password but unable to log in to MySQL
- Dictionary & lt; T1,T2> Sorting problem
- 关于unity获取真实地理地图转3D化的相关链接
- IDEA快捷键
- Read and modify the JSON file under the resource folder
- C#操作注册表全攻略
猜你喜欢

Apache Hudi 如何加速传统的批处理模式?

Scrapy modifies the time in the statistics at the end of the crawler as the current system time

Understanding the role of individual units in a deep neural networks

Page dynamic display time (upgraded version)

canvas学习第一篇

向量到一个平面的投影向量

设置了body的最大宽度,但是为什么body的背景颜色还铺满整个页面?

The projection vector of a vector to a plane

Mongodb starts warning information processing

'NPM' is not an internal or external command, nor is it a runnable program or batch file
随机推荐
Apache Hudi 如何加速传统的批处理模式?
踩坑日记:Unable to process Jar entry [module-info.class]
Shapley Explanation Networks
企业微信免登录跳转自建应用
IT高薪者所具备的人格魅力
Understanding the role of individual units in a deep neural networks
移动端布局(3D转换、动画)
js之作用域、作用域链、全局变量和局部变量
Dictionary & lt; T1,T2> Sorting problem
Date object (JS built-in object)
Houdini>建筑道路可变,学习过程笔记
C#控制相机,旋转,拖拽观察脚本(类似Scenes观察方式)
C# 文本文件的查找及替换(WinForm)
Xamarin版的C# SVG路径解析器
常用Markdown语法学习
Dropping Pixels for Adversarial Robustness
canvas学习第一篇
Enterprise wechat login free jump self built application
Daily question | fear dominated by reverse linked list
Online Safe Trajectory Generation For Quadrotors Using Fast Marching Method and Bernstein Basis Poly