Gestión de draft
La gestión de draft es un mecanismo de las apps SAP Fiori, RAP y CAP que almacena los cambios no guardados de un business object como un draft en el servidor, separado de los datos activos. Permite retomar el trabajo interrumpido, ejecutar validaciones durante la edición y ver cuándo otra persona modifica el mismo objeto, hasta que Save convierte el draft en la versión activa.
Datos clave
- Tipo
- Patrón transaccional (versión provisional de un business object)
- Capa
- Lógica de negocio y modelo de datos, visible en Aplicaciones de UI
- Se habilita en
- Behavior definition de RAP (with draft), modelo de servicio de CAP
- Variantes
- Draft exclusivo, draft colaborativo
- Soporte en la UI
- SAP Fiori elements para OData V2 y V4
- Quién trabaja con ello
- Desarrolladores ABAP y CAP, desarrolladores SAP Fiori
- Se aplica a
- SAP S/4HANA (todas las opciones de implementación), SAP BTP
Capa: Lógica de negocio y modelo de datosDónde se ubica ▾
Capa: Lógica de negocio y modelo de datos
También abarca: Aplicaciones de UI
Abrir el mapa de arquitectura →¿Cómo funciona la gestión de draft?
En una app con draft habilitado, la edición sigue cuatro pasos:
- Un usuario elige Edit en un objeto existente o empieza a crear uno nuevo. El back-end crea una instancia de draft en una tabla de draft separada.
- Cada cambio se escribe en el draft en segundo plano, de modo que no se pierde nada si se cierra el navegador.
- Las validaciones, el control de campos y los valores por defecto se ejecutan sobre el draft mientras el usuario trabaja, y los mensajes aparecen antes de guardar.
- Save activa el draft: su contenido pasa a ser la versión activa y el draft se elimina. Discard, en cambio, borra el draft.
Los datos activos no se modifican hasta la activación: una solicitud de pedido para Cedar Office Supply en Alder Manufacturing puede empezarse el viernes y terminarse el lunes. Así, la gestión de draft separa el trabajo en curso de los datos de negocio en el nivel de persistencia, no solo en el navegador.
¿Cuál es la diferencia entre drafts exclusivos y colaborativos?
- Draft exclusivo: un único usuario es propietario del draft. Solo el propietario puede modificarlo, activarlo o descartarlo, y los demás usuarios no ven los cambios hasta que se guardan.
- Draft colaborativo: varios usuarios autorizados pueden trabajar en el mismo draft a la vez. En SAP Fiori elements para OData V4, la object page muestra quién está en el draft y bloquea un campo mientras alguien escribe en él.
En RAP, la elección es una sola palabra clave en la cabecera de la behavior definition: with draft para drafts exclusivos o with collaborative draft para drafts colaborativos. Antes de planificar un draft colaborativo, consulte la ABAP keyword documentation de su release para esa palabra clave. El draft exclusivo sigue siendo el caso habitual, y el draft colaborativo encaja en objetos que varias personas completan juntas.
¿Cómo funcionan los bloqueos y la vigencia de un draft?
Los drafts cambian el comportamiento de los bloqueos. En RAP:
- Cuando se crea un draft para un objeto existente, la instancia activa recibe un bloqueo exclusivo que dura un tiempo determinado, aunque la sesión del usuario termine.
- Pasado ese periodo, el draft entra en una fase de bloqueo optimista. Si el propietario retoma el trabajo, el framework intenta bloquear de nuevo el objeto.
- Si entretanto alguien modifica directamente el objeto activo, el draft deja de ser válido.
- Los drafts que nadie toca se descartan automáticamente mediante un servicio de ciclo de vida de drafts, por defecto al cabo de 28 días según la documentación de RAP de SAP.
Un campo total ETag, obligatorio en los business objects de RAP con draft habilitado, detecta si la versión activa cambió mientras existía el draft. Así, la gestión de draft sustituye un bloqueo de sesión breve por una reserva más larga que acaba caducando.
¿Cómo se habilita la gestión de draft?
- RAP: añada la palabra clave de draft a la cabecera de la behavior definition, además de una tabla de draft por entidad y un total ETag. El draft se aplica a todo el business object, nunca a entidades sueltas. RAP admite draft desde ABAP 7.55, que corresponde a SAP S/4HANA 2020.
- CAP: la anotación @odata.draft.enabled en la entidad del servicio habilita el draft, y el runtime lo gestiona de forma genérica.
- Apps más antiguas de SAP S/4HANA: los drafts implementados con BOPF en el ABAP Programming Model for SAP Fiori siguen existiendo y pueden trasladarse a business objects de RAP basados en BOPF.
- SAP Fiori elements: la UI obtiene el draft de los metadatos del servicio. SAP indica que el soporte completo de SAP Fiori elements sobre servicios OData V4 solo se garantiza para escenarios con draft habilitado. En OData V2, el draft no está disponible en SAP NetWeaver AS for ABAP 7.50.
La gestión de draft es una decisión del servicio; la UI solo refleja lo que declara el back-end.
¿Cuáles son los errores habituales con la gestión de draft?
- Tratar "bloqueado por otro usuario" como un error del sistema. El mensaje suele significar que un compañero tiene un draft abierto. Pida al propietario que lo guarde o lo descarte, o espere a que termine la fase de bloqueo.
- Leer directamente la tabla de draft. SAP advierte que solo se debe acceder a las tablas de draft a través del framework RAP, por ejemplo con la acción Discard.
- Olvidar el total ETag. Un business object de RAP con draft habilitado lo requiere.
- Construir una app OData V4 editable sin draft. Los usuarios pierden la posibilidad de retomar el trabajo y la información de bloqueo, y SAP Fiori elements solo ofrece un soporte limitado.
La mayoría de los problemas de gestión de draft se deben a una mala comprensión de las reglas de bloqueo y de vigencia, no al framework.
Draft exclusivo vs. draft colaborativo vs. edición sin draft: ¿cuál es la diferencia?
| Edición sin draft | Draft exclusivo | Draft colaborativo | |
|---|---|---|---|
| Cuándo llegan los datos al back-end | Solo al guardar (Save) | Continuamente, al draft | Continuamente, al draft compartido |
| Retomar tras una interrupción | No | Sí, el propietario | Sí, todos los usuarios invitados |
| Edición concurrente | Impedida por un bloqueo de sesión breve | Bloqueada mientras dura el bloqueo exclusivo | Permitida, con bloqueos a nivel de campo |
| Uso típico | Flujos sencillos con pocos campos | La mayoría de las apps SAP Fiori transaccionales | Objetos que varias personas completan juntas |
Preguntas frecuentes
¿Dónde se almacenan los drafts de SAP Fiori?
Los drafts se almacenan en el servidor, en tablas de draft que pertenecen al business object, separadas de las tablas activas. En RAP, cada entidad de un business object con draft habilitado necesita su propia tabla de draft, y el framework RAP escribe y elimina los datos del draft.
¿Cuánto dura un draft de SAP Fiori?
En RAP, los drafts que nadie toca se descartan automáticamente mediante el servicio de ciclo de vida de drafts, por defecto al cabo de 28 días. El bloqueo exclusivo sobre el objeto activo termina antes; a partir de ese momento, una modificación directa de otro usuario puede invalidar el draft.
¿Por qué una app SAP Fiori indica que el objeto está bloqueado por otro usuario?
Lo más probable es que otro usuario tenga un draft abierto para el mismo objeto y que la fase de bloqueo exclusivo de ese draft no haya terminado. El propietario puede guardar o descartar el draft; si no, el bloqueo caduca y el draft pasa a una fase optimista.
¿Todas las apps SAP Fiori usan drafts?
No. La gestión de draft es una decisión del back-end para cada business object. Muchas apps transaccionales actuales de SAP Fiori elements tienen el draft habilitado, pero existen apps sin draft, normalmente para flujos de edición sencillos en los que los cambios solo se envían cuando el usuario guarda.
Fuentes
- 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
- Se aplica a
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Última revisión