簡體   English   中英

將第三方應用程序 (MS Excel) 與 SAP R/3 連接

[英]Connect a third-party application (MS Excel) with SAP R/3

我正在制定與 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 等)?

感謝大伙們!

附注。 我使用的是 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 支持的幫助,這項任務似乎無法完成。 19/sep/12 | 還在研究這個話題。 25/09/12 | 02/OCT/12 --> 我將嘗試使用AutoIT進行日志記錄,運行基本的 Tcode 並顯示報告。 在我仔細檢查后,我會評論我的結果。

注意:這是@fabiopagoti 答案的替代建議,這是一種完全不同的方法。

如果 - 正如您在另一條評論中所建議的 - 您想將數據導入 R/3 應用程序,您最好不要試圖繞過公司 IT。 相反,您可以嘗試與他們交談並訪問Legacy System Migration Workbench (LSMW)。 這是一個功能強大的工具包,它允許您記錄對話步驟(在某些條件下),導入一些數據(例如從 CSV 文件),然后將記錄和數據組合起來以使用不同的數據“重放”相同的步驟 - 所有這些都使用標准功能,而無需繞過任何安全檢查。

好吧,讓我引用我得到的最佳答案。 我把它貼在這里是因為我認為其他人會和我有同樣的問題。

第一步是了解您的交易是否有 RFC 或 BAPI,但您沒有 ABAP 交易的權限,所以我不知道您如何找到它。

理論上你可以嘗試在WEB或SAP文檔中尋找它,但是(如果存在)你需要檢查定義導入/導出參數的接口......所以你應該有SE37的授權.

下一步取決於您是否可以找到 LM02 的 RFC 函數:

如果有一個函數,你需要了解如何運行它

如果沒有函數。 您需要了解您或 abaper 是否可以開發定制的。

最大限度

感謝您的研究努力。

對不起,我的朋友,但你不會比這更進一步。

您在代碼中所做的是調用 BAPI(基本上是 RFC 啟用函數)。 換句話說,SAP 提供了從不同系統調用的標准函數。 你可以認為這是一個老式的 API。 也可以創建自定義 BAPI,但實際上幾乎沒有人這樣做。

好消息是,通常,我說通常 BAPI 會帶來與標准事務相同的功能。 因此,理論上您可以通過事務代碼執行的操作可以通過 BAPI 調用執行。

BAPI 與事務代碼的關系不是一對一的。 例如,您可以使用單個事務來插入、搜索、刪除和編輯特定類型的文檔,但要使用 BAPI 調用實現這一點,您將需要許多事務(一個用於創建文檔,一個用於刪除,一個用於檢索等)。

有一個名為“BAPI”的交易(可能是唯一具有體面名稱的交易代碼),其中包含系統中的所有 BAPI、其參數和(一些糟糕的)文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM