5
6

More than 1 year has passed since last update.

Power Automate DesktopでSAP系の操作を自動化してみた(SAPログオン編)[How to automate SAP logon with MS PAD]

Last updated at Posted at 2022-02-05

こんにちは。

今回は、マイクロソフトから提供されているRPAツールである、Power Automate Desktop(正式名称はPower Automate for Desktop、略称としてPADと記載します)を使用してSAPGUIなどの操作を自動化・簡略化する記事の第1回目となります。

目次

  1. SAP環境へのログオン 今回の内容
  2. SAPGUIの操作(その1)
  3. SAPGUIの操作(その2)

Power Automate Desktopとは?

マイクロソフト社が提供しているPower Platformに含まれるPower Automateのうち、 有人型(Attended)RPA と呼ばれる デスクトップフロー をユーザが作成・利用するためのアプリケーションがPower Automate Desktop(正式名称:Power Automate for Desktop)です。Windows10、11のユーザは無料で利用できます(11には標準でインストール済み)。

デスクトップフロー においては多くのことが実行可能ですが、特に、ユーザが使用するアプリケーション(Excel・メモ帳・エクスプローラやファイルの操作など)やWebブラウザにおける 操作の自動化 、および変数の定義・条件分岐・反復処理・入出力処理が実行可能となっています。

細部の情報や操作方法については、下記サイトなどをご確認いただくとわかりやすいです。サンプルのフローも多く掲載されています。

PADのダウンロードとインストール

下記の、「Install Power Automate Installer」のリンクからダウンロードをすることができます。

SAP環境へのログオンを行うフローを作成

今回は、SAP環境へのログオンをMS PADで実行する際のフローを作成します。
作成するフローは、マイクロソフトのブログ記事を参考にしています。

当記事ではMS PADのみでSAP環境へのログオンを行うフローを作成するため、上記サイトのフローの内容を一部変更しています。

フローの記述

今回のフローの完成形です。処理の流れは以下のとおりです。

  1. ログオンに必要な情報を変数に持たせる
  2. C:\Program Files (x86)\SAP\FrontEnd\SapGui\sapshcut.exeを実行する。その際に、上記の各値をコマンドライン引数として渡す
  3. 応用編として、ログイン言語の設定を可能とする

image.png
PADではフローに設定する各処理のことを 「アクション」 と呼んでいます。アクションは画面左のアクションペインのツリーをたどっていくことや、文字列検索で探すことができます。

…ここまで見て、 「sapshcut.exeのショートカット作ってパラメータ記述すればPADでの実行いらないですよね」 と思ったそこの方、ご静粛に願いますw

変数の定義

画面左のアクションペインから 変数>変数の設定 アクションを使用して、ログオンに必要な以下の情報を変数(フロー変数)として定義します。変数名には大文字小文字の区別があります。また、変数は動的型付け(設定値から自動的に変数の型が決定される)となっています。昨今のABAPでは、動的型付けでの変数定義もできますよね。

image.png

※変数名は今回は下記のとおりとします(変数名は任意の名称に変更可能です)

変数内容 変数名
システムID(SID) SAPSystemId
クライアント SAPClient
ユーザID SAPUser
パスワード SAPPassword

今回、クライアント以外の項目は設定値を隠しています。変数を定義後、画面右側にあるフロー変数ペインにて「機密情報としてマーク」をすることで、フロー画面上には値が表示されなくなります。

image.png

sapshcut.exeの実行

sapshcut.exeは、SAPGUIに含まれているSAPGUI用のショートカットアプリケーションです。詳細な情報は下記リンク先の記事が参考になります。
※1件目の記事によるとGUI620からはSAPgui.exeが使用できるとのことですが、GUIバージョン750でもsapshcut.exeが使用できることが確認できましたので今回はsapshcut.exeを実行するフローの説明をしていきます。

SAPアクションペインから、 システム>アプリケーションの実行 を使用して以下のように記述します。コマンドライン変数には、事前に定義した各種値の情報を渡します。PADで変数を使用する際は、変数名を%で囲って記述することに注目してください。また、変数名は前述のとおりですがABAPと異なり、 変数名の大文字小文字を区別します ので注意してください。
image.png

アプリケーションパス: C:\Program Files (x86)\SAP\FrontEnd\SapGui\sapshcut.exe
コマンドライン引数: start -system=%SAPSystemId% -client=%SAPClient% -user=%SAPUser% -pw=%SAPPassword%
ウィンドウ スタイル: 正常
アプリケーションの起動後: アプリケーションの完了を待機します

