Anotações de UI
Anotações de UI são termos de metadados do vocabulário OData UI da SAP, como UI.LineItem, UI.SelectionFields e UI.HeaderInfo, que descrevem como os dados devem ser apresentados: quais colunas uma tabela mostra, quais campos aparecem na barra de filtros e o que o cabeçalho de um object page exibe. O SAP Fiori elements as lê em tempo de execução e renderiza a página de acordo.
Resumo
- Tipo
- Anotações de vocabulário OData (vocabulário UI da SAP)
- Camada
- Serviços e APIs, criadas no modelo de dados, consumidas pela UI
- Onde são definidas
- ABAP CDS (de preferência metadata extensions), arquivos CDS do CAP ou arquivos de anotação XML locais no app
- Consumidas por
- SAP Fiori elements para OData V2 e V4
- Ferramentas
- ABAP Development Tools; SAP Fiori tools no VS Code ou no SAP Business Application Studio
- Quem trabalha com ele
- Desenvolvedores ABAP e CAP, desenvolvedores SAP Fiori
- Aplica-se a
- SAP S/4HANA (todas as opções de implantação), SAP BTP
Camada: Serviços e APIsOnde se encaixa ▾
Camada: Serviços e APIs
Também envolve: Lógica de negócio e modelo de dados, Aplicações de UI
Abrir o mapa de arquitetura →Como funcionam as anotações de UI?
As anotações de UI vão do modelo de dados até a tela em quatro etapas:
- Um desenvolvedor anota entidades e campos no modelo do back-end: ABAP CDS no SAP S/4HANA ou no ambiente ABAP do SAP BTP, ou arquivos CDS em um projeto CAP.
- Quando o modelo é exposto como um serviço OData, o back-end converte essas anotações em termos do vocabulário OData em XML, entregues com os metadados do serviço ou como um documento de anotação separado.
- O app SAP Fiori elements carrega os metadados do serviço mais quaisquer fontes adicionais de anotação declaradas em seu app descriptor (manifest.json).
- Os templates de floorplan, como o list report e o object page, leem os termos e constroem a página: colunas de tabela a partir de UI.LineItem, campos de filtro a partir de UI.SelectionFields, o título do object page a partir de UI.HeaderInfo.
A SAP descreve o vocabulário UI como algo sobre a forma como os dados são usados em uma interface de usuário, e não sobre controles de UI específicos, e é por isso que a mesma anotação pode definir uma tabela no desktop e uma lista no celular. As anotações de UI são, portanto, um contrato entre o serviço e o template, e não código que o app executa.
Quais anotações de UI são as mais importantes?
| Termo OData | O que controla | Notação em ABAP CDS |
|---|---|---|
| UI.LineItem | Colunas de uma tabela ou lista | @UI.lineItem em cada elemento, com uma posição |
| UI.SelectionFields | Campos exibidos por padrão na barra de filtros | @UI.selectionField em cada elemento |
| UI.HeaderInfo | Nome do tipo de objeto e título no cabeçalho do object page | @UI.headerInfo na entidade |
| UI.Facets | Seções do object page | @UI.facet |
| UI.Identification, UI.FieldGroup | Grupos de campos exibidos nas seções do object page | @UI.identification, @UI.fieldGroup |
| Common.Label, Common.Text | Rótulos de campos e textos descritivos | @EndUserText.label, @ObjectModel.text.element |
Dois detalhes poupam tempo. O ABAP CDS usa uma notação no nível do elemento que a exposição do serviço converte no termo OData no nível da entidade. E um mesmo termo pode existir várias vezes com qualificadores diferentes, por exemplo dois line items para duas tabelas. Conhecer essas seis famílias cobre a maior parte do que um list report e um object page precisam das anotações de UI.
Onde as anotações de UI são definidas?
- ABAP CDS (RAP e o modelo que o antecedeu): as anotações de UI podem ficar na data definition ou em uma metadata extension. A SAP recomenda metadata extensions, que mantêm o modelo de dados legível e permitem que os metadados de UI evoluam separadamente.
- CAP: as anotações são escritas em CDS com
annotate ... with @(...), usando diretamente os nomes dos termos OData; o CAP recomenda arquivos .cds separados nas pastas dos apps, apartados da definição do serviço. - Arquivo de anotação local: um arquivo XML dentro do app SAP Fiori, registrado como fonte adicional de anotação no manifest.json.
- Serviços SAP Gateway mais antigos (OData V2): anotações modeladas no repositório de vocabulários do Service Builder (SEGW), ou fornecidas por uma classe annotation provider registrada com /IWBEP/REG_VOCAN.
Quando o mesmo termo existe em um arquivo local e no back-end, a definição local substitui a do back-end termo a termo. A orientação da SAP é manter as anotações de UI no back-end, junto ao modelo de dados e com o mesmo ciclo de vida, e usar arquivos locais quando não há acesso ao back-end ou quando um único app precisa de uma sobreposição.
Por que minhas anotações de UI não aparecem no app?
Trabalhe do serviço para fora antes de mexer na UI:
- Verifique os metadados do serviço. Abra os metadados ou o documento de anotação do serviço e procure o termo. Se ele não estiver lá, o problema está no back-end.
- Verifique o tipo de service binding (RAP). Um binding da categoria Web API não carrega metadados específicos de UI. Um app Fiori elements precisa de um binding de UI.
- Verifique a metadata extension. A entidade precisa permitir extensões com
@Metadata.allowExtensions: true, e a extensão precisa estar ativa. - Verifique se há uma sobreposição local. Um UI.LineItem em um arquivo de anotação local substitui todo o UI.LineItem do back-end, então uma coluna adicionada no CDS nunca aparece.
- Verifique os qualificadores. Uma anotação qualificada só é usada onde o qualificador é referenciado.
- Limpe os caches. Os caches de metadados do Gateway e o navegador podem servir metadados antigos. Execute a /IWFND/CACHE_CLEANUP no hub SAP Gateway e a /IWBEP/CACHE_CLEANUP no back-end (ambas em um sistema embedded) e recarregue o app.
A maioria das anotações de UI ausentes são problemas de exposição ou de precedência, não erros de sintaxe.
Onde terminam as anotações de UI?
As anotações de UI são o motivo pelo qual apps SAP Fiori elements podem ser construídos rapidamente e têm aparência consistente: o layout segue as diretrizes de design do SAP Fiori, acessibilidade e responsividade vêm com o template, e o app permanece estável ao longo dos upgrades do SAPUI5 porque contém pouco código.
O mesmo design impõe os limites:
- Apenas o que o template suporta. As anotações selecionam e organizam; não conseguem inventar um layout que o floorplan não oferece. Qualquer coisa além disso exige extension points ou SAPUI5 freestyle.
- Apresentação, não comportamento. Validações, ações e lógica de autorização ficam no RAP ou no CAP; uma anotação pode exibir um botão, não implementá-lo.
- Espalhadas em várias camadas. Arquivos do back-end, metadata extensions e arquivos locais se combinam em tempo de execução, o que dificulta revisar o resultado final.
- Risco de divergência. Anotações locais quebram silenciosamente quando uma propriedade é renomeada no back-end.
As anotações de UI funcionam melhor quando a equipe as trata como parte do modelo de dados e as revisa junto com ele.
Anotações de UI em ABAP CDS vs. CAP CDS vs. arquivo de anotação local: qual é a diferença?
| ABAP CDS (RAP) | CAP CDS | Arquivo de anotação local | |
|---|---|---|---|
| Onde são escritas | Data definition ou metadata extension no sistema ABAP | Arquivos CDS no projeto CAP | Arquivo XML dentro do app SAP Fiori |
| Notação | Anotações @UI, em parte no nível do elemento (ex.: @UI.lineItem) | Nomes dos termos OData (ex.: UI.LineItem) | OData XML (Annotation Term="UI.LineItem") |
| Ciclo de vida | Transportadas com o modelo de dados | Implantadas com o serviço CAP | Implantadas com o app de UI |
| Precedência | Sobrepostas termo a termo por arquivos locais | Sobrepostas termo a termo por arquivos locais | Prevalece nos termos que define |
| Mais indicado para | Metadados de UI reutilizáveis para o SAP S/4HANA e serviços ABAP | Serviços e apps construídos no SAP BTP | Sobreposições para um único app ou ausência de acesso ao back-end |
As três opções produzem os mesmos termos OData; a escolha define quem é dono dos metadados de UI e até onde eles são reutilizados.
Perguntas frequentes
Anotações de UI e anotações CDS são a mesma coisa?
Não. As anotações CDS são uma família ampla que também abrange configurações do catálogo ABAP, controle de acesso, analytics e exposição OData. As anotações de UI são o subconjunto que descreve a apresentação para o SAP Fiori elements, escritas como anotações @UI no ABAP CDS ou como termos do vocabulário UI no CAP e em XML.
As anotações locais sobrepõem as anotações do back-end?
Sim, termo a termo. Se um arquivo de anotação local define UI.LineItem para uma entidade, essa definição substitui completamente o UI.LineItem do back-end, enquanto os termos do back-end que o arquivo local não define continuam valendo.
Quais ferramentas ajudam a escrever anotações de UI?
O SAP Fiori tools no Visual Studio Code e no SAP Business Application Studio oferece o Page Map, o Guided Development e editores de anotação para arquivos CAP CDS e XML. Para ABAP CDS, o Guided Development ajuda a gerar as anotações, e o ABAP Development Tools as valida.
É possível adicionar anotações de UI a um app SAP Fiori elements entregue pela SAP?
Sim, por meio de um adaptation project, quando o app está habilitado para isso. O adaptation project pode adicionar arquivos de anotação locais sem modificar o app entregue pela SAP nem seu serviço de back-end.
As anotações de UI funcionam com OData V2 e com OData V4?
Sim. O SAP Fiori elements existe para OData V2 e para OData V4, e ambos leem anotações de UI, mas os termos e recursos suportados diferem entre as duas stacks, então consulte a documentação da versão OData que o app usa.
Fontes
- SAPUI5 SDK: Working With OData Annotations (SAP Fiori elements for OData V4)
- SAPUI5 SDK: Working With OData Annotations (SAP Fiori elements for OData V2)
- SAP Help Portal: Defining CDS Annotations for Metadata-Driven UIs (ABAP RESTful Application Programming Model)
- SAP Help Portal: Service Binding (binding types and UI vs. Web API)
- SAP Help Portal: Metadata Cache (SAP Gateway Foundation, hub and backend caching)
- 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