App Descriptor (manifest.json)
El app descriptor es el archivo manifest.json de una aplicación, componente o biblioteca SAPUI5: un documento JSON que declara el ID, la versión, las fuentes de datos, los modelos, el enrutamiento, las dependencias de bibliotecas y los inbounds y outbounds de navegación cruzada de la aplicación. Es lo que SAPUI5, el SAP Fiori Launchpad y SAP Build Work Zone leen para cargar, conectar e iniciar la aplicación.
Datos clave
- Tipo
- Archivo de configuración (JSON) de una aplicación, componente o biblioteca SAPUI5
- Capa
- Aplicaciones de UI; Contenido, navegación y acceso
- Namespaces principales
- sap.app, sap.ui, sap.ui5, sap.fiori, sap.platform.abap, sap.platform.hcp
- Lo leen
- Runtime de SAPUI5, SAP Fiori Launchpad, SAP Build Work Zone, índice de aplicaciones SAPUI5
- Se edita con
- Editor de código o SAP Fiori tools (Page Map, Page Editor)
- Quién trabaja con ello
- Desarrolladores SAP Fiori, administradores del launchpad
- Se aplica a
- SAP S/4HANA (todas las opciones de implementación), SAP BTP
Capa: Aplicaciones de UIDónde se ubica ▾
Capa: Aplicaciones de UI
También abarca: Contenido, navegación y acceso
Abrir el mapa de arquitectura →¿Qué contiene el app descriptor?
El app descriptor agrupa sus atributos en namespaces, cada uno perteneciente a un consumidor distinto:
| Namespace | Contenido típico |
|---|---|
sap.app | ID obligatorio de la aplicación, tipo (application, component, library o card), título, versión, archivo i18n, fuentes de datos, inbounds y outbounds de navegación cruzada |
sap.ui | Tipos de dispositivo obligatorios (desktop, tablet, phone), iconos, tecnología, comportamiento de ancho completo en el launchpad |
sap.ui5 | Dependencias obligatorias (versión mínima de SAPUI5, bibliotecas), modelos, vista raíz, enrutamiento, componente extendido, habilitación de flexibilidad (flexEnabled) |
sap.fiori | IDs de registro SAP Fiori y el arquetipo obligatorio, como transactional o analytical |
sap.platform.abap, sap.platform.hcp | Valores específicos de la plataforma, como la URI de la aplicación, que se rellenan durante la implementación |
Un _version en el nivel raíz indica qué esquema de manifest sigue el archivo. El ID de sap.app debe coincidir con el namespace del componente en Component.js, no puede superar los 70 caracteres y debe ser único en el sistema. Por tanto, el app descriptor es el único lugar donde se declaran la identidad de una aplicación, sus conexiones de datos y su contrato de navegación.
¿Cómo utiliza el SAP Fiori Launchpad el app descriptor?
Al launchpad le interesa sobre todo sap.app → crossNavigation:
- Inbounds declaran los intents que acepta la aplicación: un semantic object y una acción, un título e icono de tile opcionales, los tipos de dispositivo, una firma de parámetros con valores obligatorios y por defecto, y una regla para parámetros adicionales (permitidos, ignorados o no permitidos).
- Outbounds declaran los intents que la propia aplicación dispara cuando navega a otras aplicaciones.
Lo que ocurre a continuación depende de la plataforma:
- SAP BTP y SAP Build Work Zone: la aplicación se despliega con su descriptor, por ejemplo en el HTML5 Application Repository, y el sitio utiliza los inbounds como sus target mappings.
- Launchpad ABAP (SAP S/4HANA on-premise y Private Edition): el target mapping de un technical catalog, creado con el launchpad app manager (/UI2/FLPAM), hace referencia al ID
sap.appde la aplicación. El índice de aplicaciones SAPUI5, generado por /UI5/APP_INDEX_CALCULATE, lee los descriptors de las aplicaciones desplegadas. - SAP S/4HANA Cloud Public Edition: las aplicaciones entregadas por SAP llevan descriptors como cualquier aplicación SAPUI5; las aplicaciones personalizadas se despliegan en el repositorio ABAP de SAPUI5 del tenant de desarrollo con su tile definido en la aplicación, y un administrador concede el acceso mediante un business role.
La aplicación alder.mm.supplierrating de Alder Manufacturing, con un inbound ilustrativo Supplier-rate, solo se abre si un tile dispara exactamente ese intent. El app descriptor publica el contrato de navegación; el contenido del launchpad decide quién puede utilizarlo.
¿Cómo se versiona el app descriptor?
El esquema del manifest evoluciona con SAPUI5. Cada versión del esquema la entiende una release correspondiente de SAPUI5, y el SAPUI5 SDK publica la correspondencia, por ejemplo el esquema 1.60.0 para SAPUI5 1.120 y posteriores.
A partir de SAPUI5 1.136 está disponible una nueva versión mayor 2 del manifest. Sigue las buenas prácticas actuales y elimina funciones que las versiones anteriores solo habían declarado obsoletas, de modo que pasar a ella es una migración, no un cambio de número. El SDK enumera los cambios necesarios, y el UI5 linter informa de las configuraciones obsoletas del manifest.
Dos ajustes relacionados se confunden a menudo:
_versiondescribe el esquema en el que está escrito el archivo.sap.ui5→dependencies→minUI5Versionindica la release mínima de SAPUI5 que necesita la aplicación.
Criterio de decisión: fije minUI5Version en la release de SAPUI5 más baja entre los sistemas en los que se ejecutará la aplicación, y elija una versión de esquema que esa release entienda. Una discrepancia entre el esquema del app descriptor y el runtime es una causa habitual de funciones que, sin avisar, no hacen nada.
¿Qué papel desempeña el app descriptor en SAP Fiori elements y en la adaptación?
- SAP Fiori elements: el descriptor selecciona el floorplan de cada página mediante sus destinos de enrutamiento y contiene ajustes de página como la carga inicial, la gestión de variantes o el tipo de tabla. Las anotaciones describen los datos; el descriptor describe la aplicación.
- Variantes de aplicación: un proyecto de adaptación no edita el archivo original. Crea una variante con su propio archivo de cambios del descriptor (manifest.appdescr_variant), donde el ID de
sap.appes el ID de la variante ysap.ui5→componentNameapunta a la aplicación base. La aplicación original permanece intacta y sigue recibiendo las actualizaciones de SAP. - Adaptación por key user:
flexEnabledindica que la aplicación está habilitada para la flexibilidad de SAPUI5, en la que se basa la adaptación de UI en runtime.
SAP describe el descriptor como de solo lectura tras la entrega; por eso los cambios en aplicaciones entregadas por SAP se realizan mediante variantes y cambios de flexibilidad. El app descriptor es el ancla a la que hacen referencia las extensiones, no un archivo que se deba parchear.
¿Cuáles son los errores comunes del app descriptor?
Revise estos puntos cuando una aplicación no se inicie o no navegue como se espera:
- ID no coincidente. El ID de
sap.appdifiere del namespace de Component.js, por lo que no se encuentra el componente. - ID duplicado o demasiado largo. Las comprobaciones de consistencia del índice de aplicaciones SAPUI5 señalan los IDs duplicados y los de más de 70 caracteres.
- El inbound no coincide con el tile. El semantic object, la acción o la firma de parámetros difieren del intent que dispara el tile; una regla "not allowed" para parámetros adicionales rechaza los parámetros sobrantes. En el launchpad ABAP, /UI2/FLIA muestra cómo se resolvió el intent.
- Tipo de dispositivo desactivado. El inbound o
sap.uiexcluye los teléfonos, de modo que la aplicación solo funciona en escritorio. - Fuente de datos incorrecta. La URI de
dataSourcesapunta a una ruta de servicio que no existe en el sistema de destino o que no está enrutada hacia él. - Índice desactualizado. El índice de aplicaciones SAPUI5 todavía no conoce una aplicación modificada. El despliegue desde SAP Business Application Studio lo actualiza automáticamente; las SAP Notes, los support packages, las actualizaciones de versión y algunas importaciones de transportes requieren /UI5/APP_INDEX_CALCULATE.
La mayoría de los problemas del app descriptor son discrepancias de contrato entre el archivo, el contenido del launchpad y el back-end, no errores de sintaxis.
¿App descriptor, target mapping o launchpad app descriptor item: cuál es la diferencia?
| App descriptor (manifest.json) | Target mapping | Launchpad app descriptor item (LADI) | |
|---|---|---|---|
| Qué es | Archivo JSON que se entrega con una aplicación SAPUI5 | Regla que resuelve un intent hacia una aplicación | Objeto del launchpad ABAP que agrupa un target mapping y tiles |
| Dónde reside | Dentro de la aplicación (repositorio ABAP o HTML5 Application Repository) | Technical catalog; en SAP BTP, derivado de los inbounds | Technical catalog, mantenido con el launchpad app manager |
| Quién lo mantiene | Desarrollador de la aplicación | Administrador del launchpad; desarrollador en SAP BTP | Administrador del launchpad |
| Pregunta que responde | ¿Qué es esta aplicación y qué necesita? | ¿Qué aplicación se abre para este intent? | ¿Cómo se inicia esta aplicación desde el launchpad? |
Pese a la similitud del nombre, un launchpad app descriptor item es contenido del launchpad, mientras que el app descriptor forma parte de la propia aplicación.
Preguntas frecuentes
¿El app descriptor es lo mismo que manifest.json?
Sí. La documentación de SAPUI5 utiliza manifest, descriptor for applications, components and libraries y app descriptor para lo mismo: el archivo manifest.json que almacena los metadatos de una aplicación en formato JSON. Las bibliotecas, los componentes reutilizables y las UI integration cards también tienen un manifest.json.
¿Dónde se definen los inbounds del launchpad en manifest.json?
Los inbounds se definen en el namespace sap.app, bajo crossNavigation y luego inbounds. Cada inbound tiene una clave y declara un semantic object, una acción, un título e icono opcionales, los tipos de dispositivo y una firma de parámetros, incluido el tratamiento de los parámetros adicionales.
¿Puedo modificar el manifest.json de una aplicación entregada por SAP?
No directamente. SAP considera el descriptor entregado como de solo lectura, y las modificaciones se sobrescribirían con las actualizaciones. Los cambios se realizan en una variante de aplicación creada mediante un proyecto de adaptación, que almacena los cambios del descriptor por separado y hace referencia a la aplicación original.
¿Qué es la versión 2 del manifest?
La versión 2 del manifest es la versión mayor del esquema disponible a partir de SAPUI5 1.136. Elimina funciones que las versiones anteriores del esquema habían declarado obsoletas, por lo que las aplicaciones necesitan pasos de migración antes del cambio. El SAPUI5 SDK documenta los cambios necesarios, y el UI5 linter detecta los ajustes obsoletos del manifest.
¿Un launchpad app descriptor item es lo mismo que el app descriptor?
No. Un launchpad app descriptor item es un objeto de un technical catalog ABAP que combina un target mapping con uno o varios tiles. El app descriptor es el manifest.json que está dentro de la aplicación. El target mapping hace referencia a la aplicación mediante su ID de sap.app.
Fuentes
- SAPUI5 SDK: Manifest (descriptor for applications, components, and libraries)
- SAPUI5 SDK: Migration information for upgrading the manifest file
- SAP Help Portal: Launchpad app descriptor items (ABAP platform)
- SAP Help Portal: Calculation Report - Automatic Run vs. Manual Scheduling (SAPUI5 application index)
- SAP Help Portal: UI Development (SAP S/4HANA Cloud Public Edition)
- 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