フローの実行

フローが完成したら実行します。動作を確認しながら実行する場合はフローデザイナ(フローを作成・編集する画面)から実行し、不具合がなくなったら、フローコンソール(作成したフローの一覧が表示されている画面)から実行することをお勧めします。指定した環境にログオンできれば成功です。
※フロー処理が遅くなる場合があります(なんなら人間が実行した場合よりも遅い場合も)。これは実行するパソコンのスペックや通信状況が原因であることが多いです。別記事でも述べますが、SAPGUIの操作を自動化する際は、SAP環境の負荷状況によりフローが遅延する場合が多いようです。

フローデザイナ
image.png

フローコンソール
image.png

他言語ログオン対応

応用編として、ログオン時にログオン言語を選択する仕様を追加します。赤枠内が追加・変更分です。
image.png

  • 使用する言語を変数に設定する(今回は日本語(JA)と英語(EN)を例とします)
  • ログオン言語を入力する画面を表示し、ユーザに決定させる
  • キャンセルボタンがクリックされたら処理を終了する
  • sapshcut.exeのコマンドライン変数に言語の内容を追加する

使用する言語を変数に設定する

MS PADにおける一次元配列の変数を「リスト(リスト型変数)」と呼んでいます。リストの定義方法は複数ありますが、今回は変数>変数の設定から以下のように定義します。

image.png
変数名: LangList
宛先: %['JA','EN']%
この設定によりLangListというリストに「JA」「EN」が設定されます。最初に設定した内容が次で定義する画面に初期表示されます。選択肢を増やす場合はカンマで区切り、シングルクォーテーションで値を囲ってください。
image.png

リスト型変数については以下の記事が参考になります。

ログオン言語入力画面を表示し、ユーザに入力させる

上記で設定した言語をユーザに選択させる画面を作成します。メッセージボックス>リストから選択ダイアログを表示を実行して、以下のように値を設定します。

image.png
image.png
ダイアログのタイトル :ポップアップウィンドウのタイトル(オプション)
ダイアログメッセージ :ポップアップウィンドウ内の文章(オプション)
選択先のリスト: %LangList% ※入力枠内の{x}をクリックして変数一覧から選択できます
選択ダイアログを常に手前に表示する: スイッチをオン(右側にする)
リストに制限: スイッチオン(右側にする)
空の選択を許可: スイッチオフ
複数の選択を許可: スイッチオフ

生成された変数のうち、一番上の変数にユーザ設定した言語の値が設定されます。この変数の名称を SAPLang と変更しました。2つ目以降は生成時のままです。
image.png

キャンセルボタンがクリックされたら処理を終了

条件>if および else アクションを使用して処理を分岐します(条件分岐の終了を示すEndは、Ifにセットされています)。ダイアログでクリックされたボタンの内容値は、アクションで生成された変数である %ButtonPressed% に格納されています。Ifの設定内容は以下の内容となります。
image.png
最初のオペランド: %ButtonPressed%
演算子: 「と等しい(=)」※初期設定値
2番目のオペランド: Cancel ※先頭のみ大文字
フローの処理を終了するには、フローコントロール>フローを停止する アクションを使用します。

Else側には、sapshcut.exeを実行するアクションを設定します。
※アクションを移動するには、キーボードやマウスの右クリックでの コピー&ペースト および、マウスでの ドラッグ&ドロップ が使用できます。

sapshcut.exeのコマンドライン変数に言語の内容を追加

ダイアログで選択した言語の値は、アクションで生成された変数 %SAPLang% に設定されますので、この値をsapshcut.exeに渡します。コマンドライン変数に1バイトスペースを挿入後、-language=%SAPLang% を追加してください(記述位置の決まりはありません)。

image.png

動かしてみる

フローを実行すると、ログオン画面を設定するポップアップメッセージが表示されます。
リスト型変数に設定した順に設定されていることが確認できます。言語が設定できること、設定した言語でログオンできること、キャンセルボタンをクリックした際にログオン処理を行わずフローが終了することを確認できれば成功です。

image.png

まとめ

以下について説明いたしました。

  • Power Automate Desktopの概要
  • sapshcut.exeを使用したSAPログオン用フローの作成
  • 上記にログオン言語を選択する処理の追加

概要設計書や詳細設計書を書くような感覚で、自動化フローが設定できることに気づいた方もいらっしゃったのではないでしょうか。次回はSAPGUIの画面処理の自動化を行う予定です。今回は以上となります、ありがとうございました。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6