SAP権限テスト自動実行ツール(T-CD用)

本ページは、SAP権限テスト自動化ツール(sap_authtest.exe)の利用マニュアルである。

ExcelにリストアップしたT-CDを、ログオン中のSAP GUI for Windowsで順番に実行し、「開始できたか/権限がないか/存在しないか」を判定してExcelに書き戻す。あわせて、各T-CDの実行結果をエビデンスとしてシートに残す。権限ロールの単体テストや、ロール変更後の回帰確認で、T-CDを一つずつ手で叩いてはスクショを貼る、あの作業を肩代わりするツールだ。

SAP権限テスト自動化ツールでできること

主な機能は次のとおりである。

  • ExcelのT-CD列を、指定した開始行から終了行(省略時は最終行)まで順に読み取り、SAP GUIのコマンド欄に投入して実行する
  • ステータスバーのメッセージを読み取り、判定結果(OK/NO_AUTH/NOT_EXIST/MESSAGE)とメッセージ本文をExcelの指定列に書き込む
  • T-CDごとにエビデンス用のシートを作成し、ユーザID・T-CD・判定結果・メッセージ・画面スクリーンショットを記録する
  • 最初にSU3を実行し、ログオンユーザの証跡シートを作成する
  • T-CDの重複を事前に検出し、続行するか終了するかを確認する

SAP GUI Scriptingは使用しない。Scriptingがサーバ側・クライアント側で無効化されている環境でも動作する。

動作環境と事前準備

動作環境

項目要件
OSWindows 10 / 11(64bit)
SAP GUISAP GUI for Windows(テスト対象システムにログオン済みであること)
Python不要(exeに同梱済み)
ExcelT-CDが縦に書かれている.xlsx形式のファイル
(実行時はExcelで開いていないこと)

事前準備

まず、配布ファイルのsap_authtest.exeを任意のフォルダに置く。対象のExcelファイルも同じフォルダに置いておくと、起動時にファイル名だけで指定できて楽だ。

次に、テスト対象のユーザでSAPにログオンし、SAPセッションを1つだけ開いた状態にしておく。複数のセッション(ウィンドウ)を開いていると、意図しないセッションが操作対象になる可能性がある。

最後に、対象のExcelファイルのバックアップを取っておく。ツールは結果列への書き込みとシートの追加・削除を行うため、万一に備えて原本は別に保管しておきたい。

テスト対象Excelの作り方

特別なフォーマットは不要である。既存の権限マトリクスや、T-CD一覧のシートをそのまま使える。必要なのは、ひとつの列にT-CDが縦に並んでいることだけだ。

A列B列…G列(T-CD)…AT列(結果)AU列(メッセージ)
1行目見出し見出しT-CODE
2行目MM01(ツールが書込)(ツールが書込)
3行目ME51N(ツールが書込)(ツールが書込)
4行目ME53N(ツールが書込)(ツールが書込)

ポイントは次の3点である。

  • 結果を書き込む列は起動時に指定する。判定結果はその列に、メッセージ本文はその右隣の列に書き込まれる。既存のデータを上書きしない列を選ぶこと
  • 終了行を省略した場合、T-CD列の空セルに到達した時点で処理を終える。途中に空行があるとそこで止まるので注意
  • T-CDは前後の空白を除いて読み取る。「/n」は付けなくてよい(ツールが自動で付与する)

ツールの実行手順

起動する

sap_authtest.exeをダブルクリックすると、コンソール画面が開いて対話形式で質問が始まる。コマンドプロンプトやPowerShellから、exeのあるフォルダで実行してもよい。

初回起動は、exeの展開処理のため数秒かかることがある。

質問に答える

起動すると、次の順番で質問される。各質問に入力してEnterを押す。

