SAP ODP の設定
SAP ODP 連携を使用すると、SAP Operational Data Provisioning (ODP) データソースからデータパイプラインにデータを抽出できます。
この統合では、非同期のパッケージベース抽出方法を使用して、大規模なデータセットを安全かつ効率的に処理します。
概要
SAP Data Agent は OData サービスを介して ODP を利用し、SAP から Workato へデータを転送します。 SAP Data Agentは、SAP ODPデータソースからデータを抽出するにあたり、SAP Note 3255746 のガイドラインに従います。
パイプラインの実行時には、次の処理が行われます。
- WorkatoがSAPに抽出リクエストを送信します。
- SAP ODPフレームワークは、必要なデータを収集し、一時パッケージに保存します。
- Workatoがパッケージを順次取得します。
- SAP ODPフレームワークは、完了後に一時データを削除します。
トランザクションコード ODQMON を使用して、SAP で抽出処理を監視できます。
サポートされる ODP コンテキスト
SAP ODP は、次の ODP コンテキストに属するデータソースをサポートします。
- ABAP Core Data Services (
ABAP_CDS) - DataSources/Extractors (
SAPI) - HANA Information Views (
HANA) - SAP NetWeaver Business Warehouse (
BW)
サポートされる抽出モード
SAP ODP は、次の抽出モードをサポートします。
- フル: 実行のたびに、データソースから利用可能なすべてのレコードを抽出します。
- デルタ: 初回に初期ロードを実行し、その後の実行では新規または変更されたレコードのみを抽出します。
詳細については、「Select the sync mode」を参照してください。
バイナリフィールドの値
SAP は、一部のバイナリ (RAW) フィールド値を 16進形式で表示します。宛先にロードされる対応する値は、Base64 でエンコードされています。これは想定される動作です。
SAP Data Agentのセットアップ
データパイプラインを作成する前に、SAPアプリケーションサーバーにSAP Data Agentをインストールして設定する必要があります。
SAP Data Agentは、SAPシステムにABAP移送としてインストールされます。 /WKTO/名前空間配下でODataサービスを公開し、安全なパッケージベースのデータ抽出を可能にします。
サポートされているSAPシステム
次の SAP システムで SAP ODP がサポートされています。
| SAPシステム | データベース | NetWeaverバージョン | ABAPバージョン |
|---|---|---|---|
| SAP ECC | 任意 | 7.5 EHP8 and above | 7.5以上 |
| SAP S/4HANA | SAP HANA | 1610 and above | 7.5以上 |
| SAP BW | 任意 | 7.5 EHP8 and above | 7.5以上 |
| SAP BW/4HANA | SAP HANA | 2.0 SPS07 and above | 7.5以上 |
SAPユーザーアカウントの作成
必要な権限を持つ専用のSAPユーザーを作成する必要があります。次のいずれかの SAP ユーザータイプを使用します。
- ベーシック認証用の Communication ユーザー (SAP ユーザータイプ C)
- OAuth 2.0 (Authorization Code Grant または Client Credentials Grant) 用の System ユーザー (SAP ユーザータイプ B)
OAuth 2.0のセットアップ方法については、SAP OData OAuth 2.0認証ガイドを参照してください。
Workato でSAP OData コネクションを作成する際に、このユーザーのユーザー名とパスワードを指定する必要があります。
接続をテストする前に、必要なSAPロールと権限オブジェクトを割り当てます。
SAP Data Agentのインストール
ABAP移送依頼をSAPシステムにインポートして、SAP Data Agentをインストールする必要があります。
移送依頼が必要
ABAP移送依頼パッケージを入手するには、Workato Account ExecutiveまたはCustomer Success Managerにお問い合わせください。
SAP Data Agentをインストールするには、次の手順を実行します。
Workatoから提供されたSAP移送依頼をインポートします。
必要なSAP権限とロールをユーザーに割り当てます。
/WKTO/名前空間配下のSICF(SAP Internet Communication Frameworkトランザクション)サービスを有効化します。
トランザクション/IWFND/MAINT_SERVICEでサービスのローカルエイリアスを管理します。
システムユーザーを使用する場合は、OAuth設定を構成します。
Workato から提供されるアンインストール用のトランスポートリクエストを SAP システムにインポートして、SAP Data Agent をアンインストールします。 Workato は、SAP BW/4HANA システム用と非 BW/4HANA システム用に別々のアンインストールトランスポートリクエストを提供します。
ODP 用の SAP ロールを設定
SAP Data Agentに使用するSAPユーザーに、必要なロールと権限を割り当てます。このロールは、必要な OData サービス、バックグラウンドジョブ処理、およびデータ抽出用の ODP データソースへのアクセスを付与します。
トランザクションコードPFCGに移動します。
ロール /WKTO/ODP を開くか、必要な認可オブジェクトを含むカスタムロールを作成します。
Authorizationsタブに移動し、Change Authorization Dataを選択します。
ロールに次の権限オブジェクトとフィールド値が含まれていることを確認します。
ロールに含まれる権限の概要
- S_SERVICE
- SAP Data Agent の OData サービスへのアクセスを許可します。
- S_BTCH_JOB
- 抽出中に使用されるバックグラウンドジョブのリリースと実行を許可します。
- S_BTCH_ADM
- バックグラウンドジョブ管理権限を制御します。
- S_RO_OSOA
- ODP データソースへのアクセスを制御します。
S_SERVICEオブジェクトの権限フィールド値
- プログラム、トランザクション、または関数
- *
- チェックフラグおよび認可の種類
- *
S_BTCH_JOBオブジェクトの権限フィールド値
- ジョブ操作
- RELE
- グループのジョブ概要
- ' '
S_BTCH_ADMオブジェクトの権限フィールド値
- バックグラウンド管理者 ID
- Y
S_RO_OSOA オブジェクトの認可フィールド値
- アクティビティ
- 03
- データソース (OSOA/OSOD)
- *
- データソースのアプリケーションコンポーネント
- *
- データソースのサブオブジェクト
- *
権限プロファイルを生成し、ロールを保存します。
SAP Data Agentに使用するSAPユーザーにロールを割り当てます。
SAP でデータソースを設定し抽出処理を監視する SAP ユーザーには、SAP Data Agent のトランザクションを実行するために、次の認可も必要です。
設定および監視用の認可フィールド値
- トランザクションコード
- /WKTO/ADV_LOG
- /WKTO/CONFIG
- /WKTO/ODP_CONFIG
- /WKTO/ODP_SUBS
- ODQMON
- クライアント間保守の指標
- ' '
- アクティビティ
- 02, 03
- テーブル権限グループ
- &NC&
- アクティビティ
- 02
- ターゲット言語
- EN
ODP データソースを OData サービスとして公開
パイプラインで ODP データソースからデータを抽出する前に、各 ODP データソースを OData サービスとして公開する必要があります。 SAP Gateway Service Builder (トランザクション SEGW) でサービスを作成し、その後 SAP Data Agent に登録します。
このセクションを完了する際に、次の値を控えておいてください。 /WKTO/ODP_CONFIG で、これらの値を入力する必要があります。
- ODP 名
- サービス名
- エンティティ名
- データソースがデルタ抽出をサポートしている場合は、デルタエンティティ名とデルタ終了エンティティ名
- サービス URL
このセクションの例では、0TCTAPPL_TEXT データソースを使用します。
Service Builder プロジェクトの作成
SAP Gateway Service Builder でプロジェクトを作成するには、次の手順を実行します。
トランザクションコード SEGW に移動します。
Create Project をクリックします。
Project フィールドにプロジェクト名を、Description フィールドに説明を入力します。たとえば、ZSAP_0TCTAPPL_TEXT および ODP for 0TCTAPPL_TEXT です。
Project Type ドロップダウンメニューで Service with SAP Annotations を選択します。
Generation Strategy ドロップダウンメニューで Standard を選択します。
Package フィールドにパッケージを入力し、プロジェクトを保存します。
新しいプロジェクトの作成
ODP 抽出用のデータモデルの再定義
ODP データソースをプロジェクトに割り当てるには、次の手順を実行します。
プロジェクトツリーの Data Model を右クリックし、Redefine > ODP Extraction を選択します。
サービスの再定義
RFC Destination フィールドに NONE と入力します。
ODP Context ドロップダウンメニューで、データソースのコンテキストを選択します。たとえば、DataSources Without ESH Modeling です。
ODP Name フィールドにデータソース名を入力し、Add ODP をクリックします。この値を ODP 名として控えておきます。たとえば、0TCTAPPL_TEXT です。
ODP の追加
次へをクリックします。
トランスポート、OData サービス、およびサービス登録の属性を確認します。 Service Name フィールドの値を控えておきます。たとえば、ZSAP_0TCTAPPL_TEXT_2_SRV です。
属性の確認
次へをクリックします。
エンティティタイプとそのプロパティを選択します。エンティティタイプ名をエンティティ名として控えておきます。たとえば、EntityOf0TCTAPPL_TEXT です。
「完了」をクリックします。
プロジェクトをチェックし、SAP にエラーが報告されないことを確認します。
データソースがデルタ抽出をサポートしている場合は、プロジェクトの Function Imports でデルタエンティティ名とデルタ終了エンティティ名を確認します。
エンティティ名は大文字と小文字が区別されます。 SAP に表示されるとおりに、正確に控えておきます。
ランタイムオブジェクトの生成
プロジェクトに必要なクラスを生成するには、次の手順を実行します。
プロジェクトを選択し、Generate Runtime Objects をクリックします。
Model and Service Definition ダイアログで、モデルプロバイダークラス、データプロバイダークラス、およびサービス登録名を確認します。
必須クラスの生成
ダイアログを確認します。 SAP はランタイムオブジェクトを生成し、サービスおよびモデルを登録します。
サービスの登録
SAP Gateway ハブでサービスを登録するには、次の手順を実行します。
プロジェクトツリーの Service Maintenance を展開し、GATEWAYLOCAL を選択します。
Register > Register Service をクリックします。
Registration Status が緑色になっていることを確認します。
緑色の登録ステータスでのサービス登録
サービスのテスト
サービスをテストしてその URL を取得するには、次の手順を実行します。
トランザクションコード /IWFND/MAINT_SERVICE に移動します。
サービスを選択し、SAP Gateway Client をクリックします。
Execute をクリックし、レスポンスでステータスコード 200 が返されることを確認します。
Request URI フィールドのパスをサービス URL として控えておきます。たとえば、/sap/opu/odata/SAP/ZSAP_0TCTAPPL_TEXT_2_SRV です。
SAP Data Agent でのデータソース設定
各 ODP データソースを SAP Data Agent に登録する必要があります。この設定により、パイプラインが抽出に使用する OData サービスおよびエンティティにデータソースがマッピングされます。
トランザクションコード /WKTO/ODP_CONFIG に移動し、各データソースについて次のフィールドを維持します。
| フィールド | 説明 |
|---|---|
| データソース名 | ODP データソースのテクニカル名。たとえば、0TCTAPPL_TEXT です。 |
| サービス名 | Redefine > ODP Extraction ウィザードで作成された OData サービス名。 |
| コンテキスト | データソースの ODP コンテキスト、たとえば SAPI、ABAP_CDS、HANA、BW。 |
| URL | サービスの相対 OData パス。 |
| エンティティ名 | データ抽出に使用される主エンティティ名。 |
| デルタエンティティ名 | デルタ変更に使用されるエンティティ名。 Service Builder プロジェクトの Function Imports で確認します。 |
| デルタ終了エンティティ名 | デルタ抽出を終了またはリセットするために使用されるエンティティ名。 Service Builder プロジェクトの Function Imports で確認します。 |
| ロングテキスト | データソースの説明。この値は、SAPI 以外のデータソースに対してのみ入力します。 |
| 最大ページ | 各抽出レスポンスで返されるレコード数の最大値。全体的なスループットのために「50,000」を推奨します。 |
エンティティ名は大文字と小文字が区別され、サービスで設定された値と完全に一致している必要があります。
WorkatoとSAP間のOData接続性の確立
データパイプラインを作成する前に、WorkatoとSAPシステム間の接続性を設定する必要があります。
SAP Data Agentは、Workatoが認証、抽出、およびクリーンアップ操作に使用するODataサービスを公開します。
オンプレミスSAPシステムへの接続
SAPシステムがODataサービスをパブリックインターネットに公開していない場合は、Workatoオンプレミスエージェント(OPA)をデプロイします。オンプレミスエージェントは、ネットワークからWorkatoへの安全なアウトバウンドコネクションを確立し、内部SAP ODataサービスへのアクセスを可能にします。
オンプレミスSAPシステムに接続するには、次の手順を実行します。
Workatoオンプレミスエージェントをワークスペースにインストールして登録します。
SAPシステムが/WKTO/名前空間配下で必要なODataサービスを公開していることを確認します。
オンプレミスエージェントホストとSAPアプリケーションサーバー間のネットワーク接続性を確認します。
オンプレミスエージェントなしで接続
Workatoからのインバウンドトラフィックを許可するには、SAP HTTPSポートでWorkato IPアドレスをホワイトリストに登録します。 HTTPSポートは、トランザクションSMICMまたはSAP Web Dispatcherで確認できます。 SAP ODataサービスエンドポイントがHTTPS経由で外部から引き続きアクセス可能であることを確認します。
Development Environment(オンプレミスエージェント)の設定
Development Environmentでは、接続性の問題をトラブルシューティングするために、オンプレミスエージェント設定で証明書検証を無効にできます。
OPAのconfディレクトリにあるconfig.ymlファイルを編集します。
http:
trustAll: true
verifyHost: falseHTTPプロファイル設定オプションの詳細については、オンプレミスエージェントHTTPプロファイルのドキュメントを参照してください。
この設定は非本番Environmentでのみ使用してください。
データパイプラインの作成と設定
SAP Data Agent をインストールし、データソースを公開して接続性を確立したら、ODP データソースからデータを抽出するデータパイプラインを作成します。
SAP ODataコネクションの作成
SAP ODataコネクションを作成するには、次の手順を実行します。
作成 > コネクションを選択するか、Cを2回押します。
SAP ODataを検索し、アプリとして選択します。
コネクション名フィールドにコネクションの名前を入力します。
SAP ODataコネクションの作成
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
SAP ODataコネクションを確立するには、Workatoで次のフィールドを入力します。
| フィールド | 説明 |
|---|---|
| コネクションタイプ | SAPデプロイメントに基づいてコネクションタイプを選択します。 SAPインスタンスが直接の外部コネクションを許可しないネットワーク上で実行されている場合は、On-premise(Secure Gateway経由)を選択します。接続を試行する前に、有効なオンプレミスエージェントがあることを確認します。 SAPがODataサービスを公開している場合は、Cloudを選択します。リクエストはWorkatoサーバーから直接送信されます。 |
| 認証タイプ | 認証方法を選択します。サポートされている方法には、Basic、OAuth 2.0 Client Credentials、およびOAuth 2.0 Authorization Codeがあります。 SAPユーザー設定に一致する方法を選択します。 |
| ODataバージョン | OData V2を選択します。 |
| ユーザー名 | SAP Communicationユーザー(タイプC)またはSystemユーザー(タイプB)のユーザー名を入力します。 |
| パスワード | 対応するパスワードを入力します。 |
| ホストURL | SAP ODataサービスのベースパスとしてhttps://<hostname>/sap/opu/odata/を入力します。 |
| サービス | SAPで設定されたODataサービス名としてWKTO/DA_CM_SRVを入力します。 |
| SAPクライアント | ログインに使用するSAPクライアントを入力します。たとえば、サービスURLがhttps://<hostname>/sap/opu/odata/WKTO/DA_CM_SRV?sap-client=800の場合は、800を入力します。このフィールドは、オンプレミスSAPシステムにのみ適用されます。 |
Connectをクリックして、認証情報とコネクション設定を検証します。
コネクションが失敗した場合は、次を確認します。
- SAP認証情報
- ホストURLの形式
- サービス名
- ネットワークアクセシビリティ
一般的なエラーには、401 UnauthorizedとHost unreachableがあります。
データパイプラインの作成
新しいデータパイプラインを作成するには、次の手順を実行します。
作成 > データパイプラインを選択するか、C+Iを押します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
データパイプライン設定
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
ビルドを開始をクリックします。
SAPソースの設定
SAPをソースアプリケーションとして設定するには、次の手順を実行します。
Extract new/updated records from source app トリガーをクリックします。このトリガーは、パイプラインがソースアプリケーションからデータを取得する方法を定義します。
ソースアプリトリガーから新規/更新済みレコードを抽出の設定
ソースアプリケーションとしてSAP ODataを選択します。
このパイプラインで使用するSAP ODataコネクションを選択します。または、+ 新規コネクションをクリックして、新しいコネクションを作成します。
SAP ODataコネクションの選択
Source interface ドロップダウンメニューで SAP ODP2 を選択します。
ODP2 context フィールドに ODP コンテキストを入力します。コンテキストによって、抽出に使用できるオブジェクトが決まります。
SAP ODP2 コンテキストの設定
Add object をクリックして、抽出する ODP データソースを選択します。
検索フィールドに、データソース名の大文字を少なくとも三文字入力します。データソース名は大文字と小文字が区別され、大文字で構成されています。
新しいオブジェクトの追加
検索結果からデータソースを選択します。各結果には、データソースの説明、サービス名、デルタタイプ、および ODP 名が表示されます。たとえば、Purchasing Data (Header Level) [Service = ZODP_02_HDR_1_SRV] [Delta = ABR] (2LIS_02_HDR) です。
データソースの選択
選択内容を確認するには、Addをクリックします。
同期モードの選択
各オブジェクトの同期モードを設定するには、次の手順を実行します。
Objects セクションで対象オブジェクトの設定アイコンをクリックします。
Sync mode ドロップダウンメニューで Full sync または Incremental sync を選択します。
同期モードの設定
任意。 Data filter condition フィールドに SAP フィルター式を入力して、ソースデータを絞り込みます。たとえば、BUKRS = '1000' です。
保存をクリックします。
同期モードの動作は次のとおりです。
- Full sync: 以前の同期や既存のデルタサブスクリプションに関係なく、データソースから利用可能なすべてのレコードを抽出します。ソースデータの完全なスナップショットが必要な場合や、データセット全体を再ロードする予定がある場合に、このモードを使用します。
- Incremental sync: 初回実行時にデルタ初期化を実行し、抽出ポインタを確立して初期データセットを取得します。これは、データソースのデルタ機能に依存します。その後の実行では、直近のインクリメンタル同期完了以降に変更されたレコードのみを抽出します。
インクリメンタルパイプラインごとに一つのサービス
ODP サービスは、インクリメンタル同期では一つのパイプラインでしか使用できません。同じデータソースを複数のインクリメンタルパイプラインで使用する場合は、各パイプライン用に個別の ODP サービスを SAP で作成します。この制限はフル同期には適用されません。詳細については、「Pipeline can't run because the service is in use by another pipeline」を参照してください。
セットアップテーブルに基づくデータソース
セットアップテーブルに基づくデータソース、主に 2LIS* データソースは、フル抽出とインクリメンタル抽出で異なる動作をします。
- フルロードおよび初期ロードでは、セットアップテーブルからデータを読み取ります。 SAP は通常一度限りの処理として、アプリケーションテーブルからセットアップテーブルにデータを投入します。
- セットアップテーブルは自動的には更新されません。セットアップテーブルを再ロードしない限り、新規または更新されたレコードはフルロードや初期ロードに反映されません。
- 初期ロードによってデルタメカニズムが有効化されます。その後のデルタロードでは、デルタキューから新規または変更されたレコードのみを読み取り、セットアップテーブルには依存しません。
既存のインクリメンタルパイプラインを終了して新規に抽出を開始すると、セットアップテーブルのロード後に生成されたデルタレコードを取りこぼす可能性があります。すべてのデルタレコードを取得するために、同じパイプラインを継続して使用し、抽出を終了または再開しないようにします。
スキーマの定義
データソースを追加すると、パイプラインは各選択オブジェクトのスキーマを自動的に取得します。スキーマを確認してカスタマイズし、宛先がソースと一致するようにします。
任意のオブジェクトを展開して、使用可能なフィールドのリストを表示します。
すべてのデータを抽出するにはすべてのフィールドを選択したままにするか、特定のフィールドの選択を解除して抽出およびスキーマレプリケーションから除外します。
任意。各非キーフィールドのフィールドレベルデータ保護を設定します。
- そのままレプリケート(デフォルト): ソースのデータ値は宛先に同一にレプリケートされます。
- ハッシュ: 宛先に同期する前に、列内の機密データ値をハッシュ化します。
同じフローを使用してさらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。この手順を繰り返して、複数のデータソースをパイプラインに含めることができます。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
- 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。新しいフィールドは手動で追加する必要があります。このオプションを使用すると、ソーススキーマが更新された場合に宛先が同期されなくなる可能性があります。
詳細については、スキーマのレプリケーションとスキーマドリフトの管理を参照してください。
詳細設定の構成
実行動作とSAPシステムへの影響を制御するには、パイプラインレベルの設定を構成します。
Concurrency設定を調整します。
同時実行設定の調整
同時実行は、同時に実行されるパイプラインジョブの数を定義します。
- 値を大きくすると並列実行が可能になり、スループットが向上します。
- 値を小さくするとSAPシステムの負荷が軽減され、テーブルロックやパフォーマンスの問題を防ぐのに役立ちます。
再同期処理は同時実行制限にはカウントされません。各再同期処理は、SAP で個別のワークプロセスを消費します。 SAPシステムに過度の負荷をかけないように、同時実行を慎重に調整します。
Frequencyを設定します。
頻度は、数分ごと、毎時、毎日など、パイプラインの実行頻度を定義します。データの鮮度とSAPシステムのパフォーマンスおよび安定性のバランスが取れた頻度を選択します。
頻度の設定
Frequency(頻度)フィールドで、標準の時間ベースのスケジュールを選択するか、カスタムcron式を定義します。これにより、パイプラインがSAP ODPから送信先にデータを同期する頻度が決まります。
宛先の設定
SAPソースと詳細設定を構成した後、データの宛先を選択します。
宛先アプリのターゲットテーブルにデータをロードアクションをクリックします。このアクションでは、パイプラインが宛先でデータをレプリケートする方法を定義します。
宛先の設定
宛先アプリケーションを選択します。
既存の宛先コネクションを選択するか、+ New connectionをクリックして作成します。
保存をクリックします。
宛先固有の設定の詳細については、次のガイドを参照してください。
パイプラインの開始
データ抽出を開始するには、Start pipelineをクリックします。
パイプラインの開始
WorkatoはSAP Data Agentに抽出リクエストを送信し、パッケージでデータを取得して、そのデータを宛先にロードします。
同期完了の確認
パイプラインによるデータ抽出が完了すると、SAP ODPフレームワークはSAP内にステージングされた一時データをクリーンアップします。
完了した同期
同期モードによって、パイプラインが宛先にデータをロードする方法が決まります:
- Full sync: パイプラインは宛先の既存データを、抽出された最新のデータセットに置き換えます。
- Incremental sync: パイプラインは、新しく抽出されたレコードを宛先の既存データに追加します。
トランザクションコード ODQMON を使用して、SAP で抽出リクエストを監視できます。
最終更新日: