0

VBA マクロを使用して SAP NetWeaver から Excel にデータを取り込むにはどうすればよいですか?

SAP GUI を介していくつかの異なるトランザクションでアクセスできる SAP システムのデータがあります。このデータを毎日抽出し、Excel スプレッドシートとレポートにフォーマットする必要があります。このデータを手動で抽出すると、非常に時間がかかり、エラーが発生しやすくなります。

開発者またはシステムのサポートを受けていません。非特権ユーザーとして自分で実行できる必要があります。

4

1 に答える 1

2

これは私の回答からコピーされたものです: https://stackoverflow.com/a/19456656/2250183

これはすべて、SAP システムへのアクセスの種類によって異なります。データをエクスポートする ABAP プログラムや、マクロがデータを直接取得したり、SAP にファイルを作成させるために呼び出すことができる RFC がおそらく最適です。

ただし、原則として、この種の回答を探している人は、IT 部門が SAP システムのカスタマイズに何ヶ月も費やす必要のない即時のソリューションを探しています。

その場合、おそらく SAP GUI スクリプトを使用する必要があります。SAP GUI スクリプトを使用すると、Excel を自動化するのとほぼ同じ方法で Windows SAP GUI を自動化できます。実際、Excel マクロから 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 エディターに表示されるように事前バインディングを使用する場合はsapfewse.ocx、SAP GUI インストール フォルダーに への参照を追加する必要があります。

于 2016-01-31T20:00:47.523 に答える