Table Entities – scénarios transactionnels

Introduction 

Dans notre dernier article (lien) nous avions vu comment les tables entities nous permettraient de simplifier la création de nos CDS en combinant les fonctionnalités des tables classiques DDIC et des CDS en 1 seul objet. 

Cependant, nous relevions le fait qu’il était encore impossible de créer des opérations de modification sur ces Business Object via RAP. 

  • Il est désormais possible d’implémenter et de développer des opérations transactionelles en utilisant RAP avec les table entities, et d’appeler cet objet via EML dans des programmes ABAP ou via OData dans des applications Fiori/Web API. 
  • Nous verrons également les limitations que nous avons rencontré lors de nos tests. 
  • Dans cet exemple, nous reprendrons le cas que nous avions développé et visible sur notre GitLab

Les modifications apportées à ces objets sont également disponibles sur un nouveau repository. 

I. Créer les BDEF

Pour rappel, notre exemple représentait les différentes commande reçues par une boulangerie. 

Pour cela, nous avons d’abord essayé en utilisant le RAP Generator Object comme vu dans un précédent article (lien), mais il semblerait qu’il ne soit pas encore possible d’effectuer ces créations en automatique pour l’instant. 

Nous créons donc manuellement les 2 BDEF qui nous intéressent pour représenter nos commandes et les items associés. 

Dans le but de simplifier l’exemple, nous n’ajoutons pas l’association avec la table entity représentant les pâtisseries référencée dans la boulangerie mais nous aborderons ce sujet dans un article prochain évoquant les cross associations désormais disponible en RAP. 

Ici nous pouvons voir que nous avons les définitions des opérations nécessaires. 

Comme chaque ligne de commande est identifié par un UUID unique, nous le générons en automatique via un numbering (managed). 

Idem pour le UUID des items (chaque item referencé a un UUID d’une commande à son propre UUID unique). 

Également, nous avons activé le create-by-association sur notre composition. 

Comme pour n’importe quel autre objet rap managed, il est ensuite possible d’ajouter des validations, determinations, checks d’autorisations, actions, etc…

A noter :

  • Nous n’avons pas activé le draft sur cet objet RAP, car les tables entities ne supportent pas encore cette fonctionnalité (lien). Cependant il aurait été possible de créer manuellement une table qui aurait été utilisée pour sauvegarder les drafts.
  • Nous avons du remplacé le type enum dans notre table entity ZC_NAKERY_ORDERS_ITEMS car non supporté.

II. Tests

1. Test EML

Nous avons créé ici un petit cas de test qui montre que suite à la création de cet objet RAP, nous pouvons interagir avec le BO via EML. 

  • Via une opération create : nous créons une commande 
  • Via une opération create-by-entity : Nous créons un item à la commande 

Ces données sont bien sauvegardées dans les CDS entities. 

2. Test OData et Fiori

Nous avons également créé une application Fiori en utilisant l’outil de création via ADT. 

Mais il semblerait que le trial BTP ait quelques soucis pour le moment, nous mettrons à jour l’article une fois la correction effectuée par SAP. 

Idem avec le swagger :

Conclusion 

Vous pouvez désormais utiliser les cds tables entities comme objet RAP pour toutes les opérations CRUD. 

Il reste encore quelques détails à apporter à cette nouvelle fonctionnalité, mais ça ne saurait tarder. 

Laisser un commentaire