Azure Logic Apps のワークフローから SAP に接続します。
適用対象: Azure Logic Apps (従量課金 + Standard)
このマルチパートの攻略ガイドでは、SAP コネクタを使用して Azure Logic Apps でワークフローから SAP サーバーにアクセスする方法について説明します。 SAP コネクタの操作を使って、SAP サーバーまたは他のシステムのイベントでトリガーされたときに実行される自動ワークフローを作成し、SAP サーバー上のリソースを管理するアクションを実行することができます。
Standard と従量課金の両方のロジック アプリ ワークフローで、マルチテナント Azure でホストおよび実行される SAP "マネージド" コネクタが提供されています。 Standard のワークフローでは、シングルテナントの Azure Logic Apps でホストおよび実行される SAP 組み込み コネクタも提供されます。 詳細については、コネクタの技術リファレンスを参照してください。
SAP 互換性
SAP コネクタは、次の種類の SAP システムと互換性があります。
オンプレミスおよびクラウドベースの HANA ベースの SAP システム (S/4 HANA など)。
従来のオンプレミスの SAP システム (R/3 や ECC など)。
SAP は、接続する SAP システムのバージョンをサポートしている必要があります。 そうしないと、発生する可能性のある問題が解決できない可能性があります。 SAP システムのバージョンとメンテナンス情報の詳細については、「SAP 製品の可用性マトリックス (PAM)」を参照してください。
SAP コネクタでは、SAP NetWeaver ベースのシステムの、次のメッセージとデータ統合の種類がサポートされています。
Intermediate Document (IDoc)
ビジネス アプリケーション プログラミング インターフェイス (BAPI)
Remote Function Call (RFC) と Transactional RFC (tRFC)
SAP コネクタでは、SAP .NET Connector (NCo) ライブラリが使用されています。
SAP コネクタの操作を使用するには、まず接続を認証する必要があり、次のオプションがあります。
ユーザー名とパスワードを指定できます。
SAP コネクタでは、SAP Secure Network Communications (SNC) を使用する認証がサポートされています。
SNC は、SAP NetWeaver シングル サインオン (SSO)、または外部製品のセキュリティ機能に使用できます。 SNC を使用する場合は、「SNC の前提条件」を確認してください。
コネクタに関するテクニカル リファレンス
SAP コネクタには、ロジック アプリの種類とホスト環境に基づいてさまざまなバージョンがあります。
ロジック アプリ | 環境 | コネクタのバージョン |
---|---|---|
従量課金プラン | マルチテナント Azure Logic Apps | マネージド コネクタ。コネクタ ギャラリーの [ランタイム]>[共有] の下に表示されます。 詳細については、次のドキュメントを確認してください。 - SAP マネージド コネクタのリファレンス - Azure Logic Apps のマネージド コネクタ |
Standard | シングルテナント Azure Logic Apps と App Service Environment v3 (Windows プランのみ) | マネージド コネクタはコネクタ ギャラリーの [ランタイム]>[共有] に表示されます。組み込みコネクタはコネクタ ギャラリーの [ランタイム]>[アプリ内] に表示され、 サービス プロバイダーベースです。 組み込みコネクタは、オンプレミス データ ゲートウェイなしで接続文字列を使用して Azure 仮想ネットワークに直接アクセスできます。 詳細については、次のドキュメントを確認してください。 - SAP マネージド コネクタのリファレンス - SAP 組み込みコネクタのリファレンス - Azure Logic Apps のマネージド コネクタ - Azure Logic Apps の組み込みコネクタ |
コネクタの相違点
SAP 組み込みコネクタは、次の点で SAP マネージド コネクタと大きく異なります。
オンプレミス接続では、オンプレミス データ ゲートウェイは必要ありません。
代わりに、SAP 組み込みコネクタは統合仮想ネットワーク内の SAP サーバーと直接通信するため、ネットワーク ゲートウェイのホップ、待機時間、障害ポイントを回避できます。 ロジック アプリ ワークフロー アプリケーションを使用して、再頒布不可能な SAP クライアント ライブラリをアップロードまたはデプロイしてください。 詳細については、このガイドの前提条件を参照してください。
最大 100 MB のペイロード サイズがサポートされているため、大きな要求に BLOB URI を使用する必要はありません。
特定のアクションを、 BAPI の呼び出し、RFC の呼び出し、および IDoc の送信に使用できます。 これらの専用アクションは、ステートフル BAPI、RFC トランザクション、IDoc 重複除去のエクスペリエンスを向上させ、以前の SOAP Windows Communication Foundation (WCF) メッセージング モデルを使用しません。
BAPI の呼び出しアクションには、最大 2 つの応答と、返される JSON、呼び出される BAPI からの XML 応答、BAPI コミットまたは BAPI ロールバック応答 (オート コミットを使用する場合) が含まれます。 この機能は、オート コミットからの結果がサイレントでログ経由でのみ監視できる SAP マネージド コネクタの問題に対処します。
タイムアウトは 5 分であり、マネージド コネクタと比較して長くなっています。
SAP 組み込みコネクタでは、共有またはグローバルのコネクタ インフラストラクチャは使用されないため、タイムアウトは SAP マネージド コネクタ (2 分) と比較して長い 5 分となっています。 実行時間の長い要求は、実行時間の長い Webhook ベースの要求アクション パターンを実装しなくても機能します。
既定では、SAP 組み込みコネクタの操作はステートレスです。 ただし、 これらの操作に対してステートフル モード (アフィニティ) を有効にすることができます。
ステートフル モードでは、SAP 組み込みコネクタは高可用性と水平方向のスケールアウト構成をサポートします。 これに対し、SAP マネージド コネクタには、オンプレミス データ ゲートウェイに関する制約があり、トリガーは 1 つのインスタンスに制限され、アクションはフェールオーバー モードでのみクラスターに制限されます。 詳細については、「SAP マネージド コネクタ - 既知の問題と制限事項」を参照してください。
Standard ロジック アプリ ワークフローでは、SAP NCo 3.0 バージョンではなく、SAP NCo 3.1 クライアント ライブラリが必要であり、使用されます。 詳細については、「前提条件」を参照してください。
Standard ロジック アプリ ワークフローでは、パーソナル セキュリティ環境 (PSE) と PSE パスワードを指定できるアプリケーション設定が用意されています。
この変更により、複数の PSE ファイルをアップロードできなくなります。この操作はサポートされていないため、SAP 接続エラーが発生します。 従量課金ロジック アプリ ワークフローでは、SAP マネージド コネクタを使用すると、接続パラメーターを通じてこれらの値を指定できます。これにより、複数の PSE ファイルをアップロードできましたが、この操作はサポートされていないため、SAP 接続エラーが発生します。
スキーマの生成アクション
SapActionUris パラメーターとファイル システム ピッカー エクスペリエンスを使用する SAP マネージド コネクタの同じアクションに対して、BAPI、IDoc、RFC、tRFC などの複数の操作の種類から選択できます。
パラメーター名は、カスタム値として直接指定できます。 たとえば、RFC の呼び出しアクションから [RFC 名] パラメーターを指定できます。 これに対し、SAP マネージド コネクタでは、複雑な [アクション URI] パラメーター名を指定する必要がありました。
設計上、このアクションでは、SAP マネージド コネクタがサポートする、単一アクションの実行での RFC、BAPI、または IDoc の複数スキーマの生成はサポートされていません。 この機能の変更により、1 回の呼び出しで大量のコンテンツを送信しようとするのを防ぐことができるようになりました。
コネクタのパラメーター
SAP コネクタは、単純な文字列と数値の入力と共に、次のテーブル パラメーター (Type=ITAB
入力) を受け取ります。
- 以前の SAP リリースのテーブル方向パラメーター (入力と出力の両方)。
- パラメーターの変更により、新しい SAP リリースのテーブル方向パラメーターが置き換えられます。
- 階層テーブル パラメーター。
既知の問題と制限事項
SAP マネージド コネクタ
現在、SAP コネクタは SAP ルーター文字列をサポートしていない。 オンプレミス データ ゲートウェイは、接続する SAP システムにゲートウェイが直接到達できる仮想ネットワーク上に存在する必要があります。
一般に、SAP トリガーでデータ ゲートウェイ クラスターがサポートされない。 フェールオーバーで、SAP システムと通信するデータ ゲートウェイ ノードがアクティブなノードと異なる場合があり、結果として、予想外の動作が発生します。
メッセージ送信シナリオの場合、フェールオーバー モードのデータ ゲートウェイ クラスターがサポートされます。
ステートフル SAP アクションでは、負荷分散モードのデータ ゲートウェイ クラスターはサポートされません。 ステートフル通信は、同じデータ ゲートウェイ クラスター ノードに保持する必要があります。 非クラスター モードで、またはフェールオーバー用に設定されているクラスターで、データゲート ウェイを使用してください。 たとえば、これらのアクションには次のようなものがあります。
- セッション ID 値を指定するすべてのアクション
- [BAPI] トランザクションのコミット
- [BAPI] トランザクションのロールバック
- [BAPI - RFC] ステートフル セッションの終了
- [BAPI - RFC] ステートフル セッションの作成
[[BAPI] Call method in SAP] ([BAPI] SAP でのメソッドの呼び出し) という名前のアクションでは、アクションから返される CallBapiResponse オブジェクトに少なくとも 1 つの警告が存在する場合、自動コミット機能によって BAPI の変更はコミットされません。 警告があっても BAPI の変更をコミットするには、次の手順に従います。
- [[BAPI - RFC] Create stateful session] ([BAPI - RFC] ステートフル セッションの作成) というアクションを使用して、セッションを明示的に作成します。
- [[BAPI] Call method in SAP] ([BAPI] SAP のメソッドを呼び出す) という名前のアクションで、自動コミット機能を無効にします。
- 代わりに、[[BAPI] Commit transaction] ([BAPI] トランザクションのコミット) という名前のアクションを呼び出します。
SAP Message Server への IP ベースの接続 (負荷分散構成)
ロード バランサーなどの SAP メッセージ サーバーに接続するために IP アドレスを指定した場合でも、"hostname SAPDBSERVER01.example.com が不明です" のようなエラー メッセージが表示されて接続に失敗することがあります。 メッセージ サーバーは、バックエンドの SAP アプリケーション サーバー、またはロード バランサーの背後にあるサーバーへの接続にホスト名を使用するように SAP コネクタに指示します。 DNS がホスト名を解決できない場合、接続は失敗します。
この問題に対しては、次の回避策やソリューションを使用してください。
SAP コネクタ用にオンプレミス データ ゲートウェイを使用するコンピューターなど、接続を行うクライアントが、メッセージ サーバーから返されたホスト名を確実に解決できるようにしてください。
RZ11 という名前のトランザクションで、ms/lg_with_hostname=0 という名前の SAP 設定を変更または追加します。
問題のコンテキストまたは背景
SAP では、.NET コネクタ (NCo) がバージョン 3.1 にアップグレードされ、コネクタがメッセージ サーバーからバックエンド サーバーへの接続を要求する方法が変更されました。 ms/lg_with_hostname=0` という名前の設定を通じて以前の API を使用することを強制しない限り、コネクタはメッセージ サーバーによるアプリケーション サーバーの解決に新しい API を使用するようになりました。 詳細については、「SAP KB 記事 3305039 - ログオン グループ ログイン中に SMLG IP 設定が考慮されていません」を参照してください。
前提条件
Azure アカウントとサブスクリプション。 Azure サブスクリプションがない場合は、無料の Azure アカウントにサインアップしてください。
Azure Logic Apps からアクセスする SAP アプリケーション サーバーまたは SAP メッセージ サーバー。
RFC の使用を許可するように、SAP サーバーとユーザー アカウントを設定します。
サポートされているユーザー アカウントの種類と、各アクションの種類 (RFC、BAPI、IDoc) に必要な最小限の承認を含む詳細については、「SAP Note: 460089 - 外部 RFC プログラムの最小承認プロファイル」を参照してください。
SAP ユーザー アカウントでは、次の操作のために、
RFC_METADATA
関数グループとそれぞれの汎用モジュールにアクセスする必要があります。Operations 関数モジュールへのアクセス RFC アクション RFC_GROUP_SEARCH
およびDD_LANGU_TO_ISOLA
BAPI アクション BAPI_TRANSACTION_COMMIT
、BAPI_TRANSACTION_ROLLBACK
、RPY_BOR_TREE_INIT
、SWO_QUERY_METHODS
、およびSWO_QUERY_API_METHODS
IDoc アクション IDOCTYPES_LIST_WITH_MESSAGES
、IDOCTYPES_FOR_MESTYPE_READ
、INBOUND_IDOCS_FOR_TID
、OUTBOUND_IDOCS_FOR_TID
、GET_STATUS_FROM_IDOCNR
、IDOC_RECORD_READ
SAP テーブルの読み取りアクション RFC BBP_RFC_READ_TABLE
またはRFC_READ_TABLE
のいずれかSAP 接続用に SAP サーバーへの厳密な最小限アクセス許可の付与 RFC_METADATA_GET
およびRFC_METADATA_GET_TIMESTAMP
SAP サーバーにアクセスするロジック アプリ ワークフロー。
マルチテナント Azure Logic Apps の従量課金ワークフローについては、マルチテナントの前提条件に関するセクションを参照してください。
シングルテナント Azure Logic Apps の Standard ワークフローについては、シングルテナントの前提条件に関するセクションを参照してください。
既定では、SAP 組み込みコネクタの操作はステートレスです。 ステートフル モードでこれらの操作を実行するには、「ステートレス組み込みコネクタのステートフル モードを有効にする」を参照してください。
[When a message is received from SAP] (SAP からのメッセージの受信時) という名前の SAP マネージド コネクタ トリガーまたは SAP 組み込みトリガーを使用するには、次のタスクを実行してください。
SAP ゲートウェイのセキュリティ アクセス許可またはアクセス制御リスト (ACL) を設定します。 secinfo および reginfo ファイルが表示されている [ゲートウェイ モニター] (T-Code SMGW) ダアログ ボックスで、[移動] メニューを開き、[専門機能]>[外部セキュリティ]>[ACL ファイルのメンテナンス] を選択します。
次のアクセス許可設定が必要です。
P TP=LOGICAPP HOST=<on-premises-gateway-server-IP-address> ACCESS=*
この行の形式は次のとおりです。
P TP=<trading-partner-identifier-(program-name)-or-*-for-all-partners> HOST=<comma-separated-list-with-external-host-IP-or-network-names-that-can-register-the-program> ACCESS=<*-for-all-permissions-or-a-comma-separated-list-of-permissions>
SAP ゲートウェイのセキュリティ アクセス許可を構成しない場合は、次のエラーが発生する可能性があります。
ホスト <ホスト名> からの tp Microsoft.PowerBI.EnterpriseGateway の登録は許可されていません
詳細については、SAP Note 1850230 - GW: 「tp <プログラム ID> の登録が許可されていない」を参照してください。
アクセス制御リスト (ACL) の問題を検索するために、SAP ゲートウェイのセキュリティ ログを設定します。 詳細については、「ゲートウェイのログ記録の設定に関する SAP ヘルプ トピック」を参照してください。
[Configuration of RFC Connections (RFC 接続の構成)] (T コード SM59) ダイアログ ボックスで、TCP/IP タイプの RFC 接続を作成します。 [アクティブ化の種類] が [登録済みサーバーのプログラム] に設定されていることを確認します。 RFC 接続の [Communication Type with Target System (対象システムとの通信タイプ)] の値を Unicode に設定します。
このSAP トリガーの IDOC Format パラメーターを FlatFile に設定して Flat File Decode action と一緒に使用する場合、フラット ファイル スキーマの
early_terminate_optional_fields
プロパティをtrue
に設定する必要があります。この要件が必要なのは、tRFC 呼び出し
IDOC_INBOUND_ASYNCHRONOUS
では、SAP によって送信されるフラット ファイル IDoc データ レコードが、SDATA フィールドの長さ全体にパディングされないためです。 Azure Logic Apps では、SAP から受信したままの、パディングされていないフラット ファイル IDoc の元のデータが提供されます。 また、この SAP トリガーを [Flat File Decode] (フラット ファイルのデコード) アクションと組み合わせる場合、アクションに提供されるスキーマが一致する必要があります。従量課金ワークフローと Standard ワークフローでは、[When a message is received ] (メッセージを受信したとき) という名前の SAP マネージド トリガーは、同じ URI の場所を使用して、Webhook サブスクリプションの更新と登録解除の両方を行います。 更新操作では HTTP
PATCH
メソッドを使用し、登録解除操作では HTTPDELETE
メソッドを使用します。 この動作により、トリガーの履歴に更新操作が登録解除操作として表示される場合がありますが、トリガーでは HTTP メソッドとしてDELETE
ではなくPATCH
を使用しているため、その操作は更新になります。Standard ワークフローの [When a message is received ] (メッセージを受信したとき) という名前の SAP 組み込みトリガーでは、代わりに Azure Functions トリガーが使用され、SAP からの実際のコールバックのみが表示されます。
[When a message is received ] (メッセージを受信したとき) という名前の SAP 組み込みコネクタ トリガーの場合は、「Standard のステートフル Logic Apps に対する Service Bus と SAP 組み込みコネクタの有効化」という記事の内容に従って、仮想ネットワークの統合とプライベート ポートを有効にする必要があります。 また、このトリガーをローカルで起動するには、Visual Studio Code でワークフローを実行します。 Visual Studio Code のセットアップ要件と詳細については、「Visual Studio Code を使用してシングルテナント Azure Logic Apps 用の Standard ロジック アプリ ワークフローを作成する」を参照してください。 また、Visual Studio Code をインストールするコンピューターに次の環境変数を設定する必要があります。
- WEBSITE_PRIVATE_IP: この環境変数の値を localhost アドレスとして 127.0.0.1 に設定します。
- WEBSITE_PRIVATE_PORTS: この環境変数の値を、ローカル コンピューターの、空いていて使用可能な 2 つのポートに設定し、値をコンマ (,) で区切ります (例: 8080,8088)。
SAP サーバーに送信するメッセージの内容 (サンプル IDoc ファイルなど)。 この内容は XML 形式とし、使用する SAP アクションの名前空間を含める必要があります。 XML エンベロープにラップすることによって、フラット ファイル スキーマを持つ IDoc を送信することができます。
ネットワーク接続の前提条件
SAP システムには、SAP .NET Connector (NCo) ライブラリのホストからのネットワーク接続が必要です。
マルチテナント Azure Logic Apps の従量課金ロジック アプリ ワークフローの場合、SAP .NET Connector (NCo) ライブラリはオンプレミス データ ゲートウェイでホストされます。 オンプレミス データ ゲートウェイ クラスターを使用する場合は、クラスターのすべてのノードで SAP システムへのネットワーク接続を必要とします。
シングルテナント Azure Logic Apps の Standard ロジック アプリ ワークフローの場合、ロジック アプリ リソースが SAP .NET Connector (NCo) ライブラリをホストします。 そのため、ロジック アプリ リソース自体で仮想ネットワーク統合を有効にし、その仮想ネットワークが SAP システムにネットワーク接続されている必要があります。
SAP システムに必要なネットワーク接続には、次のサーバーとサービスが含まれています。
SAP アプリケーション サーバー、ディスパッチャー サービス (すべてのログオンの種類用)
SAP システムには、複数の SAP アプリケーション サーバーを含めることができます。 SAP .NET Connector (NCo) ライブラリのホストは、各サーバーとそのサービスへのアクセスを必要とします。
SAP メッセージ サーバー、メッセージ サービス (ログオンの種類のグループ)
メッセージ サーバーとサービスは、1 つまたは複数のアプリケーション サーバーのディスパッチャー サービスにリダイレクトされます。 SAP .NET Connector (NCo) ライブラリのホストは、各サーバーとそのサービスへのアクセスを必要とします。
SAP ゲートウェイ サーバー、ゲートウェイ サービス
SAP ゲートウェイサーバー、ゲートウェイで保護されたサービス
SAP システムに必要なネットワーク接続には、セキュア ネットワーク通信 (SNC) と共に使用する、このサーバーとサービスも含まれます。
アプリケーション サーバー、ディスパッチャー サービスからゲートウェイ サーバー、ゲートウェイ サービスへの要求のリダイレクトは、SAP .NET Connector (NCo) ライブラリ内で自動的に行われます。 このリダイレクトは、アプリケーション サーバー、ディスパッチャー サービス情報のみが接続パラメーターに指定されている場合でも発生します。
SAP システムの前でロード バランサーを使用している場合、すべてのサービスをそれぞれのサーバーにリダイレクトする必要があります。 SAP サービスとポートの詳細については、「TCP/IP Ports of All SAP Products」(すべての SAP 製品の TCP/IP ポート) を確認してください。
Note
SAP .NET Connector (NCo) ライブラリのホストからのネットワーク接続が有効になっていること、および必要なポートがファイアウォールとネットワーク セキュリティ グループで開かれていることを確認してください。 そうしないと、NI (ネットワーク インターフェイス) コンポーネントから "パートナーに到達できない" などのエラーが発生し、"WSAECONNREFUSED: 接続が拒否された" などのエラー テキストが表示されます。
SAP NCo クライアント ライブラリの前提条件
SAP コネクタを使用するには、Microsoft .NET 3.1 用 SAP コネクタ NCo クライアント ライブラリをインストールする必要があります。 SAP コネクタで使用するワークフローに基づいて、SAP NCo クライアント ライブラリの前提条件を次のリストで説明します。
バージョン:
オンプレミス データ ゲートウェイを使用する従量課金ロジック アプリ ワークフローの場合、最新の 64 ビット バージョンの Microsoft .NET 3.1.3.0 for Windows 64bit (x64) 用の SAP コネクタをインストールしてください。 データ ゲートウェイは 64 ビット システムでのみ動作します。 サポートされていない 32 ビット版をインストールすると、"イメージが無効" のエラーが発生します。
Standard ロジック アプリ ワークフローの場合は、.NET Framework 4.6.2 でコンパイルされた Microsoft .NET 3.1.3.0 用の SAP Connector (NCo 3.1) の最新の 64 ビットまたは 32 ビット バージョンをインストールできます。 ただし、Standard ロジック アプリ リソースの構成と一致するバージョンをインストールしてください。 ロジック アプリで使用されているバージョンを確認するには、次の手順に従います。
Azure portal で、Standard ロジック アプリ リソースを開きます。
ロジック アプリのリソース メニューの [設定] で、[構成] を選択します。
[構成] ページで、[全般設定] タブを選びます。[プラットフォームの設定] で、[プラットフォーム] の値が [64 ビット] と [32 ビット] のどちらに設定されているか調べます。
.NET Framework 4.6.2 でコンパイルされた Microsoft .NET 3.1.3.0 用 SAP コネクタ (NCo 3.1) の、お使いのプラットフォーム構成に適合するバージョンを必ずインストールしてください。
クライアント ライブラリの既定のインストール フォルダーから、自身のシナリオに応じて、次のようにアセンブリ (.dll) ファイルを別の場所にコピーします。 または、必要に応じて、SAP マネージド コネクタのみを使用している場合は、SAP NCo クライアント ライブラリをインストールするときに、[Global Assembly Cache registration] (グローバル アセンブリ キャッシュの登録) を選択します。 現在、SAP 組み込みコネクタで GAC 登録はサポートされていません。
マルチテナント Azure Logic Apps で実行し、オンプレミス データ ゲートウェイを使う従量課金ワークフローの場合は、以下のアセンブリ (.dll) ファイルを、オンプレミス データ ゲートウェイのインストール フォルダー (例: C:\Program Files\On-Premises Data Gateway) にコピーします。 SAP NCo 3.0 クライアント ライブラリには、これらのアセンブリが含まれています。
- libicudecnumber.dll
- rscp4n.dll
- sapnco.dll
- sapnco_utils.dll
必ずアセンブリ ファイルをデータ ゲートウェイの "インストール フォルダー" にコピーしてください。 そうしないと、SAP 接続が "アカウント情報またはアクセス許可をチェックしてから、もう一度お試しください" というエラー メッセージで失敗する場合があります。 .NET アセンブリ バインド ログ ビューアーを使用して、さらに問題のトラブルシューティングを行うことができます。 このツールを使用すると、アセンブリ ファイルが正しい場所にあるかどうかを確認できます。
標準ワークフローの場合は、以下のアセンブリ (.dll) ファイルを、構築するワークフローの環境であるロジック アプリ リソースまたはプロジェクトに対してアップロードが可能な場所 (どちらの環境かに応じて、Azure portal 上または Visual Studio Code ローカル) にコピーします。 SAP NCo 3.1 クライアント ライブラリには、これらのアセンブリが含まれています。
- rscp4n.dll
- sapnco.dll
- sapnco_utils.dll
SAP NCo クライアント ライブラリ、.NET Framework、.NET ランタイム、データ ゲートウェイの間には次の関係が存在します。
Microsoft SAP アダプターとゲートウェイ ホスト サービスでは、どちらも .NET Framework 4.7.2 が使用されます。
SAP NCo for .NET Framework 4.0 は、.NET ランタイム 4.0 から 4.8 を使用するプロセスとの組み合わせで正しく動作します。
SAP NCo for .NET Framework 2.0 は、.NET ランタイム 2.0 から 3.5 を使用するプロセスで正しく動作しますが、最新のゲートウェイでは動作しなくなりました。
SNC の前提条件
オンプレミス データ ゲートウェイと必要に応じて SNC を使用する、マルチテナント Azure Logic Apps の従量課金ワークフローの場合は、次の設定も構成する必要があります。
SNC ライブラリのバージョンとその依存関係が、SAP 環境と互換性があることを確認します。 ライブラリの互換性に関する問題のトラブルシューティングを行うには、オンプレミス データ ゲートウェイとデータ ゲートウェイのログを使用します。
SAP NCo 3.0 クライアント ライブラリから、以下のアセンブリ (.dll) ファイルを、オンプレミス データ ゲートウェイのインストール フォルダー (例: C:\Program Files\On-Premises Data Gateway) に確実にコピーします。
- libicudecnumber.dll
- rscp4n.dll
- sapnco.dll
- sapnco_utils.dll
SAPGENPSE ユーティリティーについては、sapgenpse.exe を明示的に使用する必要があります。
接続に Personal Security Environment (PSE) を提供する場合、オンプレミス データ ゲートウェイ用に PSE と SECUDIR をコピーして設定する必要はありません。
sapseculib、Kerberos、NTLM などの外部セキュリティ製品を使用して SNC を有効にする場合は、データ ゲートウェイのインストールと同じコンピューターに SNC ライブラリが存在している必要があります。 このタスクのために、SNC ライブラリのバイナリ ファイルを、データ ゲートウェイがローカル コンピューター上にインストールされている場所と同じフォルダー (C:\Program Files\On-Premises Data Gateway) にコピーします。
Note
データ ゲートウェイと SNC ライブラリがインストールされているコンピューターでは、SNC_LIB と SNC_LIB_64 の環境変数を設定しないでください。 そうしないと、これらの変数が、コネクタを介して渡される SNC ライブラリ値よりも優先されてしまいます。
SNC で SSO で使用する場合は、データ ゲートウェイ サービスが、SAP ユーザーにマップされたユーザーとして実行されていることを確認してください。 ゲートウェイ サービス アカウントの既定のアカウントを変更するには、[アカウントの変更] を選択し、ユーザーの資格情報を入力します。
SNC を有効にする方法の詳細については、「Secure Network Communications (SNC) を有効にする」を参照してください。
Azure Logic Apps 環境の前提条件
マルチテナント Azure Logic Apps の従量課金ワークフローの場合、SAP マネージド コネクタは、オンプレミス データ ゲートウェイを介して SAP システムと統合されます。 たとえば、ワークフローから SAP システムにメッセージが送信されるシナリオでは、データ ゲートウェイが RFC クライアントとして機能し、ワークフローから受信した要求を SAP に転送します。 同様に、ワークフローが SAP からメッセージを受信するシナリオでは、データ ゲートウェイは SAP から要求を受信してワークフローに転送する RFC サーバーとして機能します。
接続先の SAP システムと同じ仮想ネットワーク内に存在するホスト コンピューターまたは仮想マシンで、オンプレミス データ ゲートウェイをダウンロードしてインストールします。
データ ゲートウェイを使用することで、オンプレミスのデータやリソースに安全にアクセスすることができます。 使用しているゲートウェイが、サポートされているバージョンであることを確認してください。 ゲートウェイに問題が発生した場合は、最新バージョンへのアップグレードを試してみてください。これには、問題を解決する更新プログラムが含まれている可能性があります。
Azure portal で、オンプレミス データ ゲートウェイのインストール用の Azure ゲートウェイ リソースを作成します。
オンプレミス データ ゲートウェイのインストールと同じローカル コンピューターに、最新の SAP NCo クライアント ライブラリをダウンロードしてインストールします。
オンプレミス データ ゲートウェイがインストールされているホスト コンピューターについて、ネットワーク ホスト名とサービス名の解決を構成します。
Azure Logic Apps からの接続にホスト名またはサービス名を使用するには、各 SAP Application、Message、Gateway サーバーとそのサービス用に名前解決を設定する必要があります。
%windir%\System32\drivers\etc\hosts ファイルまたはオンプレミスのデータ ゲートウェイ ホスト コンピューターで使用できる DNS サーバーで、ネットワーク ホスト名の名前解決を設定します。
%windir%\System32\drivers\etc\services ファイルで、サービスの名前解決を設定します。
接続にネットワーク ホスト名またはサービス名を使用しない場合は、代わりにホスト IP アドレスとサービス ポート番号を使用できます。
SAP システムの DNS エントリをお持ちではない場合、次の例は hosts ファイルのサンプル エントリを示しています。
10.0.1.9 sapserver # SAP single-instance system host IP by simple computer name 10.0.1.9 sapserver.contoso.com # SAP single-instance system host IP by fully qualified DNS name
次のリストは、サービス ファイルのエントリのサンプル セットを示しています。
sapdp00 3200/tcp # SAP system instance 00 dialog (application) service port sapgw00 3300/tcp # SAP system instance 00 gateway service port sapmsDV6 3601/tcp # SAP system ID DV6 message service port
Secure Network Communications (SNC) を有効にする
マルチテナント Azure Logic Apps で実行される従量課金ワークフローの場合、認証用に SNC を有効にできます。これは、データ ゲートウェイを使う場合にのみ適用されます。 開始する前に、必要なすべての前提条件と SNC の前提条件を満たしていることを確認してください。
Azure portal で、従量課金ロジック アプリとワークフローをデザイナーで開きます。
SAP マネージド コネクタ操作を追加または編集します。
SAP 接続の情報ボックスに、以下の必須情報を指定します。 選択した [認証の種類] によって、使用可能なオプションが変わります。
注意
[SAP ユーザー名] と [SAP パスワード] フィールドは省略可能です。 ユーザー名とパスワードを指定しない場合、コネクタは、後の手順で提供されるクライアント証明書を認証に使用します。
SNC を有効にするには、SAP 接続の情報ボックスで、代わりに以下の必須情報を指定します。
パラメーター 説明 SNC を使用する チェックボックスをオンにします。 SNC ライブラリ 次のいずれかの値を入力します。
- SNC ライブラリの名前 (例: sapsnc.dll)
- NCo のインストール場所への相対パス (例: .\security\sapsnc.dll)
- NCo のインストール場所への絶対パス (例: c:\security\sapsnc.dll)SNC SSO [Logon using the SNC identity] (SNC ID を使用してログオンする) または [Logon with the username/password provided on RFC level] (RFC レベルで指定されたユーザー名/パスワードでログオンする) を選択します。
通常、呼び出し元の認証には SNC ID が使用されます。 代わりにユーザー名とパスワードで認証することも選択できますが、このパラメーター値は暗号化されたままです。SNC の自分の名前 ほとんどの場合、この値は省略できます。 インストールされている SNC ソリューションは、通常、独自の SNC 名を認識しています。 ソリューションで複数の ID がサポートされている場合は、この特定の宛先またはサーバーに使用する ID を指定する必要がある場合があります。 SNC パートナー名 バックエンド SNC の名前 (p:CN=DV3, OU=LA, O=MS, C=US など) を入力します。 保護の SNC 品質 この特定の宛先またはサーバーで SNC 通信に使用するサービスの品質を選びます。 既定値は、バックエンド システムによって定義されます。 最大値は、SNC のために使用されるセキュリティ製品によって定義されます。 SNC 証明書 クライアントを SAP に識別するために使用する証明書の base64 でエンコードされた公開キーを入力します。
注: - PEM ヘッダーおよびフッターは含めないでください。
- クライアント証明書の秘密キーをここに入力しないでください。 個人用セキュリティ環境 (PSE) には、この証明書の一致する秘密キーが含まれている必要があり、他のプライベート証明書が含まれている可能性があります。 詳細については、次のパラメーターを確認してください。PSE SNC Personal Security Environment (PSE) を base64 でエンコードされたバイナリとして入力します。
- PSE には、拇印が SNC 証明書パラメーターのクライアント証明書の公開キーと一致するクライアント証明書の秘密キーが含まれている必要があります。
- PSE には複数のクライアント証明書が含まれている場合がありますが、異なるクライアント証明書を使用するには、代わりに個別のワークフローを作成します。
- Standard ロジック アプリ リソースに複数の SNC クライアント証明書を使用している場合は、すべての接続に同じ PSE を指定する必要があります。 PSE には、各接続とすべての接続のクライアント証明書に対応する秘密キーが含まれている必要があります。 SNC 証明書パラメーターを、各接続の特定のプライベート証明書と一致するように設定する必要があります。接続の作成を完了するために、[作成] を選択します。
パラメーターが正しい場合は、接続が作成されます。 パラメーターに問題がある場合は、接続の作成ダイアログにエラー メッセージが表示されます。 接続パラメーターの問題をトラブルシューティングするには、オンプレミス データ ゲートウェイのインストールとゲートウェイのローカル ログを使用できます。
バイナリの PSE ファイルを base64 でエンコードされた形式に変換する
以下のように、PowerShell スクリプトを使用します。
Param ([Parameter(Mandatory=$true)][string]$psePath, [string]$base64OutputPath) $base64String = [convert]::ToBase64String((Get-Content -path $psePath -Encoding byte)) if ($base64OutputPath -eq $null) { Write-Output $base64String } else { Set-Content -Path $base64OutputPath -Value $base64String Write-Output "Output written to $base64OutputPath" }
スクリプトを pseConvert.ps1 ファイルとして保存してから、スクリプトを呼び出します。次に例を示します。
.\pseConvert.ps1 -psePath "C:\Temp\SECUDIR\request.pse" -base64OutputPath "connectionInput.txt" Output written to connectionInput.txt
出力パス パラメーターが指定されていない場合、スクリプトのコンソールへの出力には改行が入ります。 接続入力パラメーター用の base64 でエンコードされた文字列では改行を削除してください。
SAP からワークフローへの IDoc の送信を設定してテストする
これらの手順は、自分のロジック アプリ ワークフローで SAP 構成をテストする場合にのみ使用してください。 運用環境では追加の構成が必要になります。
SAP からワークフローに IDoc を送信するには、次の最小構成が必要です。
- RFC 転送先を作成します。
- ABAP 接続を作成します。
- 受信側ポートを作成する。
- 送信側ポートを作成する。
- 論理システム パートナーを作成する。
- パートナー プロファイルを作成する。
- メッセージの送信をテストする。
RFC 宛先を作成する
この宛先により、ロジック アプリ ワークフローが受信側ポートとして識別されます。
SAP で、[Configuration of RFC Connections] (RFC 接続の構成) を開きます。 sm59 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[TCP/IP Connections](TCP/IP 接続)>[Create](作成) の順に選択します。
次の設定を使用して新しい RFC 宛先を作成します。
[RFC Destination] (RFC 宛先) に名前を入力します。
[Technical Settings](技術設定) タブの [Activation Type](アクティブ化の種類) で、 [Registered Server Program](登録済みサーバー プログラム) を選択します。
[Program ID] (プログラム ID) に値を入力します。 SAP サーバーでは、この識別子を使用してワークフローのトリガーが登録されます。
重要
SAP のプログラム ID では大文字と小文字が区別されます。 ワークフローと SAP サーバーを構成するときに、プログラム ID に同じ大文字と小文字の形式を一貫して使用していることを確認してください。 そうしないと、IDoc を SAP に送信しようとしたときに、tRFC Monitor (T コード SM58) に次のエラーが表示されることがあります。
- 関数 IDOC_INBOUND_ASYNCHRONOUS が見つかりません
- 非 ABAP RFC クライアント (パートナー タイプ) はサポートされていません
SAP の詳しい情報は、以下のノートを参照してください (ログインが必要です)。
[Unicode] タブの [Communication Type with Target System](ターゲット システムとの通信の種類) で、 [Unicode] を選択します。
注意
SAP .NET クライアント ライブラリでは、Unicode 文字エンコードのみをサポートしています。 SAP から Azure Logic Apps に IDoc を送信するときにエラー "Non-ABAP RFC client (partner type) not supported (ABAP 以外の RFC クライアント (パートナー タイプ) はサポートされません)" が発生する場合は、[Communication Type with Target System] (ターゲット システムとの通信の種類) の値が [Unicode] に設定されていることを確認してください。
変更を保存します。
新しいプログラム ID を Azure Logic Apps に登録するには、[When a message is received from SAP] (SAP からのメッセージ受信時) という SAP マネージド トリガーで始まるロジック アプリ ワークフローを作成します。
こうすることで、ワークフローを保存すると、Azure Logic Apps はSAP ゲートウェイにプログラム ID を登録します。
ワークフローのトリガー履歴、オンプレミス データ ゲートウェイの SAP アダプター ログ (該当する場合)、SAP Gateway のトレース ログで、登録状態を確認します。
SAP Gateway 監視ボックス (T-Code SMGW) の [Logged-On Clients] (ログオン済みクライアント) の下に、[Registered Server] (登録済みサーバー) として新しい登録が表示されます。
接続をテストするには、新しい RFC 宛先で、[Connection Test] (接続テスト) を選択します。
ABAP 接続を作成する
この宛先は、SAP システムを送信側ポートとして識別します。
SAP で、[Configuration of RFC Connections] (RFC 接続の構成) を開きます。 sm59 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[ABAP Connections](ABAP 接続)>[Create](作成) の順に選択します。
[RFC 転送先] に、テスト用 SAP システムの識別子を入力します。
[Technical Settings] (技術的な設定) で、ターゲット ホストを空のままにして、SAP システムへのローカル接続を作成します。
変更を保存します。
接続をテストするには、 [Connection Test](接続テスト) を選択します。
受信側ポートを作成する
SAP で、[Ports In IDOC processing] (IDOC 処理のポート) 設定を開きます。 we21 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[Ports](ポート)>[Transactional RFC](トランザクション RFC)>[Create](作成) の順に選択します。
表示された設定ボックスで、 [own port name](独自のポート名) を選択します。 テスト ポートの名前を入力します。 変更を保存します。
新しい受信側ポートの設定で、 [RFC destination](RFC 宛先) にテスト用 RFC 宛先の識別子を入力します。
変更を保存します。
送信側ポートを作成する
SAP で、[Ports In IDOC processing] (IDOC 処理のポート) 設定を開きます。 we21 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[Ports](ポート)>[Transactional RFC](トランザクション RFC)>[Create](作成) の順に選択します。
表示された設定ボックスで、 [own port name](独自のポート名) を選択します。
テスト ポートについて、SAP で始まる名前を入力します。 変更を保存します。
送信側ポート名はすべて、SAP という文字で始まる必要があります (例: SAPTEST)。
新しい送信側ポートの設定で、 [RFC destination](RFC 宛先) に ABAP 接続の識別子を入力します。
変更を保存します。
論理システム パートナーを作成する
SAP で、[Change View "Logical Systems": Overview] (変更ビュー "論理システム": 概要) 設定を開きます。 bd54 トランザクション コード (T コード) を使用できます。
表示される次の警告メッセージを受け入れます。"Caution: The table is cross-client (注: このテーブルはクロスクライアントです)"
既存の論理システムを示す一覧の上にある [New Entries](新規エントリ) を選択します。
新しい論理システムについて、Log.System 識別子と名前の簡単な説明を入力します。 変更を保存します。
[Prompt for Workbench](ワークベンチのプロンプト) が表示されたら、説明を入力して新しい要求を作成します。要求を既に作成している場合は、この手順をスキップします。
ワークベンチ要求を作成したら、その要求をテーブル更新要求にリンクします。 テーブルが更新されたことを確認するために、変更を保存します。
パートナー プロファイルを作成する
運用環境では、2 つのパートナー プロファイルを作成する必要があります。 1 つ目のプロファイルは、送信側 (組織および SAP システム) 用です。 2 つ目のプロファイルは、受信側 (ロジック アプリ リソースとワークフロー) 用です。
SAP で、パートナー プロファイルの設定を開きます。 we20 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[Partner Profiles](パートナー プロファイル) で、 [Partner Type LS](パートナー タイプ LS)>[Create](作成) の順に選択します。
次の設定を使用して新しいパートナー プロファイルを作成します。
設定 説明 Partner No. (パートナー番号) 論理システム パートナーの識別子を入力します。 Partn. (パートナー) Type 「LS」と入力します。 エージェント Azure Logic Apps または SAP ではない他のシステムのプログラム識別子を登録するときに使用する SAP ユーザー アカウントの識別子を入力します。 変更を保存します。
論理システム パートナーを作成していない場合、 [Enter a valid partner number](有効なパートナー番号を入力してください) というエラーが表示されます。
パートナー プロファイルの設定の [Outbound parmtrs.](送信パラメーター) で、 [Create outbound parameter](送信パラメーターの作成) を選択します。
次の設定を使用して新しい送信パラメーターを作成します。
メッセージの種類を入力します (例: CREMAS)。
受信側ポートの識別子を入力します。
[Pack. Size](パッケージ サイズ) に IDoc のサイズを入力します。 SAP から IDoc を 1 つずつ送信する場合は、 [Pass IDoc Immediately](IDoc をすぐに渡す) を選択します。
変更を保存します。
メッセージの送信をテストする
SAP で、[Test Tool for IDoc Processing] (IDoc 処理のテスト ツール) の設定を開きます。 we19 トランザクション コード (T-Code) を /n プレフィックスと共に使用できます。
[Template for test] (テスト用テンプレート) で、[Via message type] (メッセージの種類を使用) を選択します。 メッセージの種類を入力します (例: CREMAS)。 [作成] を選択します
[Continue](続行) を選択して、 [Which IDoc type?](どの IDoc タイプですか?) というメッセージを確認します。
EDIDC ノードを選択します。 受信側と送信側のポートの適切な値を入力します。 [続行] をクリックします。
[Standard Outbound Processing](標準の送信処理) を選択します。
送信 IDoc 処理を開始するには、 [Continue](続行) を選択します。
ツールで処理が完了すると、"IDoc sent to SAP system or external program" (SAP システムまたは外部プログラムに IDoc が送信されました) というメッセージが表示されます。
処理エラーがないかどうかを確認するには、 /n プレフィックスを付けた sm58 トランザクション コード (T コード) を使用します。
一般的な SAP シナリオ向けのワークフローを作成する
一般的な SAP 統合ワークロードのワークフローを作成するための攻略ガイドについては、次の手順を参照してください。
高度な SAP シナリオのワークフローを作成する
拡張エラー ログを検索する (マネージド コネクタのみ)
SAP マネージド コネクタを使用している場合は、SAP アダプターの拡張ログを確認すると、完全なエラー メッセージが見つかります。 また、SAP コネクタの拡張ログ ファイルを有効にすることもできます。
2020 年 4 月以前のオンプレミス データ ゲートウェイ リリースでは、ログは既定で無効になっています。
2020 年 6 月以降のオンプレミス データ ゲートウェイ リリースでは、アプリ設定でゲートウェイ ログを有効にすることができます。
既定のログ レベルは [警告] です。
オンプレミス データ ゲートウェイ アプリの [Diagnostics](診断) 設定で [Additional logging](追加のログ記録) を有効にすると、ログ記録レベルが [Informational](情報) に上がります。
ログ記録レベルを [詳細] に上げるには、構成ファイルで次の設定を更新します。 通常、構成ファイルは
C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config
にあります。<setting name="SapTraceLevel" serializeAs="String"> <value>Verbose</value> </setting>
オンプレミス データ ゲートウェイで拡張 SAP ログを設定する (マネージド コネクタのみ)
Azure Logic Apps 用のオンプレミス データ ゲートウェイを使用する場合は、SAP コネクタ用に拡張ログ ファイルを構成できます。 オンプレミス データ ゲートウェイを使用して、Event Tracing for Windows (ETW) イベントをゲートウェイの .zip 形式のログ ファイルに含まれているローテーション ログ ファイルにリダイレクトできます。
ゲートウェイ アプリの設定から、ゲートウェイの構成とサービス ログをすべて .zip ファイルにエクスポート ことができます。
注意
拡張ログが常に有効になっていると、ワークフローのパフォーマンスに影響を与える可能性があります。 問題の分析とトラブルシューティングを完了した後は、拡張ログ ファイルをオフにすることをお勧めします。
ETW イベントのキャプチャ
オプションの高度なログ タスクとして、ETW イベントを直接キャプチャし、Event Hubs の Azure Diagnostics でデータを使用したり、Azure Monitor ログにデータを収集したりできます。 詳細については、「データを収集して格納するためのベスト プラクティス」を参照してください。
生成される ETL ファイルを操作するために、PerfView を使用したり、独自のプログラムを作成したりすることができます。 次の手順では、PerfView を使用しています。
[PerfView] メニューで、[Collect](収集)>[Collect](収集) を選択して、イベントをキャプチャします。
[Additional Provider] (追加のプロバイダー) パラメーターに「
*Microsoft-LobAdapter
」と入力し、SAP アダプタ イベントをキャプチャする SAP プロバイダーを指定します。 この情報を指定しない場合、トレースには一般的な ETW イベントのみが含まれます。その他の既定の設定はそのままにします。 必要に応じて、[Data File] (データ ファイル) パラメーターでファイル名または場所を変更できます。
[Start Collection](収集の開始) を選択して、トレースを開始します。
問題を再現した後、または十分な分析データを収集したら、 [Stop Collection](収集の停止) を選択します。
Azure サポート エンジニアなどの別のパーティとデータを共有するには、ETL ファイルを圧縮します。
トレースの内容を表示するには、次の手順を実行します。
PerfView で、[File](ファイル)>[Open](開く) を選択し、先ほど生成した ETL ファイルを選択します。
PerfView のサイドバーでは、ETL ファイルの下の [イベント] セクションです。
[フィルター] で
Microsoft-LobAdapter
でフィルター処理して、関連するイベントとゲートウェイ プロセスのみを表示します。
ワークフローのテスト
マルチテナント Azure Logic Apps の従量課金ワークフローであるか、シングルテナント Azure Logic Apps の Standard ワークフローであるかに基づいて、以下の対応する手順のようにします。
従量課金ロジック アプリ リソースがまだ有効でない場合は、ロジック アプリのメニューで [概要] を選択します。 ツールバーで、 [Enable](有効化) を選択します。
デザイナーのツール バーの [トリガーの実行]>[実行] を選択してワークフローを手動で開始します。
ワークフローをトリガーするには、SAP システムからメッセージを送信します。
ロジック アプリの [概要] ウィンドウに戻ります。 [実行履歴] で、ワークフローの新しい実行がないか探します。
最新の実行を開くと、手動の実行が表示されます。 トリガー出力のセクションを見つけて確認します。
SAP クライアント ライブラリ (NCo) のログ記録とトレースを有効にする (組み込みコネクタのみ)
このコンポーネントに関する問題を調査する必要がある場合は、SAP または Microsoft のサポートが要求する可能性があるカスタム テキスト ファイル ベースの NCo トレースを設定できます。 既定では、このトレースを有効にするとパフォーマンスに悪影響を及ぼし、アプリケーション ホストの記憶域をすばやく消費する可能性があるため、この機能は無効になっています。
このトレース機能は、次の設定を追加してアプリケーション レベルで制御できます。
Azure portal で、Standard ロジック アプリ リソースを開きます。
ロジック アプリのメニューで、[設定] の [環境変数] を選んで、アプリケーションの設定を確認します。
[環境変数] ページの [アプリの設定] タブで、次のアプリケーション設定を追加します。
SAP_RFC_TRACE_DIRECTORY: NCo トレース ファイルを保存するディレクトリ (C:\home\LogFiles\NCo など)。
SAP_RFC_TRACE_LEVEL: 一般的な詳細ログの推奨値として Level4 を指定した NCo トレース レベル。 SAP または Microsoft のサポートでは、別のトレース レベルを設定するよう要求する場合があります。
Note
ランタイム バージョン 1.69.0 以降を使用する Standard ロジック アプリ ワークフローでは、各トレース レベルをコンマで区切る (,) ことで、複数のトレース レベルのログ記録を有効にすることができます。
ワークフローのランタイム バージョンを確認するには、次の手順に従います。
- Azure portal のワークフロー メニューで、[概要] を選択します。
- [Essentials] セクションで、[ランタイム バージョン] プロパティを見つけます。
SAP_CPIC_TRACE_LEVEL: 一般的な詳細ログの推奨値として Verbose を使用した通信用共通プログラミング・インターフェース (CPI-C) トレース・レベル。 SAP または Microsoft のサポートでは、別のトレース レベルを設定するよう要求する場合があります。
アプリケーション設定の追加の詳細については、「Standard ロジック アプリ ワークフローのホストとアプリの設定を編集する」を参照してください。
変更を保存します。 この手順では、アプリケーションを再起動します。
使用可能なトレース レベル
NCoトレース レベル
Value | 説明 |
---|---|
Level1 | リモート関数の呼び出しをトレースするためのレベル。 |
Level2 | リモート関数の呼び出しとパブリック API メソッドの呼び出しをトレースするためのレベル。 |
Level3 | リモート関数の呼び出し、パブリック API メソッドの呼び出し、および内部 API メソッドの呼び出しをトレースするためのレベル。 |
Level4 | リモート関数の呼び出し、パブリック API メソッドの呼び出し、内部 API メソッドの呼び出し、RFC プロトコルの 16 進ダンプ、およびネットワーク関連の情報をトレースするためのレベル。 |
ロック | スレッドがオブジェクトのロックを要求、取得、および解放するタイミングを示すデータをトレース ファイルに書き込みます。 |
Metadata | 各呼び出しのリモート関数の呼び出しに関連するメタデータをトレースします。 |
なし | すべてのトレース出力を抑制するためのレベル。 |
ParameterData | 各リモート関数の呼び出し中に送受信されたコンテナー データをトレースします。 |
パフォーマンス | パフォーマンスの問題の分析に役立つデータをトレース ファイルに書き込みます。 |
PublicAPI | getter、setter、または関連するメソッドを除き、パブリック API のほとんどのメソッドをトレースします。 |
InternalAPI | getter、setter、または関連するメソッドを除き、内部 API のほとんどのメソッドをトレースします。 |
RemoteFunctionCall | リモート関数の呼び出しをトレースします。 |
RfcData | 各リモート関数の呼び出し中に送受信されたバイトをトレースします。 |
SessionProvider | 現在使用されている ISessionProvider の実装のすべてのメソッドをトレースします。 |
SetValue | 関数のパラメーター、あるいは構造体またはテーブルのフィールドに設定された値に関する情報をトレース ファイルに書き込みます。 |
CPIC トレース レベル
Value | 説明 |
---|---|
Off | ログ記録なし |
基本 | 基本的なログ記録 |
詳細 | 詳細ログ記録 |
VerboseWithData | すべてのサーバー応答ダンプを含む詳細ログ記録 |
トレースを表示する
Standard ロジック アプリ リソース メニューの [開発ツール] で、[高度なツール]>[Go] を選択します。
[Kudu] ツール バーで、[デバッグ コンソール]>[CMD] の順に選択します。
$SAP_RFC_TRACE_DIRECTORY という名前のアプリケーション設定のフォルダーを参照します。
前に設定したアプリケーション設定値 C:\home\LogFiles\NCo に対して、NCo という名前の新しいフォルダー、または使用したフォルダー名が表示されます。
$SAP_RFC_TRACE_DIRECTORY フォルダーを開きます。このフォルダーには次のものが含まれます。
NCo トレース ログ: dev_nco_rfc.log という名前のファイル、NNNN がスレッド識別子である nco_rfc_NNNN.log という名前の 1 つまたは複数のファイル、および nco_rfc_NNNN.trc ファイルという名前の 1 つまたは複数のファイル。
CPIC トレース ログ: NNNN がスレッド識別子である nco_cpic_NNNN.trc ファイルという名前の 1 つまたは複数のファイル。
ログまたはトレース ファイルの内容を見るには、ファイルの横にある [編集] ボタンを選びます。
Note
ロジック アプリ ワークフローが開いた、現在使用中のログまたはトレース ファイルをダウンロードすると、空のファイルがダウンロードされる可能性があります。
SAP Common Crypto Library (CCL) トレースを有効にする (組み込みコネクタのみ)
SNC 認証の使用中に暗号化ライブラリに関する問題を調査する必要がある場合は、カスタム テキスト ファイルベースの CCL トレースを設定できます。 これらの CCL ログを使用して、SNC 認証の問題をトラブルシューティングしたり、必要に応じてこれらを Microsoft または SAP サポートと共有したりできます。 既定では、このトレースを有効にするとパフォーマンスに悪影響を及ぼし、アプリケーション ホストの記憶域をすばやく消費する可能性があるため、この機能は無効になっています。
このトレース機能は、次の設定を追加してアプリケーション レベルで制御できます。
Azure portal で、Standard ロジック アプリ リソースを開きます。
Standard ロジック アプリ リソース メニューの [開発ツール] で、[高度なツール]>[Go] を選択します。
[Kudu] ツール バーで、[デバッグ コンソール]>[CMD] の順に選択します。
C:\home\site\wwwroot の下の場所を参照し、テキスト ファイルを作成します (例: CCLPROFILE.txt)。
パラメータのログ記録の詳細については、「トレース> SAP ノート 2338952」を参照してください。 次の例では、トレース構成の例を示します。
ccl/trace/directory=C:\home\LogFiles\CCLLOGS ccl/trace/level=4 ccl/trace/rotatefilesize=10000000 ccl/trace/rotatefilenumber=10
ロジック アプリのメニューで、[設定] の [環境変数] を選んで、アプリケーションの設定を確認します。
[環境変数] ページの [アプリの設定] タブで、次のアプリケーション設定を追加します。
CCL_PROFILE: CCLPROFILE.txt が作成されたディレクトリ (例: C:\home\site\wwwroot\CCLPROFILE.txt)。
変更を保存。 この手順では、アプリケーションを再起動します。
トレースを表示する
Standard ロジック アプリ リソース メニューの [開発ツール] で、[高度なツール]>[Go] を選択します。
[Kudu] ツール バーで、[デバッグ コンソール]>[CMD] の順に選択します。
CCLPROFILE.txt ファイルにある $ccl/trace/directory パラメーターのフォルダーを参照します。
通常、トレース ファイルの名前は sec-Microsoft.Azure.Work-$processId.trc と sec-sapgenpse.exe-$processId.trc です。
ロジック アプリ ワークフローでは、SNC 認証が 2 段階のプロセスとして実行されます。
ロジック アプリ ワークフローによって sapgenpse.exe が呼び出され、PSE ファイルから cred_v2 ファイルが生成されます。
この手順に関連するトレースは、sec-sapgenpse.exe-$processId.trc という名前のファイルにあります。
ロジック アプリ ワークフローでは、生成された cred_v2 ファイルを使用して SAP サーバーへのアクセスが認証され、SAP クライアント ライブラリによって一般的な暗号化ライブラリが呼び出されます。
この手順に関連するトレースは、sec-Microsoft.Azure.Work-$processId.trc という名前のファイルにあります。
オンプレミス データ ゲートウェイの SAP テレメトリを Azure Application Insights に送信する
オンプレミス データ ゲートウェイの 2021 年 8 月の更新により、SAP コネクタの操作で、SAP NCo クライアント ライブラリからのテレメトリ データと Microsoft SAP アダプターからのトレースを、Azure Monitor の機能である Application Insights に送信できます。 このテレメトリには主に、以下のデータが含まれています。
SAP NCo のメトリックとモニターに基づくメトリックとトレース。
Microsoft SAP アダプターからのトレース。
SAP NCo クライアント ライブラリからのメトリックとトレース
SAP NCo ベースのメトリックは、オンプレミス データ ゲートウェイ上のリソースの使用状況と可用性に基づいて、一定期間にわたって変化する場合も変化しない場合もある数値です。 システムの正常性について理解を深め、以下のアクティビティに関するアラートを作成するために、これらのメトリックを利用できます。
- システム正常性の低下。
- 通常とは異なるイベント。
- 高いシステム負荷。
この情報は、customMetrics という名前の Application Insights テーブルに送信されます。 既定では、メトリックは 30 秒間隔で送信されます。
SAP NCo ベースのトレースには、メトリックと共に使用されるテキスト情報が含まれています。 この情報は、traces という名前の Application Insights テーブルに送信されます。 既定では、トレースは 10 分間隔で送信されます。
SAP NCo のメトリックとトレースは、SAP NCo のメトリック、特に以下の NCo クラスに基づいています。
- RfcDestinationMonitor。
- RfcConnectionMonitor。
- RfcServerMonitor。
- RfcRepositoryMonitor。
各クラスで提供されるメトリックの詳細については、SAP NCo のドキュメント (サインインが必要) を参照してください。
Application Insights 用の SAP テレメトリを設定する
ゲートウェイ インストールについての SAP テレメトリを Application Insights に送信する前に、Application Insights リソースを作成して設定する必要があります。 詳細については、次のドキュメントを確認してください。
SAP テレメトリを Application insights に送信できるようにするには、以下の手順に従います。
Microsoft.ApplicationInsights.EventSourceListener.dll 用の NuGet パッケージを次の場所からダウンロードします: https://www.nuget.org/packages/Microsoft.ApplicationInsights.EventSourceListener/2.14.0。
ダウンロードしたファイルをオンプレミス データ ゲートウェイのインストール ディレクトリ (例: C:\Program Files\On-Premises Data Gateway) に追加します。
オンプレミス データ ゲートウェイのインストール ディレクトリで、Microsoft.ApplicationInsights.dll ファイルのバージョン番号が、追加した Microsoft.ApplicationInsights.EventSourceListener.dll ファイルと同じであることを確認します。 ゲートウェイでは現在、バージョン 2.14.0 が使用されています。
ApplicationInsights.config ファイルで、
<InstrumentationKey></InstrumentationKey>
要素が含まれる行をコメント解除して、Application Insights インストルメンテーション キーを追加します。 プレースホルダーの <your-Application-Insights-instrumentation-key> を、実際のキーに置き換えます。以下に例を示します。<?xml version="1.0" encoding="utf-8"?> <ApplicationInsights schemaVersion="2014-05-30" xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings"> <!-- Uncomment this element and insert your Application Insights key to receive ETW telemetry about your gateway <InstrumentationKey>*your-instrumentation-key-placeholder*</InstrumentationKey> --> <TelemetryModules> <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights"> <IsHeartbeatEnabled>false</IsHeartbeatEnabled> </Add> <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener"> <Sources> <Add Name="Microsoft-LobAdapter" Level="Verbose" /> </Sources> </Add> </TelemetryModules> </ApplicationInsights>
ApplicationInsights.config ファイルでは、要件に応じて、SAP コネクタ操作の必須トレース
Level
の値を変更できます。以下に例を示します。<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener"> <Sources> <Add Name="Microsoft-LobAdapter" Level="Verbose" /> </Sources> </Add>
詳細については、次のドキュメントを確認してください。
Level
の値: EventLevel Enum
変更を適用した後で、オンプレミス データ ゲートウェイ サービスを再起動します。
Application Insights でメトリックを確認する
ロジック アプリ ワークフローで SAP 操作を実行したら、Application Insights に送信されたテレメトリを確認できます。
Azure portal で Application Insights のリソースを開きます。
リソース メニューで、 [監視] の下の [ログ] を選択します。
次のスクリーンショットは、 [ログ] ペインが開いている Application Insights が表示された Azure portal を示しています。
[ログ] ペインでは、Kusto クエリ言語 (KQL) を使用して、特定の要件に基づくクエリを作成できます。
次のクエリ例のようなクエリ パターンを使用できます。
customMetrics | extend DestinationName = tostring(customDimensions["DestinationName"]) | extend MetricType = tostring(customDimensions["MetricType"]) | where customDimensions contains "RfcDestinationMonitor" | where name contains "MaxUsedCount"
クエリを実行した後は、結果を確認します。
次のスクリーンショットは、クエリ例のメトリック結果テーブルを示しています。
MaxUsedCount は、"監視対象によって同時に使用されたクライアント接続の最大数。" であると、SAP NCo のドキュメント (サインインが必要) で説明されています。 この値を使用して、同時に開いている接続の数を把握できます。
メトリックは 30 秒間隔で生成されるため、[valueCount] 列には読み取りごとに 2 と表示されます。 Application Insights では、これらのメトリックが分単位で集計されます。
[DestinationName] 列には、Microsoft SAP アダプターの内部名である文字列が含まれています。
このリモート関数呼び出し (RFC) の対象についてより深く理解するには、この値を
traces
と共に使用します。以下に例を示します。customMetrics | extend DestinationName = tostring(customDimensions["DestinationName"]) | join kind=inner (traces | extend DestinationName = tostring(customDimensions["DestinationName"]), AppServerHost = tostring(customDimensions["AppServerHost"]), SncMode = tostring(customDimensions["SncMode"]), SapClient = tostring(customDimensions["Client"]) | where customDimensions contains "RfcDestinationMonitor" ) on DestinationName , $left.DestinationName == $right.DestinationName | where customDimensions contains "RfcDestinationMonitor" | where name contains "MaxUsedCount" | project AppServerHost, SncMode, SapClient, name, valueCount, valueSum, valueMin, valueMax
それらの Application Insights の機能を使用してメトリック グラフやアラートを作成することもできます。以下に例を示します。
Microsoft SAP アダプターからのトレース
Microsoft SAP アダプターから送信されたトレースは、問題の事後分析のために利用し、SAP コネクタの操作から発生したりしなかったりする場合がある既存の内部システム エラーを見つけることができます。 これらのトレースは、Application Insights に先立つ古いイベント ソース フレームワークからのものであるため、message
が "n\a"
に設定されています。以下に例を示します。
traces
| where message == "n/a"
| where severityLevel > 0
| extend ActivityId = tostring(customDimensions["ActivityId"])
| extend fullMessage = tostring(customDimensions["fullMessage"])
| extend shortMessage = tostring(customDimensions["shortMessage"])
| where ActivityId contains "8ad5952b-371e-4d80-b355-34e28df9b5d1"
次のスクリーンショットは、クエリ例のトレース結果テーブルを示しています。