Tecnologias de UI

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 ▾
Onde se encaixa: L3 · Aplicações de UICamada: Aplicações de UI. Também envolve: Conteúdo, navegação e acesso.L1L2L3L4L5L6BTP

Camada: Aplicações de UI

Também envolve: Conteúdo, navegação e acesso

Abrir o mapa de arquitetura →

O que o app descriptor contém?

O app descriptor agrupa seus atributos em namespaces, cada um pertencente a um consumidor diferente:

NamespaceConteúdo típico
sap.appID 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.uiTipos de dispositivo obrigatórios (desktop, tablet, phone), ícones, tecnologia, comportamento de largura total no launchpad
sap.ui5Dependências obrigatórias (versão mínima do SAPUI5, bibliotecas), modelos, view raiz, roteamento, componente estendido, habilitação de flexibilidade (flexEnabled)
sap.fioriIDs de registro SAP Fiori e o arquétipo obrigatório, como transactional ou analytical
sap.platform.abap, sap.platform.hcpValores 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:

  1. 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.
  2. 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.app do app. O índice de aplicações SAPUI5, gerado por /UI5/APP_INDEX_CALCULATE, lê os descriptors dos apps implantados.
  3. 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:

  • _version descreve o schema em que o arquivo está escrito.
  • sap.ui5 → dependencies → minUI5Version indica 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 e sap.ui5 → componentName aponta para o app base. O app original permanece intocado e continua recebendo as atualizações da SAP.
  • Adaptação pelo key user: flexEnabled sinaliza 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:

  1. ID divergente. O ID em sap.app difere do namespace em Component.js, então o componente não é encontrado.
  2. 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.
  3. 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.
  4. Tipo de dispositivo desativado. O inbound ou sap.ui exclui celulares, então o app só funciona no desktop.
  5. Fonte de dados errada. A URI em dataSources aponta para um caminho de serviço que não existe no sistema de destino ou que não é roteado até ele.
  6. Í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 mappingLaunchpad app descriptor item (LADI)
O que éArquivo JSON entregue com um app SAPUI5Regra que resolve um intent para um appObjeto do launchpad ABAP que agrupa um target mapping e tiles
Onde ficaDentro do app (repositório ABAP ou HTML5 Application Repository)Technical catalog; no SAP BTP, derivado dos inboundsTechnical catalog, mantido com o launchpad app manager
Quem mantémDesenvolvedor do appAdministrador do launchpad; desenvolvedor no SAP BTPAdministrador do launchpad
Pergunta que respondeO 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

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

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP e os demais produtos e serviços SAP mencionados são marcas comerciais ou marcas registradas da SAP SE (ou de uma empresa afiliada da SAP) na Alemanha e em outros países. Este guia é independente e não é afiliado, patrocinado nem endossado pela SAP SE.