#質問入力例補足
1SAPにログオン済みですか?(Enterのみ)SAPシステムにログオンを済ませてからEnter
2対象Excelファイルのパスtest.xlsxフルパスでも、ファイル名だけでも可。ファイル名だけの場合はカレントフォルダ(exeのあるフォルダ)を探す
3T-CDが書かれているシート名Sheet1シートタブの名前をそのまま入力
4開始行(数値)2見出し行を除いた最初のT-CDの行
5終了行(数値、省略時は最終行まで)30 または(Enterのみ)一部の行だけ再テストしたいときに便利
6T-CDが書かれている列G列記号で入力
7判定結果を書き込む列ATメッセージは自動で右隣の列(この例ではAU)に書かれる
8SAPユーザIDTESTUSER01エビデンスシートのA1に記録される

ExcelのパスをエクスプローラーからドラッグしてきてもOKだ。前後に付くダブルクォートは自動で取り除かれる。

ファイルが開いている場合

対象のExcelファイルをExcelで開いたままだと、次のメッセージが表示されて待機状態になる。

対象のExcelファイルが開かれているため書き込めません。Excelでこのファイルを閉じてから Enter を押してください:

Excelでファイルを閉じてからEnterを押せば、処理が続行される。処理の最後に保存で失敗して全部やり直し、という事態を防ぐため、最初にチェックしている。

T-CDの重複がある場合

指定範囲内に同じT-CDが複数回出てくると、次のように重複箇所が一覧表示される。

T-CD 'ME51N' が重複しています: 24行目, 25行目
T-CD 'ME5A' が重複しています: 28行目, 32行目
続行しますか? 続行=c / 終了=q:

cを入力すれば重複行も含めてすべて実行し、qを入力すれば何もせずに終了する。意図した重複(ロールごとに同じT-CDを並べている等)なら続行して問題ない。

実行中は触らない

質問に答え終わると、SAP画面が最大化され、SU3→各T-CDの順に自動で実行されていく。コンソールには進捗が表示される。

=== ログイン証跡: SU3 ===
[行2] T-CD=MM01 を処理中...
  -> 種別=OK メッセージ=''
[行3] T-CD=ME51N を処理中...
  -> 種別=NO_AUTH メッセージ='トランザクション ME51N を使用する権限がありません'

実行中はマウスやキーボードを操作しないこと。ツールはSAPウィンドウを前面に出してコマンドを送り、画面を撮影している。途中で別のウィンドウを触ると、誤操作やスクリーンショットの乱れの原因になる。件数が多い場合は、休憩や会議の時間に回しておくのがおすすめだ。

全行の処理が終わると、Excelが保存されて終了する。

完了: C:\work\test.xlsx を保存しました。

実行結果の見方

判定結果の種別

結果列には次のいずれかが書き込まれる。

種別意味典型的なメッセージ
OKメッセージなしでT-CDが開始された(空)
NO_AUTH権限不足で開始できなかったトランザクション ○○ を使用する権限がありません
NOT_EXISTT-CDが存在しないトランザクション ○○ は未登録です
MESSAGE上記以外のメッセージが出たアプリケーション開始: 購買依頼照会 など
ERRORツール側の処理でエラーが発生したエラー内容

ここで一つ、SAPコンサルタントとして押さえておきたいのがMESSAGEの扱いである。MESSAGEは「失敗」ではない。ME53Nのように、開始時に「アプリケーション開始: ○○」といった情報メッセージを出すT-CDは、正常に開始できていてもMESSAGEになる。MESSAGEの行はメッセージ本文を確認し、開始できたかどうかを人の目で判断してほしい。

また、メッセージ本文が「(タイムアウト: …画面遷移を確認できませんでした)」となっている行は、SAPの応答待ちがタイムアウトしたことを示す。後述の手順で該当行だけ再実行するとよい。

エビデンスシートの構成

実行すると、Excelに次のシートが追加される。

  • SU3:ログオンユーザの証跡。ツール実行の最初にSU3を開いて記録する
  • {T-CD}_r{行番号}:各T-CDの証跡。例えば3行目のME51Nなら「ME51N_r3」。同じT-CDが複数行にあっても行番号で区別される

