"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

【SAP】windowsでのSAPのマニュアル監視



スポンサーリンク

監視ソフトが入れれないっていうとき仕込んでおきたいいくつかの施策。


■その1 バックグラウンドでログイン(要 ActiveX)


以下のVBSでファイルを作って定期的に実行

'①R/3インスタンス生成
Set R3 = CreateObject("SAP.Functions")

'②R/3ログオン情報記述(サイレントモードのみ)
Set oConnection = R3.Connection
oConnection.Applicationserver = "hostname" 'R/3IPアドレス
oConnection.Client = "000" 'クライアント
oConnection.user = "username" 'ユーザー名
oConnection.password = "password" 'パスワード

'③R/3ログオン( True→falseにするとポップアップでログオン情報入力)
If oConnection.logon(0, True) <> True Then
 MsgBox "ログオンに失敗しました。再処理して下さい。"
End If

oConnection.logoff

参照:http://homepage3.nifty.com/designer/html/saptech_dt04.html
SAP ActiveXコントロールを利用したエクセルアプリケーションの構築 Pert1データ抽出編


■その2 sapinfo.exe でリターンコードで判断


sapinfo ashost=hostname sysnr=nn

hostname : インスタンスのコンピュータ名
nn : インスタンス番号

RFCSDKに含まれるexeのようです。



■その3 vbsでsapdisp+workのプロセス数のカウント


Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim sMesStr

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件をWQLにて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_Process")

Dim cnt
cnt = 0

'コレクションを解析する。
For Each oClass In oClassSet

if oClass.Description = "disp+work.exe" then
  cnt=cnt + 1
end if

Next

Wscript.Echo "disp+work.exeは" & cnt &"個です。"

'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing