VBAを使用してSAP Netweaverからデータをプルする方法を知っている人はいますか?
SAPからExcelにデータをエクスポートし、それをレポートにフォーマットする必要がある日次レポートが多数あります。フォーマットを行うVBAマクロを既に作成しました。データを手動で抽出し、各レポートマクロを個別に実行する必要があります。私のマクロがSAPに移動し、レポート#1のデータを取得し、フォーマットし、レポート#2のデータを取得するなど、時間を大幅に節約できます。
SAP NetWeaver(Release 730、バージョン7300.1.3.1079)を使用しています。レポートは、Excelのピボットテーブルとチャートです。
ありがとう!
これはすべて、SAPシステムへのアクセスの種類によって異なります。データをエクスポートするABAPプログラムや、マクロがデータを直接取得したり、SAPにファイルを作成させるために呼び出すことができるRFCが最適です。
ただし、原則として、この種の回答を探している人々は、IT部門がSAPシステムのカスタマイズに数か月を費やす必要のない即時解決策を探しています。
その場合、おそらくSAP GUIスクリプトを使用する必要があります。 SAP GUIスクリプトを使用すると、Excelを自動化するのとほぼ同じ方法でWindows SAP GUIを自動化できます。実際、Excel GUIから直接SAP GUIを呼び出すことができます。詳しくは こちら をご覧ください。 SAP GUIには、Excelによく似たマクロ記録ツールがあります。 Excel VBAとほぼ同一のVBScriptでマクロを記録し、通常はExcelマクロに直接コピーして貼り付けることができます。
以下は、私がアクセスできるSAPシステムに基づいた簡単な例です。
_Public Sub SimpleSAPExport()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start the transaction to view a table
session.StartTransaction "SE16"
'Select table T001
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
session.findById("wnd[0]/tbar[1]/btn[7]").Press
'Set our selection criteria
session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
session.findById("wnd[0]/tbar[1]/btn[8]").press
'Click the export to file button
session.findById("wnd[0]/tbar[1]/btn[45]").press
'Choose the export format
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Choose the export filename
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"
'Export the file
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub
_
_wnd[1]/tbar[0]/btn[0]
_などの要素の名前を見つけるために、スクリプト記録を使用できます。 [ローカルレイアウトのカスタマイズ]ボタンをクリックすると、おそらく次のようになります。
[スクリプトの記録と再生]メニュー項目を見つけます。
その内More
ボタンをクリックすると、それは、レコード、VBスクリプトがに記録されていること。出力形式は、ビット厄介であるファイルを変更/確認することができますテキストの選択、テキストフィールド内のクリックなど。
提供されたスクリプトは、VBAマクロに直接コピーされると機能するはずです。遅延バインディングを使用し、Set SapGuiAuto = GetObject("SAPGUI")
行はSapGuiAutoオブジェクトを定義します。
ただし、使用しているオブジェクトのプロパティとメソッドがVBAエディターに表示されるように事前バインディングを使用する場合は、SAP GUIインストールフォルダーに_sapfewse.ocx
_への参照を追加する必要があります。