App Descriptor (manifest.json)
O app descriptor é o arquivo manifest.json de um app, componente ou biblioteca SAPUI5: um documento JSON que declara o ID, a versão, as fontes de dados, os modelos, o roteamento, as dependências de bibliotecas e os inbounds e outbounds de navegação cruzada do app. É o app descriptor que o SAPUI5, o SAP Fiori Launchpad e o SAP Build Work Zone leem para carregar, conectar e iniciar o app.
Resumo
- Tipo
- Arquivo de configuração (JSON) de um app, componente ou biblioteca SAPUI5
- Camada
- Aplicações de UI; Conteúdo, navegação e acesso
- Principais namespaces
- sap.app, sap.ui, sap.ui5, sap.fiori, sap.platform.abap, sap.platform.hcp
- Lido por
- Runtime do SAPUI5, SAP Fiori Launchpad, SAP Build Work Zone, índice de aplicações SAPUI5
- Editado com
- Editor de código ou SAP Fiori tools (Page Map, Page Editor)
- Quem trabalha com ele
- Desenvolvedores SAP Fiori, administradores do launchpad
- Aplica-se a
- SAP S/4HANA (todas as opções de implantação), SAP BTP
Camada: Aplicações de UIOnde se encaixa ▾
O que o app descriptor contém?
O app descriptor agrupa seus atributos em namespaces, cada um pertencente a um consumidor diferente:
| Namespace | Conteúdo típico |
|---|---|
sap.app | ID obrigatório do app, tipo (application, component, library ou card), título, versão, arquivo i18n, fontes de dados, inbounds e outbounds de navegação cruzada |
sap.ui | Tipos de dispositivo obrigatórios (desktop, tablet, phone), ícones, tecnologia, comportamento de largura total no launchpad |
sap.ui5 | Dependências obrigatórias (versão mínima do SAPUI5, bibliotecas), modelos, view raiz, roteamento, componente estendido, habilitação de flexibilidade (flexEnabled) |
sap.fiori | IDs de registro SAP Fiori e o arquétipo obrigatório, como transactional ou analytical |
sap.platform.abap, sap.platform.hcp | Valores específicos da plataforma, como a URI do app, preenchidos durante a implantação |
Um _version no nível raiz indica qual schema de manifest o arquivo segue. O ID em sap.app deve coincidir com o namespace do componente em Component.js, não pode passar de 70 caracteres e deve ser único no sistema. O app descriptor é, portanto, o único lugar onde a identidade de um app, suas conexões de dados e seu contrato de navegação são declarados.
Como o SAP Fiori Launchpad usa o app descriptor?
O launchpad se interessa principalmente por sap.app → crossNavigation:
- Inbounds declaram os intents que o app aceita: um semantic object e uma ação, título e ícone de tile opcionais, os tipos de dispositivo, uma assinatura de parâmetros com valores obrigatórios e padrão, e uma regra para parâmetros adicionais (permitidos, ignorados ou não permitidos).
- Outbounds declaram os intents que o próprio app dispara quando navega para outros apps.
O que acontece em seguida depende da plataforma:
- SAP BTP e SAP Build Work Zone: o app é implantado com seu descriptor, por exemplo no HTML5 Application Repository, e o site usa os inbounds como seus target mappings.
- Launchpad ABAP (SAP S/4HANA on-premise e Private Edition): o target mapping em um technical catalog, criado com o launchpad app manager (/UI2/FLPAM), referencia o ID
sap.appdo app. O índice de aplicações SAPUI5, gerado por /UI5/APP_INDEX_CALCULATE, lê os descriptors dos apps implantados. - SAP S/4HANA Cloud Public Edition: os apps entregues pela SAP têm descriptors como qualquer app SAPUI5; os apps customizados são implantados no repositório ABAP do SAPUI5 do tenant de desenvolvimento com o tile definido no app, e um administrador concede o acesso por meio de um business role.
O app alder.mm.supplierrating da Alder Manufacturing, com um inbound ilustrativo Supplier-rate, só abre se um tile disparar exatamente esse intent. O app descriptor publica o contrato de navegação; o conteúdo do launchpad decide quem pode usá-lo.
Como o app descriptor é versionado?
O schema do manifest evolui junto com o SAPUI5. Cada versão de schema é entendida por uma release correspondente do SAPUI5, e o SAPUI5 SDK publica esse mapeamento, por exemplo o schema 1.60.0 para o SAPUI5 1.120 e posteriores.
A partir do SAPUI5 1.136, está disponível uma nova versão major 2 do manifest. Ela segue as boas práticas atuais e remove recursos que as versões anteriores apenas haviam marcado como deprecated, portanto adotá-la é uma migração, não uma troca de número. O SDK lista as mudanças necessárias, e o UI5 linter aponta configurações de manifest deprecated.
Duas configurações relacionadas costumam ser confundidas:
_versiondescreve o schema em que o arquivo está escrito.sap.ui5→dependencies→minUI5Versionindica a release mais baixa do SAPUI5 de que o app precisa.
Critério de decisão: defina minUI5Version como a release mais baixa do SAPUI5 entre os sistemas em que o app vai rodar e escolha uma versão de schema que essa release entenda. Uma incompatibilidade entre o schema do app descriptor e o runtime é uma fonte comum de recursos que silenciosamente não fazem nada.
Qual é o papel do app descriptor no SAP Fiori elements e na adaptação?
- SAP Fiori elements: o descriptor seleciona o floorplan de cada página por meio de seus routing targets e carrega configurações de página como carregamento inicial, gerenciamento de variantes ou tipo de tabela. As anotações descrevem os dados; o descriptor descreve o app.
- Variantes de app: um adaptation project não edita o arquivo original. Ele cria uma variante com seu próprio arquivo de alterações do descriptor (manifest.appdescr_variant), em que o ID
sap.appé o ID da variante esap.ui5→componentNameaponta para o app base. O app original permanece intocado e continua recebendo as atualizações da SAP. - Adaptação pelo key user:
flexEnabledsinaliza que o app está habilitado para a flexibilidade do SAPUI5, da qual depende a adaptação de UI em runtime.
A SAP descreve o descriptor como somente leitura após a entrega, e por isso as alterações em apps entregues pela SAP passam por variantes e por alterações de flexibilidade. O app descriptor é a âncora que as extensões referenciam, não um arquivo a ser modificado.
Quais são os erros comuns no app descriptor?
Percorra estas verificações quando um app não inicia ou não navega como esperado:
- ID divergente. O ID em
sap.appdifere do namespace em Component.js, então o componente não é encontrado. - ID duplicado ou longo. As verificações de consistência do índice de aplicações SAPUI5 apontam IDs duplicados e IDs com mais de 70 caracteres.
- Inbound não corresponde ao tile. O semantic object, a ação ou a assinatura de parâmetros difere do intent que o tile dispara; uma regra "not allowed" para parâmetros adicionais rejeita parâmetros extras. No launchpad ABAP, a /UI2/FLIA mostra como o intent foi resolvido.
- Tipo de dispositivo desativado. O inbound ou
sap.uiexclui celulares, então o app só funciona no desktop. - Fonte de dados errada. A URI em
dataSourcesaponta para um caminho de serviço que não existe no sistema de destino ou que não é roteado até ele. - Índice desatualizado. Um app alterado ainda não é conhecido pelo índice de aplicações SAPUI5. A implantação a partir do SAP Business Application Studio o atualiza automaticamente; SAP Notes, support packages, upgrades e algumas importações de transporte exigem a /UI5/APP_INDEX_CALCULATE.
A maioria dos problemas de app descriptor são incompatibilidades de contrato entre o arquivo, o conteúdo do launchpad e o back-end, não erros de sintaxe.
App descriptor vs. target mapping vs. launchpad app descriptor item: qual é a diferença?
| App descriptor (manifest.json) | Target mapping | Launchpad app descriptor item (LADI) | |
|---|---|---|---|
| O que é | Arquivo JSON entregue com um app SAPUI5 | Regra que resolve um intent para um app | Objeto do launchpad ABAP que agrupa um target mapping e tiles |
| Onde fica | Dentro do app (repositório ABAP ou HTML5 Application Repository) | Technical catalog; no SAP BTP, derivado dos inbounds | Technical catalog, mantido com o launchpad app manager |
| Quem mantém | Desenvolvedor do app | Administrador do launchpad; desenvolvedor no SAP BTP | Administrador do launchpad |
| Pergunta que responde | O que é este app e do que ele precisa? | Qual app abre para este intent? | Como este app é iniciado a partir do launchpad? |
Apesar do nome parecido, um launchpad app descriptor item é conteúdo do launchpad, enquanto o app descriptor faz parte do próprio app.
Perguntas frequentes
O app descriptor é a mesma coisa que o manifest.json?
Sim. A documentação do SAPUI5 usa manifest, descriptor for applications, components and libraries e app descriptor para a mesma coisa: o arquivo manifest.json que armazena os metadados de um app em formato JSON. Bibliotecas, componentes reutilizáveis e UI integration cards também têm um manifest.json.
Onde ficam definidos os inbounds do launchpad no manifest.json?
Os inbounds são definidos no namespace sap.app, em crossNavigation e depois em inbounds. Cada inbound tem uma chave e declara um semantic object, uma ação, título e ícone opcionais, tipos de dispositivo e uma assinatura de parâmetros, incluindo como os parâmetros adicionais são tratados.
Posso alterar o manifest.json de um app entregue pela SAP?
Não diretamente. A SAP trata o descriptor entregue como somente leitura, e modificações seriam sobrescritas pelas atualizações. As alterações vão para uma variante de app criada por um adaptation project, que armazena as alterações do descriptor separadamente e referencia o app original.
O que é a versão 2 do manifest?
A versão 2 do manifest é a versão major do schema disponível a partir do SAPUI5 1.136. Ela remove recursos que versões anteriores do schema haviam marcado como deprecated, então os apps precisam de etapas de migração antes da troca. O SAPUI5 SDK documenta as mudanças necessárias, e o UI5 linter detecta configurações de manifest deprecated.
Um launchpad app descriptor item é a mesma coisa que o app descriptor?
Não. Um launchpad app descriptor item é um objeto em um technical catalog ABAP que combina um target mapping com um ou mais tiles. O app descriptor é o manifest.json dentro do app. O target mapping se refere ao app pelo seu ID sap.app.
Fontes
- 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)
- Aplica-se a
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Última revisão