はじめに
この投稿は、RPAツール「UiPath」で SAPのGUI操作をする 記事です。
以下の 4日目の投稿でもあります。
今回は「UiAutomation編」として、GUI操作について記載します。
UiAutomationとは
SAPのGUIを操作する場合、画面の要素を「セレクター」として解釈しますが、解釈は「UiAutomation」が実施します。
UiAutomationはUiPathがパッケージとして提供していて、随時アップデートされています。
基本的には「バージョンが新しいほど、正確に読み取ることができる」ようになっているので「できるかぎり新しいもの」を使ったほうが良いのですが、使用できるバージョンの範囲は、購入しているUiPathライセンスのバージョンによって異なります。
UiAutomationのバージョン | 使用できるUiPathのバージョン |
---|---|
20.10 - 21.4 | V20.10以上 |
19.5 - 20.4 | V2019.2以上 |
18.3 - 19.4 | V2018.3以上 |
UiAutomationとSAP
上で書いたとおり「UiAutomationは新しいほどよい」のですが、
SAPのGUI操作でいえば「UiAutomationのv20.10」で大きく改善されています。
なので、SAPのGUI操作したいのなら、
- UiAutomation「v20.10」以降
- UiPath自体のバージョン「20.10」以降
にしたほうが圧倒的に良いと思います。
以下で、UiAutomationが「SAP」の操作に関して、どのようにアップデートを行ってきたかを見てみます。
Version | Date | Description |
---|---|---|
v21.4 | 2021 年 4 月 26 日 | SAP GUI for Windows の最新バージョンである 7.70 をサポート SAP ALV テーブルのデータを抽出できるように |
v20.10 | 2020 年 10 月 12 日 | SAP WinGUI の自動化に特化した「表のセル スコープ」アクティビティの追加 SAP Fiori 用のセレクタ強化 SAPのテーブル列セレクターの改良(数字の代わりに列名を返す) |
v20.4 | 2020 年 5 月 6 日 | SAP 向けに特別に調整された一連のアクティビティを新しく提供(SAPにログオンなど) |
v19.10 | 2019 年 11 月 11 日 | SAP のポップアップ ウィンドウ上でも対話型の UI 選択/セレクター生成がされるように 「構造化データを抽出」アクティビティが SAP GUI の表形式ヘッダー名をサポート 「クリック・チェック」アクティビティが、SAP のグリッド テーブルの制御と対話できるように |
v19.7 | 2019 年 7 月 16 日 | セレクター生成が改善され、SAP セッション ウィンドウを一意に識別できるように SAP要素を示す場合、既定の SAP セレクター以外の AA セレクターを生成できるように |
v19.6 | 2019 年 6 月 24 日 | SAP における要素検出について、いくつかの改善が行われました |
v19.5 | 2019 年 5 月 21 日 | SAP Business Client 6.5 のツリーに対してセレクタを生成できるように |
先の述べたとおり「v20.10」で要素認識の技術がかなり改善がされていて、セレクタをより早く正確に取れるようになっている印象があります。
もちろん、操作したい画面によっては「セレクタ取れない」こともあるとは思います。
鬼門のポップアップ
SAPのGUI操作では「ポップアップウィンドウ」は以下の点で厄介です。
1。予想していない場面で出現してくる
2。ポップアップは何種類かあり、要素・セレクタが微妙に違う
3。データ次第では、ポップアップが順不同で大量に連続で表示される
例えば「受注伝票入力」で、型番を入力してEnterを押すと、確認として「商品情報」が表示されますが、その際に商品に「アラート情報」が設定されているだと、急に画面に「ポップアップ」が表示されることがあります。(商品にアラート情報が設定されていないと表示されない)
なので「Enter後にポップアップが出るかもしれない」と予測して、画面検出する必要があります。そして、このポップアップは1種類ではなく、複数の種類があります。
一番厄介なのが「ポップアップが順不同で、複数種が同時多発的に表示される」ケースです。
この場合、以下のようにすれば制御ができます。
1)考えられる種類のポップアップ画面で「並列」アクティビティを配置
2)並列処理内で「要素を取得」と「要素のIsVisible」を確認する処理を実施
= 「visible=true」なら表示されていると判定
3)表示されているポップアップを判定し、処理する
4)1に戻る(次のポップアップ判定へ(以降、ポップアップが無くなるまで繰り返し))
複数のポップアップが連続で表示されたとき、現在表示されているポップアップは「要素は残っているが、画面上は非表示になっている」のがポイントです。
終わりに
いかがでしたでしょうか?開発の参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。