VBScriptでSAP R/3をアクセス

VBScriptでSAP R/3 のテーブルを読むサンプル。
知り合いに頼まれたんでちょこちょこと書いたのだが、他に需要も無いのでメモとして晒す。

.NET時代突入でVBSも使わなくなるよなぁ…と思っていたが、


  1. バッチファイル代わりに作ったレガシーな小物が意外に多いんで書き換えるのがメンドい
  2. .NETランタイムが無いマシンでも、WSHくらいは使えるだろ?
  3. ExcelなんかのVBAに焼きなおすのも相対的にラク
  4. 使っているCOMコントロールの類が全部.NET対応というわけではない。.NETで従来のCOMを動かすことは「可能」だが、「可能」ということと「使い物になる」ということは別問題。

みたいなこともあるので、俺はまだけっこう使ってる。




' =====================================================
' WSH BAPI COM Connection TEST1 (TABLE READ)
' sample by SIGNAL9
' =====================================================

Set functionCtrl = CreateObject("SAP.Functions")
'R/3接続
Set sapConnection = functionCtrl.Connection
' サーバ
sapConnection.HostName = "foo.sap.server"
' システムNo
sapConnection.SystemNumber = 0
' クライアントNo
sapConnection.Client = "100"
' ユーザ名
sapConnection.user = "あんたのユーザ名"
' 言語
sapConnection.Language = "JA"
' パスワード
sapConnection.Password = "あんたのパスワード"

' Logonパラメータ2番目をTrueにするとサイレントログオン
If sapConnection.logon(0, True) <> True Then
Wscript.Echo "***** 接続エラー"
Else
Wscript.Echo "***** 接続"

' RFC_READ_TABLE ファンクションを使う
Set RFC = functionCtrl.Add("RFC_READ_TABLE")

' 読み出しテーブルパラメータ設定
  ' ( 汎用モジュールのIMPORT側の項目。SE37の照会で確認できる)
' ここでは例としてCompany Codesを使用
RFC.Exports("QUERY_TABLE").Value = "T001"

RFC.Exports("DELIMITER").Value = vbTab
RFC.Exports("ROWSKIPS").Value = "0"
RFC.Exports("ROWCOUNT").Value = "1000"

' 読み出しカラムパラメータ設定 ここでは省略。
' RFC_READ_TABLE汎用モジュールはテーブルを返すので、
' SE37の照会で「テーブル」のタブにある
' テーブルの定義内容は SE11 で確認できる。
'
'Set oRow = RFC.Tables("OPTIONS").Rows.Add
'oRow.Value(1)= "BKLAS = '????'" ' 条件指定

' コール
If not RFC.Call Then
die_exception = RFC.exception
' エラーだったらエラーコード表示
WScript.Echo "ERROR: " & die_exception
Else
For Each oRow In RFC.Tables("DATA").Rows
' 正常だったらデータ表示
Wscript.Echo oRow.Value(1)
Next
End If
Wscript.Echo "***** ファンクションコール終了"
sapConnection.Logoff

WScript.Echo "***** ログオフ"
End If

Set functionCtrl = Nothing


[PR]
by SIGNAL-9 | 2005-03-24 14:20 | TIPSとかKludgeとか
<< 失敗知識データベース ldap照会コマンドの自作 >>