MS Excel (VBA マクロ) を SAP と通信するためのソリューションを考えています。あなたが働いている会社の SAP サポート担当者に連絡するのが難しすぎる場合があるため、独自のソリューションを見つけ出すことをお勧めします。
その理由について、私は「自分のユーザー プロファイルを SAP R/3 に接続する」という基本的なことから始めました。Google の調査を行ったところ、接続性に関する優れた論文が見つかりました。コードの重要な部分は次のとおりです。
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"
(およびその他のユーザー プロファイル値......)
その後、いくつかのテーブル (この場合はユーザー テーブル) を読み取る 2 番目のステップを実行しました。
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")
この部分まで、私は次の 3 つのことを確信しています。
1) SAP R/3 に接続します
2) 「SE16」トランザクションを実行します
3) BdcTable からバッチ入力を受け取ることができます
欠けている部分は、SE16で実行したい正確なデータ(テーブル)をアップロードするために、BdcTable(ABAP言語である必要があると思います)を「フォーマット」する方法です。
EDITED:探している「フォーマット」テーブルの例を見つけました:
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 マクロの一部です。しかし、これらすべての塗りつぶしが何を意味するのかわかりません。
このタスクが完了した後の 2 番目の課題は、データを自動的に MS Excel シートに保存することです。
(すべての編集が機能しているかどうか、または新しいコードを貼り付けて履歴を消去する必要があるかどうか教えていただけますか?)
編集済み: SCN プラットフォームの概要と同じ質問をしました。ここで確認できます。
編集: この課題の私の目的は、VBA マクロを介してトランザクション (私が探している TCODE は LM02、倉庫のビンからビンへのトランザクション) を実行し、MS Excel ファイルから抽出された日付をアップロードし、トランザクションを実行することです。
-- 最終編集: このタスクは、SAP IT サポートの助けなしでは実行できないようです。19/9/12 | このトピックについてはまだ調査中です。25/09/12 | 02/OCT/12 -->ロギング用にAutoITを試し、基本的な Tcode を実行してレポートを表示します。再確認した後、結果にコメントします。