Foire aux questions KB0401952
E-mail
OpenAPI : solution de contournement Obtention de l'ID de document à partir de l'API de création de rapports analytiques pour les pièces jointes de l'API d'approbation externe
Cet article de la base de connaissances a été traduit automatiquement pour vous faciliter la tâche. SAP ne garantit pas l'exactitude ou l'exhaustivité de cette traduction automatique. Vous pouvez trouver le contenu d'origine en passant à l'anglais à l'aide du sélecteur de langue.
Symptôme

La tentative de récupération des ID de document à partir de l'appel de l'API Obtenir les détails de l'entité (/{entity_type}/{entity_id}) ne retourne pas le DocumentId de la pièce jointe.


Cause

L'API d'approbation externe permet à l'application client de demander les détails d'un document identifié, à l'aide du point de terminaison GET /{entity_type}/{entity_id} spécifique au type de document d'intérêt. Les tâches (c'est-à-dire la classe DocumentTask) sont directement liées à un type de données spécifique qui peut être un document (comme ContractAgreement ou un document standard), un dossier (classe WorkSpaceFolder) ou un espace de travail (classe ContractWorkspace).

La conception actuelle de cette API vous donnerait uniquement les détails des données directement liées à la tâche. Ainsi, s'il est directement lié à un document, vous obtenez les détails du document (comme DocumentID) et s'il est lié à un espace de travail, vous obtenez les détails de l'espace de travail (champs d'en-tête). Les espaces de travail contiennent des documents, mais comme la tâche est liée à l'espace de travail et non au document (en raison de l'imbrication d'objets), vous n'obtiendrez pas cet ID de document pour les tâches liées à l'espace de travail. La documentation est correcte dans la mesure où l'API prend en charge les tâches liées aux espaces de travail, mais elle ne fournit que des champs d'en-tête d'espace de travail et pas tous les documents imbriqués dans un espace de travail.

Du point de vue de la conception, si vous liez la tâche directement à l'espace de travail, cela signifie que vous n'avez pas besoin que l'utilisateur vérifie un document spécifique et qu'il ait uniquement besoin de vérifier le contrat au niveau de l'en-tête. Si vous avez besoin qu'un utilisateur vérifie des documents spécifiques, vous pouvez créer des tâches spécifiquement liées à ces documents.


Résolution

La solution de contournement possible pour récupérer les DocumentIds est d'utiliser un viewTemplate personnalisé dans l'API de création de rapports analytiques par ProjectIds, puis d'utiliser le point de terminaison du document de l'API d'approbation externe pour récupérer le document.

Obtenir l'ID du document à partir de l'API de création de rapports analytiques :

  1. Dans l'API de création de rapports analytiques, créez un modèle personnalisé pour récupérer InternalId par ProjectId, le type de document est DocumentFact.
    curl --location --request POST '{{runtime_url}}/viewTemplates/<template_name> ?realm=<nom_domaine>' \
    --header "apiKey: <votre_clé_api>" \
    --data-raw '{
    "statut": "publié",
    "documentType": "DocumentFact",
    "selectAttributes" : [
    "LoadCreateTime",
    "LoadUpdateTime",
    "InternalId",
    "ProjectInfo",
    "Titre",
    "Description",
    "DocumentType",
    "Statut",
    "CreateDate",
    "LastModified",
    AclId
    ],
    "filterExpressions" : [
    {
    "name": "ProjectId",
    "field": "ProjectInfo.ProjectId",
    "op" : "=",
    "defaultValue" : valeur nulle
    }
    ]
    }'
  2. Une fois le modèle personnalisé créé, l'API synchrone de reporting d'analyse pour accéder aux données
    curl --location --request GET '{{runtime_url}}/views/<template_name> ?realm=<nom_domaine>&filtres={"IDProjet":"<ID_projet>"}' \
  3. Le champ InternalId est l'identifiant du document. Sauvegardez-le

Obtenir les données du document à partir de l'API d'approbation externe :

  1. Utiliser le point de terminaison Get/Document pour spécifier l'ID du document
    https://openapi.ariba.com/api/sourcing-approval/v1/prod/Document/<InternalId>?realm=<nom_domaine>
  2. Vous recevrez un résultat JSON du document avec fileContent, extension
  3. Décoder le contenu du fichier à partir du codage Base64 et sauvegarder le flux en fonction de la zone d'extension (pdf, docx, xlsx, etc.)

Voir également


S'applique à

Sourcing stratégique > Sourcing stratégique - API REST
Supplier Lifecycle and Performance > Supplier Lifecycle and Performance - API ouverte

Conditions d'utilisation  |  Copyright  |  Informations sur la sécurité  |  Confidentialité