Appeler en ABAP des APIs internes en passant par un proxy local

Traitement en cours…
Terminé ! Vous figurez dans la liste.

Si vous souhaitez appeler en local une de vos APIs à des fins de tests, ou encore pour l’utiliser dans un de vos objets de développement, vous pouvez utiliser un proxy local ( On premise ou Private Cloud seulement ).

Prenons par exemple l’API suivante ( API_OUTBOUND_DELIVERY_SRV ) sur S/4 Hana Private Cloud : https://api.sap.com/api/OP_API_OUTBOUND_DELIVERY_SRV_0002/overview

Nous utiliserons cette API pour mettre à jour une livraison sortante dans SAP.

Développement et appel de l’API

Pour l’appeler dans un développement local on procèdera comme suit :

  • Exposition du service ( ici oData V2 )
  • On vérifie si ETag il y a en regardant dans le projet en SEGW : ici DeliveryVersion (servira plus tard)
  • On écrit enfin le code

1/ Déclaration des variables et création du proxy client

2/ Création de la requête GET pour obtenir le ETag

Les données reçues de l’API sont placées dans ls_business_data

3/ Création de la requête PATCH pour modifier le champs DeliveryDocumentBySupplier

Conclusion

Voici une solution pour appeler des APIs en interne dans un programme ABAP. Via cette méthode il n’y a pas d’entête HTTP précisé dans la requête puisque tout se fait en interne dans le même système SAP.

Cependant, la classe /IWBEP/CL_CP_CLIENT_PROXY_FACT n’est pas disponible sur le cloud (BTP, ABAP environment et S/4 Cloud). En cas de développement dans ces environnements, il vaudra mieux s’orienter vers l’utilisation d’API qui ont été créées en utilisant le framework RAP et ainsi utiliser l’EML pour interagir directement avec le business object, ou utiliser plutôt la classe /IWBEP/CL_CP_FACTORY_REMOTE et donc la création d’un remote proxy.

Pour les tests unitaires, on pourra utiliser en ABAP Cloud la classe /IWBEP/CL_CP_FACTORY_UNIT_TST.

Laisser un commentaire