注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
SAP(カスタムソース)コネクターを使用すると、magritte-sap-source コネクタータイプのソースを手動で設定して、Foundry を SAP システムに接続できます。このコネクターは、新しい SAP コネクターで利用可能なガイド付き設定ではなく、YAML ベースのカスタム設定を使用します。
新しい SAP 統合には、SAP ERP または SAP SLT コネクターを使用してください。これらのコネクターは、より新しく高性能な API を使用して SAP からデータを読み取り、ガイド付きのセットアップを提供します。SAP(カスタムソース)コネクターは、これらのコネクタータイプが利用可能になる前に設定された既存の統合向けです。
SAP(カスタムソース)コネクターを使用するには、対象の SAP アプリケーション層に Palantir Foundry Connector 2.0 for SAP Applications アドオンをインストールする必要があります。
| 機能 | ステータス |
|---|---|
| 探索 | 🟢 一般提供 |
| バッチ同期 | 🟢 一般提供 |
| インクリメンタル(差分連携) | 🟢 一般提供 |
| ストリーミング同期 | 🟡 ベータ版 |
| Webhook | 🟢 一般提供 |
| 一括ライトバック | 🟢 一般提供 |
Data Connection アプリケーションを開き、画面右上の + 新規ソースを選択します。
カスタムソースを追加を選択します。
ソースの名前と場所を指定します。
カスタム YAML セクションに、ソース定義を入力します。
Copied!1 2 3type: magritte-sap-source url: https://<host>:<port>/sap/palantir usernamePassword: <username>:{{password}}
<host> は SAP アプリケーションサーバーのホスト名です。<port> は Internet Communication Manager(ICM)の HTTPS(または HTTP)ポートです。{{password}} を表示どおりに入力してください。保存後、ダイアログの右側にある暗号化された値にパスワードの値を入力してください。
保存を選択します。
Foundry でのコネクターのセットアップについて詳しくはこちら。
ストリーミング同期をサポートするには、ソースで SLT 接続タイプを明示的に設定する必要があります。ソースの YAML に connectionType パラメーターを追加します。
Copied!1 2 3 4 5 6 7type: magritte-sap-source url: https://<host>:<port>/sap/palantir usernamePassword: <username>:{{password}} connectionType: type: slt slt: context: <context>
context の値は、SLT Replication Server とソース ERP システム間の RFC 接続の一意の識別子です。SLT の設定について詳しくはこちら。
ソースでは、次のパラメーターを設定できます。
| パラメーター | 必須 | デフォルト | 説明 |
|---|---|---|---|
url | はい | SAP アドオンサービスのエンドポイントのベース URL。 | |
usernamePassword | はい | Foundry 用に作成した技術ユーザーのユーザー名とパスワード。 | |
useKernelJsonSerialization | いいえ | false | ページ分割されたデータにカーネル JSON シリアル化を使用します。useTsvFormat: true とは併用できません。 |
useTsvFormat | いいえ | false | ページ分割されたデータに JSON ではなく TSV 形式を使用します。 |
output | いいえ | 50,000行 | リクエストあたりの最大 Parquet ファイルサイズ(行数またはバイト数)。同期ごとに上書きすることもできます。 |
convertDatesToStrings | いいえ | false | このソースに属するすべての同期で、すべての日付を文字列として取り込みます。 |
proxy | いいえ | なし | SAP に接続するためのプロキシ設定。 |
cacheConfigurations | いいえ | なし | SAP オブジェクトタイプごとのキャッシュタイムアウト設定。 |
Foundry が SAP システムにアクセスできるように、エグレスポリシーを適切に設定してください。オンプレミスの SAP 環境では、通常、トラフィックを正しくルーティングするために Agent プロキシポリシーが必要です。
多くの SAP システムではカスタム署名の証明書を使用しているため、初めて接続を設定するときに SSL ハンドシェイク例外が発生する場合があります。お使いのシステムの正しいカスタム証明書を入手し、ソースに追加してください。
ソースを作成したら、SAP Source Explorer を使用して対話的に探索します。
ソースに移動し、ソースを探索して同期を作成を選択します。

リモート接続および SLT 接続の場合は、適切なコンテキストを選択します。

