この記事は『CRESCO Advent Calendar 2022』15日目の記事です。

 

みなさんこんにちは!

ロボティックテクノロジーセンターのやまさきあです。
UiPathエンジニアをやっています。

今回は、UiPathでSAPの自動化をして「つまづいたこと」を3点、書かせていただきます。
よろしくお願いいたします。

SAP自動化との出会い

それは2022年のとある日のこと。
SAP自動化の案件の話について、私に主担当をお願いするよう話がきました。

私は、経験したことのないSAP自動化案件に
とってもワクワクしていました!

いつも通り、ヒアリング、設計、開発…と、自動化を進めていくやまさきあ。
順調に思えたSAP自動化ですが、いくつか壁が待ち受けていました。

問題① ドロップダウンリストの操作ができない!

「ロボットがついに出来上がった…!!」と大変喜んだ私。

しかし、喜んだのもつかの間。

SAP上にある、ドロップダウンリストから項目を選択する操作がどうしてもうまくいきません。
(↓みなさんのイメージしている通りだと思いますが、このようなものです。)

やってみたこと

  • 「項目を選択」アクティビティのセレクターや準備完了まで待機の項目を確認
  • 「ホットキーを押下」で、「↓」で項目まで移動して「Enter」で選択してみる

しかし、うまくいきません。

もう、なすすべがない…!!

本当にそう思いました。

解決策

チームメンバーに相談し、一緒に調査した結果、
なんと、恐ろしいくらいに基本的な部分でつまづいていました。

原因は、UiPathでSAPを操作できるような設定がなされていなかったからでした。
※ サーバー側の設定はされていましたが、クライアント側の設定が漏れていました。

(v2022.10においてSAP GUI Scripting を有効にする設定手順はこちら↓)
https://docs.uipath.com/studio/lang-ja/docs/sap-wingui-configuration-steps

本当に基本的なところだったため、
気づいた時には自分がふがいなくて泣きそうになりました(笑)

皆さんは、私のように、

この設定を絶対に忘れないようにしてください!!

問題② セルに入力できない

クライアント側の設定はできたし、もう問題ないだろう!

そう思いましたが、ここで、SAPの本当の「クセ」を知ることになりました。

SAPには、表形式でデータを入力できる場合があります。
今回は、そちらに対しての入力を行う処理を行うところでつまづきました。

2~4列目のセルに対して処理を行う必要があったのですが、

なぜか3, 4列目のセルに対しては、入力がうまくできず、
「文字を入力」アクティビティも、「テキストを設定」アクティビティを使った入力もできませんでした。

やってみたこと

「クリップボードに設定」アクティビティや「ホットキーを押下」アクティビティを使用し、
力技で、Tabでの右セルへの移動や、コピペを駆使してなんとかワークフローを作り上げました。
( このようなイメージです。)

ただ、このやり方には限界がありました。

セルの値をクリアする処理に対応できなかったのです。

( [ Ctrl + a ] で全選択→ [ Delete ] や [ Backspace ] で削除、といった方法ではうまくいきませんでした。)

もう、なすすべがない…!!(2回目)

再び、メンバーの力を借りようと相談しましたが、それでもうまくいきませんでした。

解決策

途方に暮れた私は、UiPath関連の方々と関わっているSNSで、
「UiPathの表操作がうまくいかない」旨、発信してみました。

そうしたところ、見ず知らずの方に、親切にも
「テーブル セル スコープ」を使用すればいいよ、という返信をいただきました。

「テーブル セル スコープ」アクティビティはこちら!
https://docs.uipath.com/activities/lang-ja/docs/cell-scope

そちらを使用して、その中で「値を設定」アクティビティを使用すると、
入力がうまくいきました。

助けていただいた方には、本当に、感謝してもしきれません…!!

問題③ 列名が一致しない

上記で使用した「表のセルスコープ」アクティビティですが、
こちらを使う時にも、SAPのクセがありました…!!

「表のセルスコープ」アクティビティは、表 UI 要素にアタッチし、その中でアクションを実行できるコンテナーです。

このアクティビティでは、処理を実行する表を列名と行番号を指定し、
処理対象のセルを指定することができます。

行番号は、対象の表を取得し、繰り返し処理を行う中で取得したIndexを使用することで
難なく指定することができたのですが、

列名は、表に対応するセレクターを指定すると、自動的に選択肢が表示されるので、
そこから、指定したい列を選択するという方法をとります。

セレクター選択後、▼マークを押下し、表示されたものがこちらです。

都合上、網掛けが多くわかりにくくて申し訳ないのですが、
こちらのアクティビティで表示されている列名は、SAP上に表示されている文字列と全く異なっています。

わかりやすい例で言うと、2列目と7, 8列目の項目は、
SAP上には列名がしっかり表示されているのですが、このアクティビティでは空白になっています。

今回は、2列目を指定する必要があったのですが、
その箇所では、列名が「””」になってしまいました。

どの列を指定しているのか大変わかりづらいですね~!!

ここに関しては。アクティビティが改善されたらいいな~!と思いました!!!

まとめ

今回、SAPの自動化を通して、学んだことは以下です。

  • SAPの設定は、実装前に確認する
    → サーバー側、クライアント側の設定をしっかり確認する
  • 表の入力には「テーブル セル スコープ」アクティビティを使用する
  • 「テーブル セル スコープ」アクティビティで指定する列名は、SAP上の列名と一致しないことがある

感想

壁にぶつかったときには一人で何とか解決しようとして、すごく苦しかったこともありますが、
周りの人の支えもあって、うまくいかないことすら楽しめました。

そして、一人でなんでもできるわけではなく、周りの人に支えられていることを改めて実感しました。

また、このロボットには、「生みの苦しみ」を学んだ分、愛着があります

とても大切に、誇りに思っているロボットです。

この経験を自分の糧にして、苦しいときには思い出して、
これからもUiPathエンジニア、頑張っていこう!と思いました。

助けていただいたみなさん、本当にありがとうございました。

助けていただいた分、わたしも、この記事でSAPの自動化をしている人のために少しでも力になれればと思います!

以上、やまさきあのお送りする
UiPathでのSAP自動化で学んだこと」でした!

最後まで読んでいただき、ありがとうございます(^^)/