よくある質問 KB0401952
電子メール
OpenAPI: External Approval (外部承認) API の添付ファイルに対する Analytical Reporting (分析レポート) API の回避方法からのドキュメント ID の取得
このナレッジベース記事は、お客様の利便性のために機械翻訳されています。SAP は、この機械翻訳の正確性または完全性に関して、いかなる保証も行うものではありません。言語選択で英語に切り替えると、元のコンテンツを確認できます。
症あてに

Get Entity Details (エンティティ詳細取得) API (/{entity_type}/{entity_id}) 呼び出しからドキュメント ID を取得しようとしても、添付ファイルの DocumentId が返されません。


原氏

External Approval (外部承認) API により、クライアントアプリケーションで、対象のドキュメントの種類に固有の GET /{entity_type}/{entity_id} エンドポイントを使用して、識別されたドキュメントの詳細を要求することができます。タスク (DocumentTask クラス) は、ドキュメント (ContractAgreement や通常のドキュメントなど)、フォルダ (WorkSpaceFolder クラス)、またはワークスペース (ContractWorkspace クラス) の 1 つの特定の種類のデータに直接リンクされます。

この API の現在の設計では、タスクに直接リンクされているデータの詳細のみが提供されます。そのため、ドキュメントに直接リンクされている場合は、ドキュメントの詳細 (DocumentID など) が表示され、ワークスペースにリンクされている場合は、ワークスペースの詳細 (ヘッダーフィールド) が表示されます。ワークスペースにはドキュメントが含まれますが、タスクは (オブジェクトのネストが原因で) ドキュメントではなくワークスペースにリンクされているため、ワークスペースにリンクされたタスクのドキュメント ID は取得されません。このドキュメントは、ワークスペースにリンクされたタスクが API でサポートされているという点で正しいですが、ワークスペースヘッダーフィールドのみが提供され、ワークスペース内でネストされたすべてのドキュメントが提供されるわけではありません。

設計の観点から見た場合、タスクをワークスペースに直接リンクした場合、ユーザーが特定のドキュメントを確認する必要はなく、ユーザーがヘッダーレベルの観点から契約を確認するだけで済みます。ユーザーが特定のドキュメントを確認する必要がある場合は、それらのドキュメントに明確にリンクされたタスクを作成することができます。


解決

DocumentIds を取得するために実行可能な回避策は、Analytical Reporting (分析レポート) APIProjectIds によるカスタム viewTemplate を使用し、External Approval (外部承認) API ドキュメントエンドポイントを使用してドキュメントを取得することです。

Analytical Reporting (分析レポート) API からのドキュメント ID の取得:

  1. Analytical Reporting (分析レポート) API でInternalId を ProjectId 別に取得するためのカスタムテンプレートを作成します。ドキュメントの種類は DocumentFact です。
    curl --location --request POST '{{runtime_url}}/viewTemplates/<template_name>?realm=<realm_name>' \
    --header 'apiKey: <your_api_key>' \
    --data-raw '{
    "status": "published",
    "documentType": "DocumentFact",
    "selectAttributes": [
    "LoadCreateTime",
    "LoadUpdateTime",
    "InternalId",
    "ProjectInfo",
    "タイトル",
    "説明",
    "DocumentType",
    "ステータス",
    "登録日付",
    "LastModified",
    "AclId"
    ]、
    "filterExpressions": [
    {
    "name": "ProjectId",
    "field": "ProjectInfo.ProjectId",
    "op": "=",
    "defaultValue": null
    }
    ]
    }'
  2. カスタムテンプレートが作成されると、Analysis reporting Synchronous API によってデータが取得されます。
    curl --location --request GET '{{runtime_url}}/views/<template_name>?realm=<realm_name>&filters={"ProjectId":"<Project_Id>"}' \
  3. フィールド InternalId はドキュメント ID です。それを保存します。

External Approval (外部承認) API からのドキュメントデータの取得:

  1. Get /Document エンドポイントを使用して、文書 ID を指定します。
    https://openapi.ariba.com/api/sourcing-approval/v1/prod/Document/<InternalId>?realm=<レルム名>
  2. fileContent、拡張子を持つ文書の JSON 結果を受信します。
  3. FileContent を Base64 エンコーディングからデコードし、拡張項目 (pdf、docx、xlsx など) に従ってストリームを保存します。

サーバにアクセスします。


該当項目

Strategic Sourcing > Strategic Sourcing - REST API
Supplier Lifecycle & Performance > Supplier Lifecycle & Performance - Open API

使用条件  |  Copyright  |  セキュリティに関する情報  |  情報の保護