関心のあるテーブルまたはモジュールを選択し、グラフに追加します。

Foundry に抽出する SAP オブジェクトごとに同期を作成します。
同期設定 UI には、基本認証とアドバンスドの2つのモードがあります。アドバンスドタブには同期定義全体が YAML として表示され、以下で説明する一部のオブジェクトタイプや設定パラメーターには、このタブが必要です。基本認証の表示に戻ることもできますが、対応する UI がない YAML プロパティは表示されず、失われます。

同期設定 UI の SAP オブジェクトタイプドロップダウンでは、次のオブジェクトタイプを利用できます。
| オブジェクトタイプ | 説明 |
|---|---|
| ERP テーブル | カスタム Z* テーブルを含む、SAP ABAP データディクショナリ内の任意の ERP テーブルまたはビューからデータを抽出します。 |
| BW InfoProvider | BW InfoProvider(InfoCube、DataStore オブジェクト、または MultiProvider)からデータを抽出します。SAP BW のすべての権限概念が継承されます。 |
| BW BEx Query | BW システムで BEx クエリを実行します。以下の BEx クエリの設定を参照してください。 |
| SLT | SLT Operational Delta Queue (ODQ) からデータを抽出します。SLT は、CDC メカニズムを組み込んだトリガーベースのレプリケーションツールです。コンテキストが必要です。 |
| BW コンテンツエクストラクター | ERP Business Content エクストラクターを実行します。これは、ビジネスロジックと CDC メカニズムが組み込まれた、そのまま使用できる構造です。差分抽出に対応するエクストラクターには APPEND を使用します。エクストラクターを設定するを参照してください。 |
| 関数 | ERP または BW システムで、リモート呼び出し可能な関数または BAPI を実行します。以下の関数の設定を参照してください。 |
| ERP テーブルデータモデル | 主キー/外部キーモデルに基づいて、ERP テーブル間の関係を読み取ります。depth パラメーターを使用して、関係を何階層までたどるかを制御します。 |
| リモート ERP テーブル | リモート ERP システムの ERP テーブルからデータを抽出します。リモートシステムを識別するためのコンテキストが必要です。 |
| リモート BW InfoProvider | リモート BW システムの BW InfoProvider からデータを抽出します。コンテキストが必要です。 |
| リモート BW BEx Query | リモート BW システムで BEx クエリを実行します。コンテキストが必要です。 |
| リモート関数 | リモート ERP または BW システムで、リモート呼び出し可能な関数を実行します。コンテキストが必要です。 |
| トランザクションコード | ABAP List Viewer (ALV) を使用して SAP レポートからデータを抽出します。アドバンスドタブでのみ利用できます。 |
| HANA ビュー | SAP アプリケーション層で有効化された HANA ビューからデータを抽出します。アドバンスドタブでのみ利用できます。 |
| CDS ビュー | ABAP CDS (Core Data Services) ビューからデータを抽出します。アドバンスドタブでのみ利用できます。 |
リモートオブジェクトタイプには、リモートシステムを識別するコンテキストの値が必要です。リモート接続について詳しくはこちら。
BEx は、SAP BW InfoProvider を基盤とする多次元クエリフレームワークです。BEx クエリは標準の SAP BW アクセス方法を使用し、SAP BW のすべての権限概念を継承します。BEx クエリは、InfoProvider ビューに適用されるビジネスロジックを表します。
BEx クエリに動的な列(キー数値を持つ列に特性があり、各キー数値が特性値とともに繰り返されるもの)がある場合、動的な出力が作成されます。Foundry は動的な列に対応していないため、それに合わせてクエリを調整してください。
オブジェクトタイプとして BW BEx Query を選択すると、同期エディターに専用の BEx クエリビルダーが表示され、次のオプションを使用できます。
| オプション | 説明 |
|---|---|
| 技術名を使用 | 列名を技術名と、人が読みやすい名前(言語依存)の間で切り替えます。 |
| 列の除外 | 出力からキー特性を除外します。 |
| 自由特性 | BEx クエリで定義された自由特性を出力に追加します。 |
| フィルター | クエリの実行後にデータを絞り込みます(クエリ後のフィルター)。 |
| BEx クエリの入力変数 | BEx クエリの入力変数にフィルター値を指定します。 |
BEx のページング設定については、同期パラメーターセクションの高度な YAML パラメーターを参照してください。
SAP 関数モジュールは、SAP システムからのデータ抽出と、SAP システムへのデータの書き戻しの両方を実行できます。コネクターは、テーブル形式の出力パラメーターを1つ以上持つ関数からのみデータを抽出できます。
関数の結果を抽出するには、Foundry の技術ユーザーに次の権限ロールが必要です。
/PALANTIR/SERVICE_USER/PALANTIR/CONTENT_FUNCTION_ALL関数が2個以上の出力パラメーターを返す場合は、paramName パラメーターを使用して、Foundry データセットに書き込む出力を指定します。
Copied!1 2 3 4type: magritte-sap-source-adapter sapType: function obj: BAPI_USER_GETLIST paramName: USERLIST
入力パラメーターは inputParams を使用して設定できます。次の3種類の値に対応しています。
| データ型 | YAML 構文 |
|---|---|
| 単一の値 | PARAM_NAME: 'value' |
| 構造(辞書) | PARAM_NAME: '{"FIELD1": "value1", "FIELD2": "value2"}' |
| テーブル(辞書のリスト) | PARAM_NAME: '[{"FIELD1": "value1"}, {"FIELD1": "value2"}]' |
テーブル型の入力パラメーターを使用する例:
Copied!1 2 3 4 5 6type: magritte-sap-source-adapter sapType: function obj: EM_GET_NUMBER_OF_ENTRIES inputParams: IT_TABLES: '[{"TABNAME":"TSTC"}]' paramName: IT_TABLES
次のオブジェクトタイプはドロップダウンでは利用できず、アドバンスドタブから設定する必要があります。
SAP レポートによって生成されたデータを抽出します。ABAP List Viewer (ALV) を使用するレポートにのみ対応しています。
トランザクションコード名による指定:
Copied!1 2 3type: magritte-sap-source-adapter sapType: tcode obj: ZTEST_ALV
プログラム名による指定:
Copied!1 2 3 4type: magritte-sap-source-adapter sapType: tcode obj: RSUSR200 programType: program
次の任意のパラメーターを同期の YAML に追加できます。
| パラメーター | 説明 |
|---|---|
filter | 選択画面の変数にユーザー入力を渡します。出力フィールドを任意に絞り込むものではありません。 |
selectionVariant | 定義済みの選択画面バリアントを渡します。filter と組み合わせた場合、一致するバリアントの値は filter の値で上書きされます。 |
outputVariant | プログラムのレイアウト名を渡します。SAP の選択画面にレイアウトパラメーターが定義されているプログラムにのみ対応しています。 |
ingestionType: spool | 取り込む前に、レポートの出力をプリンターキューに送信します。SAP の内部テーブルの制限を超える大きなレポートに推奨します。設定すると、すべての列が String 型として取り込まれます。 |
SAP アプリケーション層で有効化された HANA ビューからデータを抽出します。前提条件については、SAP から HANA ビューを取り込むを参照してください。
新しい統合には、同期設定 UI で HANA ビューをオブジェクトタイプとして選択できる SAP ERP コネクターを使用します。
Copied!1 2 3type: magritte-sap-source-adapter sapType: hanaview obj: ZEXT_SBOOK
ABAP CDS (Core Data Services) ビューからデータを抽出します。ABAP CDS は、アプリケーションサーバーの中央データベース上でセマンティックデータモデルを定義します。
パラメーター付き CDS ビューからのデータ抽出には、現在対応していません。
インクリメンタル同期は、同じテーブルから APPEND 形式のトランザクションを実行できる、状態を保持する同期です。インクリメンタル同期を有効にするには、トランザクションタイプを APPEND に設定します。
次のインクリメンタルの種類を利用できます。
| インクリメンタルの種類 | 説明 |
|---|---|
| 単一フィールド | 単一のフィールドの値が、すでにインポートされた最大値以上である行をインポートします。 |
| 複数フィールド | 単一フィールドと同じですが、OR 演算子で複数のフィールドを組み合わせます。「作成」と「最終更新」のタイムスタンプフィールドが両方存在する場合に便利です。フィールドはカンマで区切ります。 |
| フィールドを連結 | 複数フィールドと同じですが、OR で組み合わせるのではなく、フィールドを連結します。「最終更新日」と「最終更新時刻」のフィールドが別々に存在する場合に便利です。 |
| 変更文書テーブルを使用 | SAP の変更文書テーブル(CDHDR および CDPOS)の更新に基づいて行をインポートします。対象テーブルに単調増加するフィールドがない場合に便利です。一部のオブジェクトでは、挿入が取得されない場合があります。 |
| ツインテーブルまたはツイン結合テーブルを使用 | 別の「ツイン」テーブルのフィールドがインクリメンタル条件を満たす場合に、対象テーブルから行をインポートします。ツイン結合テーブルを使用すると、複数のテーブルを結合したものを対象にできます。 |
次のテーブルは、オブジェクトタイプごとに対応するインクリメンタルの種類を示しています。
| オブジェクトタイプ | 単一フィールド | 複数フィールド | フィールドを連結 | 変更文書テーブル | ツインテーブル | SAP 組み込み | レプリケーション | リクエストベース |
|---|---|---|---|---|---|---|---|---|
| テーブル | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| リモートテーブル | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| InfoProvider | ✓ | ✓ | ✓ | |||||
| リモート InfoProvider | ✓ | ✓ | ✓ | |||||
| SLT | ✓ | |||||||
| エクストラクター | ✓ |
BEx クエリまたは関数では、インクリメンタル更新に対応していません。これらのオブジェクトタイプの同期はすべて完全抽出です。
インクリメンタルフィールドの値は、単調増加する値であることが理想的です。システムは、ある日付の途中で同期が実行された場合にデータの欠落を防ぐため、「以上」の比較を使用します。その結果、Foundry データセットに重複する値が含まれる場合があるため、変換パイプラインの最初のステップで削除する必要があります。
テーブルタイプのインクリメンタル同期では、maxRowsPerSync 設定(詳細設定タブで設定)を使用して、1回の実行で返される行数の概算上限を設定します。これは、ネットワーク障害などの断続的な問題によって長時間の同期が中断される可能性がある場合に、大きなテーブルの初回同期を、より小規模で障害に強い一連の実行に分割するのに便利です。設定の詳細については、YAML パラメーターの詳細設定を参照してください。
インクリメンタルツインテーブル設定では、ツインテーブルを指定します。インクリメンタルツインマッピング設定では、主要テーブルとツインテーブルの結合条件を定義します。