各シートのレイアウトは共通である。

セル内容
A1SAPユーザID(起動時に入力した値)
A2T-CD
A3判定結果(OK/NO_AUTH など)
A4SAPが返したメッセージ本文
A5〜SAP画面のスクリーンショット

エビデンスの主役はA4のメッセージ本文である。SAPのステータスバーのメッセージは一過性で、タイミングによってはスクリーンショットに写らないことがある。一方、A4の文字列は判定時にSAPから直接取得したものなので、確実に残る。スクリーンショットは画面の様子を示す補助証跡と位置づけてほしい。

なお、同じ名前のシートが前回の実行で作られていた場合は、自動で削除してから作り直す。常に最新の実行結果が残る仕組みだ。

運用のTips

一部の行だけ再テストする

タイムアウトした行や、ロールを修正した後の再確認など、一部だけやり直したいときは、開始行と終了行でその範囲を指定して実行する。1行だけなら、開始行と終了行に同じ行番号を入れればよい。

権限の「ある」「ない」の両面でテストする

権限テストは、権限を付与したT-CDが開けること(OK)と、付与していないT-CDが弾かれること(NO_AUTH)の両面を確認して初めて意味を持つ。付与対象外のT-CDもリストに混ぜておくと、「権限が効きすぎていないか」まで一度に確認できる。

ツールの動作確認には全権ユーザを使う

初めて使う環境では、まず全権限を持つユーザで数行だけ流してみるとよい。全行がOK(またはMESSAGE)になれば、ツールが環境で正しく動いていると判断できる。その上でテスト対象ユーザに切り替えれば、結果の差分を純粋に「権限の差」として読める。

T-CDはトランザクションの「入口」だけを見ている

このツールが判定するのは、T-CDを開始できるか(S_TCODEレベルのチェック)である。
T-CD開始後の画面で行われる、プラントや会社コード、活動区分などの権限オブジェクトのチェックまでは確認しない。組織レベルや活動の権限は、別途シナリオテストで確認してほしい。

困ったときは

症状原因と対処
「SAP GUI 画面が見つかりません」と表示されるSAPにログオンしていない、またはログオンパッドの画面のままになっている。テスト対象システムにログオンしてから再実行する
「指定されたファイルが見つかりません」と表示される表示された絶対パスを確認する。ファイル名だけで指定した場合は、exeと同じフォルダにExcelがあるか確認する。拡張子(.xlsx)の付け忘れにも注意
タイムアウトが発生するSAPの応答が遅い場合に起きる。該当行だけ開始行・終了行を指定して再実行する
途中で止まってしまう「データを破棄しますか?」などのポップアップが出ていないか確認する。ポップアップを閉じてから、止まった行以降を再実行する
exeが起動しない、または削除されるウイルス対策ソフトに誤検知されている可能性がある。社内のセキュリティ担当に除外設定を依頼する
操作していないSAPウィンドウが動いた複数のSAPセッションを開いている。テスト対象のセッション1つだけにして再実行する

まとめ ― SAP権限テスト自動化で、確認作業から解放される

SAP権限テスト自動化ツールは、Excelに並べたT-CDを順に実行し、判定結果とエビデンスを自動で残すツールである。使い方は、SAPにログオンしてexeを起動し、いくつかの質問に答えるだけだ。あとは実行中にPCから手を離しておけば、結果列とエビデンスシートが埋まったExcelが手元に残る。

判定結果のうちOKとNO_AUTHはそのまま信頼してよいが、MESSAGEの行は本文を確認すること、そしてエビデンスの主役はA4のメッセージ本文であること。この2点を押さえておけば、権限テストの確認作業は大幅に楽になるはずだ。浮いた時間は、ロール設計そのものの見直しや、組織レベル権限のシナリオテストといった、人間にしかできない検討に充ててほしい。