UiPath Blog
UiPathの劉です。
最近、「UiPathを使ってSAP製品のオペレーションの自動化をしたいと考えているが、どうやって始めれば良いのか、どういう業務で使えるのか、どのように使うのか分からない・・・」といった声を多く耳にします。
本連載では、こういった課題を解消するために、SAPにまつわる業務の自動化に取り組まれる方を対象に、 SAPの基礎から、筆者も現場で活用しているSAP連携ソリューションの概要および開発ノウハウまで、幅広くお届けいたします。
今回の記事は、UiPath BAPI アクティビティの使い方について書かせていただきます。
SAP BAPI(Business Application Programming Interface の略)は、SAP ECCとS/4HANAの中で最も使われているAPI連携手法の一つです。ほかには、古くから使われているSAP IDoc(SAP Intermediate Document)、SAP RFC(SAP Remote Function Call)、SAP Netweaver Gatewayを経由したOdataインタフェース、SAP S/4 HANA Cloud で利用可能なOdataとSOAP API...と、様々なAPI連携手法があります。
個人的な所見ですが、SAP BAPIおよび、SAP RFCとSAP S/4 HANA Cloud で利用可能なOdataはSAPシステムの初心者にとっても、比較的に扱いやすいAPI連携手法になるのではないかと考えております。なぜかというと、これらのAPI連携手法は、SAPシステム側で複雑な設定を行う必要がなく利用可能になっているからです。
UiPathは、SAPのAPI連携に力を入れてきました。2019年よりいち早く、SAP BAPI と RFC両方 に対応可能なSAP BAPIアクティビティパックをUiPath Marketplaceで無償提供しています。また、OdataなどのREST APIに対応しているアクティビティパック(UiPath.Web.Activities)もUiPath Marketplaceで無償公開しています。
今回の記事では、SAP BAPI アクティビティパックの利用方法について説明していきます。
SAPシステムのBAPIをUiPath BAPIアクティビティから呼び出すには、事前に「SAP Connector for Microsoft .NET 3.0」という.NETのコネクター のインストールが必要です。.NETのコネクター をインストールする前に、「Microsoft C++ Runtime DLL version 10.0」がWindowsにインストールされる必要がありますが、こちらは、殆どの場合、Windows OSの定期的な自動更新によって「Microsoft Visual C++ 2010 Redistributable Package」に含まれています。
.NETのコネクターをインストールする際に、注意点が2つあります。
Windows OSが64bitでも、かならず「32bit版の「SAP Connector for Microsoft .NET 3.0」をダウンロードしてインストールしてください。
「SAP Connector for Microsoft .NET 3.0」インストール時に以下の図のように、「Install assemblies to GAC 」を選択してください。
UiPath BAPI アクティビティパックは、デフォルトのアクティビティパッケージに含まれていないため、Studioからそのまま利用できません。そのため、BAPIアクティビティを利用する際には、事前にUiPath Studio の「パッケージを管理」(Package Manager)からインストールしておく必要があります。
詳細のステップは以下の図の通りです。
インストールした後に、UiPath Studioのアクティビティパネルの検索ボックスに「SAP」を入れて検索すると、下図のようにBAPIアクティビティが表示されます。
UiPath BAPI アクティビティパックには以下の二つのアクティビティがあります。
「SAP アプリケーションスコープ」
「SAP BAPI を呼び出し」
こちらのアクティビティは、SAPシステム接続用のアクティビティです。「SAP BAPI を呼び出し」を利用する前に、まずこちらのアクティビティをセットする必要があります。このアクティビティにSAPに接続するための接続情報を入力し実行すると、SAPシステムから使いまわせる認証情報(コネクション)を取得できます。SAP GUIクライアントからログインするのと同じようなものとイメージしていただければと思います。
「SAP アプリケーションスコープ」アクティビティの「構成」ボタンをクリックすると、以下の画面が出てきます。
この画面には「Design Connection」と「Robot Connection」の2つのタブがあります。この2つのタブの入力項目は同じですが、目的・用途が異なります。「Design Connection」は、テスト接続用で、ここに入力した接続情報は実行時にはしません。一方で、「Robot Connection」タブに入力したデータは実行時に使用されます。そのため、「Design Connection」に接続情報を入力した後に、「テスト接続」をクリックし、接続成功のメッセージが出たら、「Copy to Robot Connection」ボタンをクリックし、入力した接続情報を「Robot Connection」にコピーしていきます。ただし、パスワードはコピーされないため、ご注意ください。
また、パスワードはセキュアパスワードしか入力できないので、UiPath OrchestratorのAssetsに保存されているパスワードを利用するか、以下のメソッドを使い、パスワードをセキュアパスワードに変換してからご利用ください。
new System.Net.NetworkCredential("","「ここにパスワードを入れる」").SecurePassword
「SAP BAPI を呼び出し」アクティビティは、「SAP アプリケーションスコープ」で取ってきた接続情報を使用し、SAPシステムと通信し、SAPシステム側のBAPIを呼び出してくれます。
「SAP アプリケーションスコープ」の構成を設定した後に、こちらのアクティビティを「SAP アプリケーションスコープ」アクティビティの中の「実行」シーケンスブロックに置きて使わなくてはなりません。言い換えれば、「SAP BAPI を呼び出し」アクティビティは単独で使えないです。
次に、「SAP アプリケーションスコープ」アクティビティの「構成」ボタンをクリックし、BAPIをコールするためのインタフェースを見ていきます。BAPI名で検索すると、該当BAPIの呼び出しに必要なパラメータが表示されます。デフォルトで表示されていない場合、右上の「パラメータを追加」(Add Parameters)をクリックし、オプションのパラメータを追加することができます。表示されたパラメータのデータタイプに合わせて変数などをセットするだけで、BAPIを呼び出し実行可能な状態になります。
また、右上の「パラメータをエクスポート」(Export Parameters)をクリックし、表示されたパラメータの入力項目がエクセルファイルとして出力されます。以下の図のように、出力されたエクセルファイルを利用して入力データや出力データの作成が簡単にできます。
では実際に、UiPathのBAPI連携アクティビティを利用し、SAPシステムに接続し簡単なBAPIを呼び出してみます。今回は、「BAPIMATERIALGET_DETAIL」というBAPIを利用し、品目コードが登録されているかを確認するサンプルワークフローを作成していきます。テストデータはご自身の環境に合わせて変更してください。
UiPath Studioを起動し、新規プロセスを作成した後に、「Main.xaml」に「SAP アプリケーションスコープ」を置きます。
「SAP アプリケーションスコープ」の構成を設定した後に、「テスト接続」をクリックし、成功メッセージが表示されたら、OKです。
「SAP BAPI を呼び出し」アクティビティを「SAP アプリケーションスコープ」アクティビティの中の「実行」シーケンスブロックに置き、「構成」をクリックした後に、以下の図のように、BAPIを検索し、必要なパラメータ(PLANTとMATERIAL)を追加します。
この状態で「パラメータをエクスポート」をクリックし、エクセルファイルを出力します。出力したエクセルファイルをプロジェクトの直下に格納します。下図のように、出力されたエクセルファイル「BAPIMATERIALGET_DETAIL.xlsx」が、プロジェクトの直下に格納されます。
ここまでで、必要なパラメータの設定とパラメータの入出力項目の情報が把握できました。次からは、各種パラメータに入出力データをセットしていきます。必要な項目とデータは以下の通りです。
MATERIAL:マテリアルコード(注:こちらは固定長18桁です。18桁に達していない場合、先頭に0埋めする必要があります)
PLANT:プラントコード
RETURN:処理結果を出力するパラメータです。キーボード操作「Ctrl + k」で「Result」という変数を作成します。
MATERIALGENERALDATA:こちらはDataRow型の出力パラメータです。一旦空白にし、後で埋めていきます。
「MATERIALGENERALDATA」は出力パラメータで、DataRow型の変数が必要です。こちらに関して、パラメータ情報が出力されたエクセルファイルを利用し、適切な変数をセットします。 出力されたエクセルファイルには「MATERIALGENERALDATA」シートがあるはずです。そこからどんなデータ出力されるかを確認できます。言い換えれば、このシートのデータ項目に合わせて処理結果が出力されるはずです。そのため、このシートの「A」列以外のデータカラムを持つDataRowタイプの変数をセットすれば良いというのが分かります。
出力されたエクセルファイルのMATERIALGENERALDATA」シートを「範囲を読込み」アクティビティで読込み、結果を「dtData」という変数に格納します。「dtData」をもとに、空白行一行を作成し、「MaterialGeneralDataRow」という新規作成した変数に格納します。これで、「MATERIALGENERALDATA」シートの「A」列以外のデータカラムを持つDataRowタイプの変数「MaterialGeneralDataRow」を作成できました。
「MaterialGeneralDataRow」変数を 5.の「MATERIALGENERALDATA」パラメータにセットします。
出力結果を格納されている「MaterialGeneralDataRow」変数を、DataTable型の「dtData」変数に足していきます。これは、次のステップで出力した品目詳細データをエクセルファイルに出力するための準備です。
処理結果をファイルに書き込みます。
「MATERIALGENERALDATA」パラメータの出力結果をエクセルファイル「BAPIMATERIALGET_DETAIL.xlsx」に書き込みます。こちらでは、「範囲に書き込み」アクティビティを使用します。
処理結果が成功しているか失敗しているか「Result」変数から取得します。取得した結果を「メッセージ ボックス」アクティビティに出力します。
すべてが完了したら、以下の図のようなフローになっているはずです。
ワークフローを実行し、実行結果は、メッセージボックスと「BAPIMATERIALGETDETAIL.xlsx」の「MATERIALGENERAL_DATA」シートから確認できます。以下は弊社の検証環境で実行した結果です。
以上、UiPath BAPI アクティビティの使い方を簡単にご紹介させていただきました。皆様の自動化開発にご参考になれば、大変嬉しく思います。
また、今回は、単純なデータ取得のBAPIの紹介に留まりますが、複数のヘッダーデータと明細データを繰り返して入力するような場合については、UiPath Accelerators for SAPのBAPI部品をご参照ください。こちらに関しては、利用マニュアルが充実していますが、別の記事でも詳細を紹介していきたいと思います。
最後に今回の記事の中で取り上げた部品のリンク先などをお知らせします。
SAP BAPI Activities Pack: https://docs.uipath.com/activities/lang-ja/docs/about-the-sap-bapi-activities-pack
UiPath Accelerators for SAP: https://marketplace.uipath.com/bundles/sap
また、SAP製品のオペレーションの自動化、S/4HANAへの移行、会社全体のDXなどについてもっと知りたい方は、ぜひ弊社までご連絡ください。
Topics:
SAP AutomationSenior Sales Engineer, UiPath