マッピング構文:
{PRIMARY_TABLE_NAME}-{FIELD_NAME}={TWIN_TABLE_NAME}-{FIELD_NAME}
複数の結合条件は、セミコロン(AND 演算子)で組み合わせることができます。
SAP BW では、DSO と InfoCube はデータ転送プロセス(DTP)を使用して読み込まれます。各 DTP は読み込みリクエストを作成し、コネクターはこれらのリクエストを使用して変更されたデータを取得します。
この機能は、圧縮されていないリクエストにのみ対応しています。Foundry に読み込む前にリクエストを圧縮しないでください。読み込み前にリクエストが圧縮された場合、同期は失敗し、初回の読み込みをやり直す必要があります。
詳細設定タブで設定します。
Copied!1 2 3 4type: magritte-sap-source-adapter sapType: infoprovider obj: <technical-name-of-infoprovider> incrementalType: REQUEST
フルロードを強制し、インクリメンタル取り込みを再初期化するには、次の手順を実行します。
resetIncrementalState: true を追加します。incremental* パラメーターはそのまま保持します)。resetIncrementalState: true を削除します。以降の同期では、通常どおりインクリメンタルな追加が再開されます。
次のパラメーターは、追加設定タブまたは詳細設定 YAML ビューで利用可能です。
| パラメーター | 適用対象 | 説明 |
|---|---|---|
| 列の除外 | ERP テーブル、リモート ERP テーブル | 抽出前に選択した列を除外します。パフォーマンスが向上し、機密性の高いフィールドや不要なフィールドの取り込みを防ぎます。 |
| タイムスタンプ | すべて | /PALANTIR/TIMESTAMP(同期の実行時刻)と /PALANTIR/ROWNO(同期内のレコード順序)の列を追加します。下流でレコードの重複を排除するのに役立ちます。/PALANTIR/ROWNO は、SLT または CDPOS/CDHDR のインクリメンタル(差分連携)モードを使用する場合にのみ意味を持ち、値が大きいほど新しい変更を示します。 |
| ページサイズ | すべて | ページごとに返される行数です。デフォルトは50,000です。デフォルト未満の値は効果がありません。デフォルトを小さくするには、SAP アドオンへのシステムコールが必要です。 |
| 再試行回数 | すべて | リソース不足によってリクエストに失敗した場合の再試行回数です。 |
| 再試行の遅延 | すべて | 再試行の間隔(秒)です。 |
| パラメーター名 | 関数 | 関数が複数の出力パラメーターを返す場合に、Foundry データセットに書き込む出力テーブルを選択します。 |
| 深さ | ERP テーブルデータモデル | たどるリレーションシップの階層数です。第1階層には 1、第2階層には 2 を使用し、それ以降も同様です。 |
| トレースログ | すべて | オンに設定すると、この同期のトレースログが有効になります。 |
| 取得オプション | SLT | XML は圧縮データを使用して取得します(高速)。Direct は文字列として取得します。XML でデータ内容のエラーが発生する場合は、Direct を使用します。 |
| デバッグログ | すべて | デバッグログを有効にします。同期中に SAP でバックグラウンドプロセスが起動するため、リソースを消耗する可能性があります。慎重に使用してください。 |
| 継続的なリソースチェック | すべて | すべてのページングリクエストをリソースチェックの対象にするか、最初のリクエストのみを対象にするかを制御します。 |
| リソースチェック | すべて | 無効にすると、すべてのリソースチェックが削除されます。SAP に過剰な負荷がかかる可能性があります。慎重に使用してください。 |
| フィルター | すべて | SAP のフィールド値と演算子を使用して、抽出したデータを絞り込みます。動的フィルターのキーワードをサポートします。 |
| 詳細 YAML パラメーター | パラメーターによって異なる | maxRowsPerSync、bexSettings、ignoreUnexpectedValues、outputSettingsOverride。 |
デバッグログを有効にすると、同期中に実行されるバックグラウンドプロセスが SAP システムで起動します。これにより、リソースが消耗し、ほかのユーザーに影響する可能性があります。慎重に使用してください。
オンに設定すると、この同期のデバッグログが有効になります。
オンの場合、すべてのページングリクエストがリソースチェック(メモリー、CPU)の対象になります。オフの場合、最初のページリクエストのみがチェックされます。詳細については、パフォーマンスパラメーターを参照してください。
リソースチェックを無効にすると、利用可能なメモリー、CPU、プロセスに関係なく同期が実行されます。これにより、SAP システムに過剰な負荷がかかる可能性があります。慎重に使用してください。
オフに設定すると、この同期のすべてのリソースチェックが無効になります。
SAP から抽出したデータを絞り込みます。すべてのフィールド名はデータディクショナリと一致している必要があります。
| 演算子 | 意味 |
|---|---|
, | OR |
; | AND |
: | 範囲内 |
= | 等しい |
!= | 等しくない |
>, >=, <, <= | 比較 |
* | ワイルドカード |
例:
PRICE=500:650CUSTOMER=A,B,CPRICE=500:650;CUSTOMER=A,B,CMATERIAL=PAL*,DIS*,SAP*DATE>=20190809動的フィルターでは、特別なキーワードと関数を使用して、より柔軟なフィルター式を作成します。アドオンのバージョン SP26 以降で利用可能です。
固定キーワード
| キーワード | 説明 |
|---|---|
[CURRENTYEAR] | 現在の年(YYYY 形式)です。 |
[TODAY] | 今日の日付(YYYYMMDD 形式)です。 |
[LASTDAYOFMONTH] | 今月の最終日(YYYYMMDD 形式)です。 |
[LASTDAYOFLASTMONTH] | 前月の最終日(YYYYMMDD 形式)です。 |
[FIRSTDAYOFMONTH] | 今月の初日(YYYYMMDD 形式)です。 |
[FIRSTDAYOFLASTMONTH] | 前月の初日(YYYYMMDD 形式)です。 |
日付計算関数
| 関数 | 説明 |
|---|---|
[ADDDAY] | 選択した日付に日数を加算します。例: [ADDDAY(22102022,1)] → 23102022。 |
[ADDMONTH] | 選択した日付に月数を加算します。 |
[ADDYEAR] | 選択した日付に年数を加算します。 |
[GETMONTH] | 選択した日付の月を2桁の値 (01–12) で返します。 |
[GETDAY] | 月内の日を2桁の値で返します。 |
[GETYEAR] | 選択した日付の年を返します。 |
関数は、固定キーワードと直接組み合わせることも、入れ子にすることもできます。
[ADDDAY([TODAY], 1)][GETDAY([ADDDAY([FIRSTDAYOFMONTH], -1)])]例:
BUDAT>[TODAY]BUDAT>[ADDDAY([FIRSTDAYOFMONTH], -1)]次のパラメーターには詳細設定タブが必要で、基本ビューには対応する設定がありません。
maxRowsPerSync(SLT およびテーブルタイプのインクリメンタル同期):同期の1回の実行で返される行数を制限します(近似値)。非常に大きなテーブルの初回同期を、小規模な実行に分割するのに役立ちます。Copied!1maxRowsPerSync: 500000
bexSettings(BEx のみ):BEx クエリのページングを設定します。コネクターのバージョン SP22 以降で利用可能です。Copied!1 2 3bexSettings: bexPaging: true bexMemberLimit: 10
bexPaging:自動生成されたフィルターを使用するページングを有効にします。デフォルトは false です。bexMemberLimit:フィルター候補を選択するためのしきい値です。この値より多くのメンバーを持つ InfoObjects は、フィルター生成から除外されます。デフォルトは 200 です。最小値は 2 です。-ignoreUnexpectedValues:同期が Unexpected value encountered in SAP data Failed to parse value XXX in field YYY で失敗する場合、日付または数値の値をパースできていません。同期を続行し、パースできない値を null に設定するには、次のようにします。
Copied!1ignoreUnexpectedValues: true
同期の終了時に、パース例外の概要を含む警告がログに記録されます。
この設定には、基本ビューに対応する設定がありません。基本ビューに戻ると、この設定は失われます。
-outputSettingsOverride:特定の同期について、ソースレベルの Parquet ファイルサイズ設定をオーバーライドします。
Copied!1 2 3 4 5outputSettingsOverride: maxFileSize: type: rows rows: max: 10000
Copied!1 2 3 4 5outputSettingsOverride: maxFileSize: type: bytes bytes: approximateMax: 400MB
バイト単位で指定する最大サイズは近似値であり、生成されるファイルのサイズはわずかに小さく、または大きくなる場合があります。バイト値は、Parquet ライターのメモリー内バッファーサイズの少なくとも2倍である必要があります。このバッファーサイズのデフォルトは 128 MB です。
SAP からのストリーミング同期は、開発のベータ版段階にあり、お使いのエンロールメントでは利用できない場合があります。開発が進行している間は、機能が変更される場合があります。
ストリーミング同期は、SAP SLT Replication Server を介した接続でのみサポートされ、接続の種類として SLT を明示的に設定したソースが必要です(上記のストリーミング同期を有効にするを参照)。
各ストリーミング同期は、SLT Replication Server に専用の Operational Delta Queue (ODQ) を作成し、購読します。Foundry はキューを定期的にポーリングします(デフォルトの間隔:1秒)。
遅延を最小限に抑えるには、SLT Replication Server で利用可能なダイアログワークプロセスの数が、アクティブなストリーミング同期の数以上である必要があります。
SAP ソースを開きます。概要ページでストリーミング同期のテーブルまで下にスクロールし、+ ストリーミング同期を作成を選択します。

