我正在制定与 SAP 通信 MS Excel(VBA 宏)的解决方案。有时很难联系到您工作的任何公司的 SAP 支持人员,因此最好找出自己的解决方案。
出于这个原因,我从基本的开始:“将我自己的用户配置文件与 SAP R/3 连接”。做一些谷歌研究,我发现了一篇关于连接性的好论文,这里是代码的关键部分:
Dim objBAPIControl As Object 'Function Control (Collective object)
Dim sapConnection As Object 'Connection object
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection
sapConnection.client = "32"
sapConnection.user = "myUser"
sapConnection.Language = "EN"
sapConnection.hostname = "qwerty.example.com"
sapConnection.Password = "myPass"
(以及更多用户配置文件值............)
稍后,我做了第二步,即读取一些表(在本例中为用户表)
If sapConnection.logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub 'End program
End If
Set objUserList = objBAPIControl.Add("BAPI_USER_GETLIST")
Set objUserDetail = objBAPIControl.Add("BAPI_USER_GET_DETAIL")
returnFunc = objUserList.Call
If returnFunc = True Then
Dim objTable As Object
Set objTable = objUserList.Tables("USERLIST")
ActiveSheet.Cells(1, 1) = "User count :" & objTable.RowCount
但现在,这是我的问题:如何运行从 VBA 触发的一些事务(LM02、LS26、LX03 等)?
感谢你们!
PS。我正在使用 MS Office 2007 和 Windows 7。
- 编辑:
嘿,我改变了我应对挑战的方式(我会让上面的 OP 帮助其他人)
这必须添加到第一个
Dim RfcCallTransaction As Object
Dim Messages As Object
Dim BdcTable As Object
与 SAP 的连接是相同的,但是一旦您登录:
If objBAPIControl.Connection.Logon(0, False) <> True Then
Exit Sub
End If
Set RfcCallTransaction = objBAPIControl.Add("RFC_CALL_TRANSACTION_USING")
在这里您可以找到RFC_CALL_TRANSACTION
旧函数的“新”参数。
RfcCallTransaction.exports("tcode") = "SE16"
RfcCallTransaction.exports("mode") = "N"
Set BdcTable = RfcCallTransaction.Tables("bt_data")
在这部分之前,我确信三件事:
1) 它确实连接到 SAP R/3
2)它运行“SE16”事务
3) 它可以接收来自 BdcTable 的 Batch 输入
缺少的部分是,如何“格式化” BdcTable(我认为它必须是 ABAP 语言)以上传我想在 SE16 上运行的确切数据(表)。
编辑:我找到了一个我正在寻找的“格式化”表的例子:
add_bdcdata BdcTable, "SAPLSETB", "230", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "DATABROWSE-TABLENAME"
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=ANZE"
add_bdcdata BdcTable, "", "", "", "DATABROWSE-TABLENAME", "KNA1"
add_bdcdata BdcTable, "/1BCDWB/DBKNA1", "1000", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "MAX_SEL"
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=ONLI"
add_bdcdata BdcTable, "", "", "", "LIST_BRE", "250"
add_bdcdata BdcTable, "", "", "", "MAX_SEL", "5"
add_bdcdata BdcTable, "SAPMSSY0", "120", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "01/02/2012"
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=%EX"
add_bdcdata BdcTable, "/1BCDWB/DBKNA1", "1000", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/EE"
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "I1-LOW"
add_bdcdata BdcTable, "SAPLSETB", "230", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/EBACK"
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "DATABROWSE-TABLENAME"
上面的代码仍然是 VBA 宏的一部分。但我不知道所有这些填充是什么意思。
此任务完成后,第二个挑战是将数据自动保存到 MS Excel 工作表中。
(你能告诉我所有的编辑工作是否正常,还是我应该粘贴新代码并删除历史记录?)
已编辑:我在 SCN 平台上提出了与摘要相同的问题。你可以在这里查看。
已编辑:我在这个挑战中的目标是通过 VBA 宏运行交易(我正在寻找的 TCODE 是 LM02,仓库的 bin 到 bin 交易),上传从 MS Excel 文件中提取的一些日期并执行交易。
-- 最后一次编辑:如果没有 SAP IT 支持的帮助,这项任务似乎无法完成。2012 年 9 月 19 日 | 还在研究这个话题。25/09/12 | 02/OCT/12 --> 我将尝试使用 AutoIT进行日志记录,运行基本 Tcode 并显示报告。在我仔细检查后,我会评论我的结果。