Gestion des drafts
La gestion des drafts est un mécanisme des applications SAP Fiori, de RAP et de CAP qui stocke les modifications non sauvegardées d'un business object sous forme de draft côté serveur, séparé des données actives. Elle permet aux utilisateurs de reprendre un travail interrompu, d'exécuter des validations pendant la saisie et de voir quand quelqu'un d'autre modifie le même objet, jusqu'à ce que Save transforme le draft en version active.
L'essentiel
- Type
- Modèle transactionnel (version intermédiaire d'un business object)
- Couche
- Logique métier et modèle de données, visible dans les Applications d'interface
- Activé dans
- Behavior definition RAP (with draft), modèle de service CAP
- Variantes
- Draft exclusif, draft collaboratif
- Prise en charge UI
- SAP Fiori elements pour OData V2 et V4
- Qui l'utilise
- Développeurs ABAP et CAP, développeurs SAP Fiori
- S'applique à
- SAP S/4HANA (toutes les options de déploiement), SAP BTP
Couche : Logique métier et modèle de donnéesOù se situe-t-il ? ▾
Couche : Logique métier et modèle de données
Concerne aussi : Applications d'interface
Ouvrir la carte d'architecture →Comment fonctionne la gestion des drafts ?
Dans une application compatible draft, la modification suit quatre étapes :
- Un utilisateur choisit Edit sur un objet existant, ou commence à en créer un nouveau. Le back-end crée une instance de draft dans une table de draft distincte.
- Chaque modification est écrite dans le draft en arrière-plan, si bien que rien n'est perdu si le navigateur se ferme.
- Les validations, le contrôle des champs et les valeurs par défaut s'exécutent sur le draft pendant que l'utilisateur travaille, et les messages apparaissent avant la sauvegarde.
- Save active le draft : son contenu devient la version active et le draft est supprimé. Discard supprime le draft à la place.
Les données actives restent inchangées jusqu'à l'activation : une demande d'achat pour Cedar Office Supply chez Alder Manufacturing peut être commencée le vendredi et terminée le lundi. La gestion des drafts sépare donc le travail en cours des données métier au niveau de la persistance, et pas seulement dans le navigateur.
Quelle différence entre draft exclusif et draft collaboratif ?
- Draft exclusif : un seul utilisateur possède le draft. Seul le propriétaire peut le modifier, l'activer ou le rejeter, et les autres utilisateurs ne voient pas les modifications avant leur sauvegarde.
- Draft collaboratif : plusieurs utilisateurs autorisés peuvent travailler simultanément sur le même draft. Dans SAP Fiori elements pour OData V4, l'object page indique qui participe au draft et verrouille un champ pendant que quelqu'un le saisit.
En RAP, le choix tient en un seul mot-clé dans l'en-tête de la behavior definition : with draft pour un draft exclusif ou with collaborative draft pour des drafts collaboratifs. Avant de prévoir un draft collaboratif, vérifiez ce mot-clé dans la documentation des mots-clés ABAP de votre release. Le draft exclusif reste le cas courant, et le draft collaboratif convient aux objets que plusieurs personnes complètent ensemble.
Comment fonctionnent les verrous et la durée de vie des drafts ?
Les drafts modifient le comportement du verrouillage. En RAP :
- Lorsqu'un draft est créé pour un objet existant, l'instance active reçoit un verrou exclusif qui dure un temps défini, même si la session de l'utilisateur se termine.
- Après cette période, le draft entre dans une phase de verrouillage optimiste. Si le propriétaire reprend son travail, le framework tente de verrouiller à nouveau l'objet.
- Si quelqu'un modifie directement l'objet actif entre-temps, le draft devient invalide.
- Les drafts laissés sans modification sont supprimés automatiquement par un service de cycle de vie des drafts, par défaut après 28 jours selon la documentation RAP de SAP.
Un champ total ETag, obligatoire pour les business objects RAP compatibles draft, détecte si la version active a changé pendant que le draft existait. La gestion des drafts remplace ainsi un verrou de session court par une réservation plus longue qui finit par expirer.
Comment activer la gestion des drafts ?
- RAP : ajoutez le mot-clé draft à l'en-tête de la behavior definition, ainsi qu'une table de draft par entité et un total ETag. Le draft s'applique à l'ensemble du business object, jamais à des entités isolées. RAP prend en charge le draft à partir d'ABAP 7.55, ce qui correspond à SAP S/4HANA 2020.
- CAP : l'annotation @odata.draft.enabled sur l'entité du service active le draft, et le runtime le gère de façon générique.
- Applications SAP S/4HANA plus anciennes : des drafts implémentés avec BOPF dans l'ABAP Programming Model for SAP Fiori existent encore et peuvent être repris dans des business objects RAP basés sur BOPF.
- SAP Fiori elements : l'interface détecte le draft à partir des métadonnées du service. SAP indique que la prise en charge complète de SAP Fiori elements sur les services OData V4 n'est garantie que pour les scénarios compatibles draft. Pour OData V2, le draft n'est pas disponible sur SAP NetWeaver AS for ABAP 7.50.
La gestion des drafts est une décision de service ; l'interface ne fait que refléter ce que le back-end déclare.
Quelles sont les erreurs courantes avec la gestion des drafts ?
- Traiter « locked by another user » comme un bug. Le message signifie généralement qu'un collègue a un draft ouvert. Demandez au propriétaire de le sauvegarder ou de le rejeter, ou attendez la fin de la phase de verrouillage.
- Lire directement la table de draft. SAP avertit que les tables de draft ne doivent être accédées que via le framework RAP, par exemple l'action Discard.
- Oublier le total ETag. Un business object RAP compatible draft en exige un.
- Construire une application OData V4 modifiable sans draft. Les utilisateurs perdent la reprise et les informations de verrouillage, et SAP Fiori elements n'offre qu'une prise en charge limitée.
La plupart des problèmes de gestion des drafts viennent d'une mauvaise compréhension des règles de verrouillage et de durée de vie, et non du framework.
Draft exclusif, draft collaboratif ou modification sans draft : quelle différence ?
| Modification sans draft | Draft exclusif | Draft collaboratif | |
|---|---|---|---|
| Quand les données atteignent le back-end | Uniquement au Save | En continu, dans le draft | En continu, dans le draft partagé |
| Reprise après interruption | Non | Oui, par le propriétaire | Oui, par tous les utilisateurs invités |
| Modification simultanée | Empêchée par un verrou de session court | Bloquée tant que le verrou exclusif est actif | Autorisée, avec des verrous au niveau du champ |
| Usage type | Flux simples avec peu de champs | La plupart des applications SAP Fiori transactionnelles | Objets complétés ensemble par plusieurs personnes |
Questions fréquentes
Où les drafts SAP Fiori sont-ils stockés ?
Les drafts sont stockés sur le serveur dans des tables de draft qui appartiennent au business object, séparées des tables actives. En RAP, chaque entité d'un business object compatible draft a besoin de sa propre table de draft, et le framework RAP écrit et supprime les données de draft.
Combien de temps dure un draft SAP Fiori ?
En RAP, les drafts auxquels personne ne touche sont supprimés automatiquement par le service de cycle de vie des drafts, par défaut après 28 jours. Le verrou exclusif sur l'objet actif prend fin plus tôt ; ensuite, une modification directe par un autre utilisateur peut invalider le draft.
Pourquoi une application SAP Fiori indique-t-elle que l'objet est verrouillé par un autre utilisateur ?
Un autre utilisateur a très probablement un draft ouvert pour le même objet, et la phase de verrouillage exclusif de ce draft n'est pas terminée. Le propriétaire peut sauvegarder ou rejeter le draft ; sinon, le verrou expire et le draft passe en phase optimiste.
Toutes les applications SAP Fiori utilisent-elles des drafts ?
Non. La gestion des drafts est une décision back-end prise par business object. De nombreuses applications SAP Fiori elements transactionnelles actuelles sont compatibles draft, mais des applications sans draft existent, généralement pour des flux de modification simples où les modifications ne sont envoyées qu'au moment où l'utilisateur sauvegarde.
Sources
- SAPUI5 SDK: Draft Handling (SAP Fiori elements for OData V4)
- SAP Help Portal: Draft Handling — exclusive and collaborative draft (RAP)
- SAP Help Portal: Pessimistic Concurrency Control (Locking) — locking in draft scenarios (RAP)
- SAP Help Portal: RAP BDL — Draft Handling (ABAP keyword documentation)
- SAP Help Portal: Service Binding — OData V4 and draft-enabled scenarios
- S'applique à
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Dernière relecture