ストリーミングする SAP テーブルの名前を入力します。

出力ストリーミングデータセットの場所を選択します。

続行する前に、画面下部のプレビューペインの読み込みが完了していることを確認してください。ストリーミングデータセットのスキーマは、このプレビューから生成されます。場合によっては、プレビューにデータが表示されず、スキーマのみが表示されることがありますが、それで十分です。
ストリーミング同期を作成を選択します。ストリームをすぐに開始するか、作成後に手動で開始するかを選択できます。

Data Connection Agent または SAP システムのダウンタイム後にストリームが自動的に再開されるようにするには、ストリーミングデータセットに1分間隔の時間トリガーでスケジュールを設定します。
スループット設定を通常から非常に高いに切り替えると、パフォーマンスが向上する場合がありますが、使用するパーティションの数は増加します。複数のパーティションを使用する場合、SAP からの一意のレコード間の順序を保証するために、パーティションキーを設定する必要があります。これらのキーは、SAP のテーブルの主キーに対応している必要があります。
SAP Webhook を使用すると、Foundry から汎用モジュール(通常は BAPI(Business Application Programming Interface))を呼び出して、SAP にデータを書き戻せます。Webhook の設定方法の概要については、Webhookを参照してください。
SAP Webhook は、Foundry が管理するクラウドコンピューティングでの Foundry ワーカー接続をサポートしています。SAP Webhook には、Data Connection Agent経由で実行するのではなく、このランタイムを使用することを推奨します。Foundry ワーカーに設定済みの既存の SAP ソースは、移行することなく、自動的にクラウド実行を利用できます。Data Connection Agent 上で実行されている SAP ソースでクラウド実行の Webhook を利用するには、Foundry ワーカーに切り替える必要があります。
Webhook のタスク本文は、Handlebars ↗ 構文を使用して作成する JSON ドキュメントです。呼び出す SAP 汎用モジュールの名前を指定し、その入力を指定して、返す出力を選択します。
| フィールド | 必須 | データ型 | 説明 |
|---|---|---|---|
function-name | はい | 文字列 | 呼び出す SAP 汎用モジュールまたは BAPI。例:BAPI_SALESORDER_CHANGE。 |
inputs | いいえ | オブジェクト、またはオブジェクトの配列 | 関数の入力パラメーター。1件のレコードを書き戻すには1個のオブジェクトを指定し、1回の呼び出しで複数のレコードを書き戻すにはオブジェクトの配列を指定します。関数が入力を必要としない場合は省略します。 |
output | いいえ | 文字列、または文字列の配列 | 返す出力変数。1個の変数名を指定するか、複数の変数を返す場合は名前の配列を指定します。 |
commit | いいえ | ブール値 | 変更をコミットするかどうか。省略するとコミットされます(デフォルト)。コミットを抑制するには false に設定します。標準の BAPI では、変更を永続化するためにコミットが必要です。 |
parallel | いいえ | オブジェクト | 並列ライトバックを選択し、必要に応じてその実行を調整します。複数のレコードを書き戻すを参照してください。 |
remote | いいえ | オブジェクト | リモートの SAP システムを対象にします。システムを識別する context 文字列を含みます。例:{ "context": "<SAP_CONTEXT_NAME>" }。 |
api-version | いいえ | Integer | SAP アドオンの API バージョン。デフォルトは 1 です。バージョン2の機能を使用するには 2 に設定します。SAP アドオンの互換性を参照してください。 |
次の例では、BAPI_SALESORDER_CHANGE を呼び出して販売伝票の購入日を変更し、SAP の RETURN テーブルを返します。リモートの SAP システムを対象にするには、システムのコンテキスト名を指定する remote ブロックを追加します。
Copied!1 2 3 4 5 6 7 8 9 10 11{ "function-name": "BAPI_SALESORDER_CHANGE", "inputs": { "SALESDOCUMENT": {{json sales-doc-id}}, "ORDER_HEADER_IN": { "PURCH_DATE": {{json purchase-date}} }, "ORDER_HEADER_INX": { "UPDATEFLAG": "U", "PURCH_DATE": "X" } }, "output": "RETURN", "remote": { "context": "<SAP_CONTEXT_NAME>" }, "api-version": 2 }
一括ライトバックと並列ライトバックは、OAuth 2.0 認証をサポートしていません。
1回の呼び出しで複数のレコードを書き戻すには、inputs にオブジェクトの配列を渡し、output に必要な変数を列挙します。任意の parallel ブロックを使用して実行を調整します。次の例では、BAPI_PR_CREATE を使用して2件の購買依頼を作成し、2個の出力変数を返します。
Copied!1 2 3 4 5 6 7 8 9 10 11{ "function-name": "BAPI_PR_CREATE", "commit": true, "parallel": { "max-jobs": 2, "max-calls-per-job": 4 }, "inputs": [ { "PRHEADER": { "PR_TYPE": "NB" }, "PRITEM": [ { "MATERIAL": "100-100", "PLANT": "1100", "QUANTITY": "1" } ] }, { "PRHEADER": { "PR_TYPE": "NB" }, "PRITEM": [ { "MATERIAL": "100-200", "PLANT": "1100", "QUANTITY": "2" } ] } ], "output": ["NUMBER", "PRHEADEREXP"], "api-version": 2 }
Webhook の実行は SAP 側で並列化できます。inputs が2個以上のオブジェクトを含む配列である場合、または parallel ブロックを明示的に指定した場合は、空のブロックであっても自動的に並列化されます。任意の parallel ブロックを使用して実行を調整します。
max-jobs — 同時に実行するジョブの最大数。max-calls-per-job — 各ジョブが処理するレコードの最大数。省略した設定には SAP アドオンで定義された値が使用されます。デフォルトは3個のジョブと、ジョブあたり4回の呼び出しです。
max-jobs をレコード数より大きい値に設定しても問題ありません。余分なジョブは使用されず、リソースが無駄になることはありません。
parallel ブロックを指定しない1件のレコードの場合、レスポンスはリクエストした出力変数の数によって異なります。
1件のレコードで出力変数が1個の場合、その変数の行のリストが返されます。
Copied!1 2 3[ { "NUMBER": "0010048439" } ]
1件のレコードで出力変数が複数の場合、変数名をキーとするオブジェクトが返されます。output["NUMBER"] のように名前でアクセスします。
Copied!1 2 3 4{ "NUMBER": [ { "NUMBER": "0010048439" } ], "PRHEADEREXP": [ { "PREQ_NO": "0010048439", "PR_TYPE": "NB" } ] }
並列ライトバックでは、入力が1件しかない場合でも、入力レコードごとに1個の要素を持つ配列が返されます。以下に例を示します。
Copied!1 2 3 4 5 6 7[ { "OUTPUT": { "NUMBER": [ { "NUMBER": "0010048439" } ], "PRHEADEREXP": [ { "PREQ_NO": "0010048439" } ] }, "ROWNO": 1, "MSG": [ { "MSGTYP": "S", "MSGTXT": "Purchase requisition 0010048439 created" } ] } ]
OUTPUT は、そのレコードの結果であり、単一レコードのレスポンスと同じ形式です。ROWNO は、inputs 配列内の対応するエントリーの位置(1から始まる)です。これにより、各結果をその入力に対応付けられます。MSG は、そのレコードの SAP メッセージログです。各メッセージには、種類(MSGTYP:成功は S、エラーは E、警告は W、情報は I、中止は A)とテキスト(MSGTXT)が含まれます。レコードごとに個別のメッセージが報告されるため、どのレコードの処理に成功し、どのレコードの処理に失敗したかを確認できます。HTTP レスポンスが成功を示さない場合、Webhook はエラーを返します。Webhook のレスポンスが成功を示していても、SAP の業務エラーが含まれている場合があります。SAP の RETURN 出力が利用可能な場合は、その出力をリクエストして内容を確認し、レコードごとの MSG エントリーを確認して、要求した変更に成功したかどうかを判断してください。
複数の出力変数、一括ライトバック、および並列ライトバックを使用するには、api-version を 2 に設定します。バージョン 2 には SAP アドオン 2.29.0 以降が必要です。api-version を省略すると、Webhook はバージョン 1 を使用します。このバージョンは、単一の入力と単一の出力変数をサポートし、parallel ブロックは使用できません。
バージョン 2 に切り替える際は、0 より大きい値の retries-per-request 設定を削除してください。
次のガイドでは、SAP 側と Foundry 側の両方の設定を伴うワークフローについて説明しています。
STXL テーブルから長いテキストを解凍して取り込みます。