はじめに
前回のSAPログオンの続きです。
以前にUiPathで作った自動化ツールがありまして、
それを今回PADで作り直しています。
SAP画面の自動処理が出来るように試行錯誤しています。
製作途中で気になった点をいくつか記します。
マニュアルも読まずにいきなり作業開始しています。
覚書ですので、何かのご参考になれば。
ご了承くださいませ。
キーの送信
キーボードの文字を自動的に送信する機能です。
やりたいことは、
Shiftを押しながらC(コピー)
Shiftを押しながらV(ペースト)
をPADでどのように記述するか?です。
答えは
{Control}({C})
{Control}({V})
でした。
続いて、
コントロールとシフトとF9キーの3つのキーを同時に押す。
{Control}({Shift}({F9}))
どうやら、カッコの位置にキーボードを押しっぱなしの意味があるようです。
SAPの画面を操作する
前回も気になったのですが、Ui要素が絡んでいる部分は
何かありそうです。(ここがUiPathとの違いかなぁ)
次の点に注意し、デスクトップレコーダでの記録と修正を行います。
・マウスで操作しないようにする
・限りなくキーボードで操作する
・SAP画面をアクティブにするためには、マウスでアプリケーションの外枠をクリックする
・TABで遷移後、1秒待ってから文字を入力する
・文字を入力後、1秒待ってからEnterキーの押下
・画面切り替わりのタイミングは必要に応じて待ち時間を指定
待ち時間については、
画面下部の「実行遅延」とキーの送信アクション内の「キー入力の間隔遅延」があります。
今回はデフォルトのままで使っています。
SAPの画面操作は、キーボードだけで殆どの操作が可能です。
TABキー(BackTab)でフォーカスを移動させますが、独特に遷移するルールがあるようです。
一定の操作を安定的に動作させるするには各画面の特徴を把握する必要があります。
例えば、SAPの明細画面が表示された後、エクセルファイルに出力する場合、
マウスなら簡単に操作できるのですが、これをキーボードで操作するとなると
TABキーを何度も連打しなければなりません。
でも、自動化なので、正しいTAB押下の回数を指定するだけで、あとは確実に動いてくれます。
便利ですね。
今日はMB52ともう一つの画面操作をPAD作り直してSAP画面が無事動きました。
作り終わって、結局、Ui要素?インスタンス?って何だろう?になりました。
インスタンスって何だろう?
まずはPADのインスタンスについて、エクセルで実験開始です。
エクセルを開いた状態で、次の操作をデスクトップレコーダに記録しました。
ここから---
- B2セルをコピー(Ctrl+C)
- ↓キーを2回押して、
- B4セルに貼付け(Ctrl+V)
ここまで---
この3つのステップだけを記録後、直ぐに実行してみます。
すると、何も動かない!なんでだろう?
Excelのインスタンスが必要なようです。
で、ここを読みました。
https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/excel
これを読んだら、次の2つことがわかりました。
EXCELインスタンスを取得できるのは、
・エクセルを起動したとき
・実行中のエクセルに添付するとき
どうやらエクセルを開いた状態で始めたので、
インスタンスを取得できていないために、エラーに遭遇したのね。
なるほどね。このお作法を理解していない為ですね。
だから最初にエクセルを起動か、ファイルを開く操作から始める必要があるですね。
複数のエクセルを開いた状態で操作するときは、
VBAでの操作と比較すると、このインスタンスで指定するほうが確実に操作できそうです。
おまけに、
エクセルのセルをコピーするには、
Ctrl+Cよりも
「エクセルワークシートからセルをコピー」
で作ったほうが確実に動作しました。
SAPのテーマ選択で動きが変わる?
SAPに話を戻して、
SAP GUIオプションで、ビジュアルデザインのテーマ選択を選ぶと
SAP画面のデザインが変わります。
今回は
Belize Theme
SAP Signature Theme
の2つで今日作った2つのフローを動かしてみました。
どちらもそのまま動作出来ました。
キーの送信でコントロールしているので、
基本的な違いは無いようです。
もう少しここの違いが無いか今後も検証を続けます。
今日はここまで。