Semantic Object
Um semantic object no SAP Fiori é o nome de uma entidade de negócio, como PurchaseOrder ou SalesOrder, que forma a primeira metade de um intent de navegação. Combinado com uma ação, como em PurchaseOrder-display, o semantic object permite que o launchpad encontre um target mapping correspondente sem que o app chamador saiba qual aplicativo será aberto.
Resumo
- Tipo
- Metadado de navegação (identificador de entidade de negócio)
- Camada
- Conteúdo, navegação e acesso
- Definido em
- /UI2/SEMOBJ_SAP (entregues pela SAP) e /UI2/SEMOBJ (customizados) no ABAP; inbounds do app descriptor no SAP BTP
- Usado por
- Tiles, target mappings, inbounds e outbounds do app descriptor, smart links
- Exemplo
- PurchaseOrder com as ações display, manage e displayFactSheet
- Quem trabalha com ele
- Administradores do launchpad, desenvolvedores SAP Fiori
- Aplica-se a
- SAP S/4HANA (todas as opções de implantação), SAP BTP
Camada: Conteúdo, navegação e acessoOnde se encaixa ▾
Camada: Conteúdo, navegação e acesso
Abrir o mapa de arquitetura →O usuário abre o SAP Fiori Launchpad. O launchpad carrega os spaces, pages e tiles concedidos pelos business roles do usuário. Nenhum código de aplicação é executado ainda.
Relacionados:SAP Fiori Launchpad · Business Role · Spaces e Pages
O tile não contém um app. Ele dispara um intent — um semantic object mais uma ação, como PurchaseOrder-display — com parâmetros opcionais.
Relacionados:Tile · Semantic Object · Navegação baseada em intent
O launchpad procura os target mappings nos catálogos dos roles do usuário e os filtra por tipo de dispositivo e por parâmetros. Se nada corresponder, o usuário vê um erro de navegação.
Relacionados:Target Mapping · Catálogos (technical e business) · /UI2/FLIA
O target mapping correspondente inicia o destino: um app SAPUI5 ou SAP Fiori elements, uma transação SAP GUI for HTML, uma aplicação Web Dynpro ABAP ou uma URL.
Relacionados:Target Mapping · SAP Fiori Elements · SAP GUI for HTML (Web GUI)
Como funciona um semantic object?
Um semantic object é o substantivo da navegação no SAP Fiori; a ação é o verbo. Juntos, eles formam um intent, escrito na URL do launchpad como #SemanticObject-action, opcionalmente seguido de parâmetros.
- Um tile, um link ou um app solicita um intent, por exemplo
#PurchaseOrder-display?PurchaseOrder=4500000123. - O launchpad procura target mappings com o mesmo semantic object e a mesma ação entre os catálogos das roles do usuário.
- O target mapping correspondente decide qual app abre.
Um semantic object geralmente tem muitas ações. Na SAP Fiori Apps Reference Library, PurchaseOrder-display é resolvido para a transação clássica ME23N via SAP GUI for HTML, PurchaseOrder-manage para o app Manage Purchase Orders e PurchaseOrder-displayFactSheet para um fact sheet de pedido de compra. O app chamador apenas nomeia o business object e a operação pretendida. Um semantic object é, portanto, um nome estável para uma entidade de negócio, independente da tecnologia de UI que acabará por tratá-la.
Onde os semantic objects são definidos?
- Launchpad baseado em ABAP (on-premise, Private Edition): a SAP entrega semantic objects com os componentes de UI; a transação /UI2/SEMOBJ_SAP os exibe. Semantic objects customizados são criados com a /UI2/SEMOBJ ou com a atividade de Customizing para semantic objects customizados na SPRO (UI Technologies, SAP Fiori, conteúdo do launchpad). Uma entrada customizada com a mesma chave de uma entrada entregue pela SAP sobrepõe os atributos dela.
- SAP BTP e SAP Build Work Zone: cada app declara os semantic objects e as ações que aceita como inbounds no seu app descriptor (
sap.app→crossNavigation→inbounds), onde semantic object e ação são obrigatórios. Os semantic objects vêm desses descriptors, e não de uma transação de manutenção ABAP. - SAP S/4HANA Cloud Public Edition: os semantic objects entregues pela SAP são usados como vêm. Para um app customizado, o desenvolvedor define o tile, incluindo o seu intent, como parte do aplicativo antes de implantá-lo.
O semantic object é definido uma vez por landscape e depois referenciado em todos os pontos em que a navegação precisa dele.
Como os apps usam semantic objects para links?
Os semantic objects controlam mais do que tiles. No SAP Fiori elements, um campo anotado com um semantic object (Common.SemanticObject em OData ou CAP, @Consumption.semanticObject em ABAP CDS) é renderizado como link quando o semantic object é válido no launchpad. Ao clicar nele, são listadas todas as ações que o usuário pode alcançar para esse objeto; quando existe apenas um destino, o app navega diretamente.
Apps SAPUI5 freestyle usam o serviço de navegação do shell (sap.ushell.services.Navigation) para consultar quais links existem para um semantic object e para navegar. Nos dois casos, a lista de links é calculada por usuário a partir dos target mappings das roles desse usuário, de modo que dois usuários que clicam no mesmo campo de fornecedor podem ver opções diferentes.
Um semantic object em um campo é uma solicitação de opções de navegação, e as roles do usuário decidem quais opções aparecem.
Quando criar um semantic object customizado?
Use este critério de decisão: a entidade já existe como business object da SAP?
- Reutilize o semantic object da SAP quando um app customizado trabalha com a mesma entidade, por exemplo um app customizado de aprovação de pedidos de compra na Alder Manufacturing. Reutilizar PurchaseOrder permite que o app customizado apareça nas mesmas listas de links que os apps standard e receba navegação a partir deles. Adicione uma ação distinta em vez de um novo semantic object.
- Crie um semantic object customizado quando a entidade não tem equivalente na SAP, como uma solicitação de ferramental customizada que só existe na extensão da Alder Manufacturing. Siga as convenções de nomenclatura acordadas para o landscape.
- Não crie um por app. Um semantic object com o nome de um app, e não de uma entidade, fragmenta a navegação e esconde o app customizado dos links standard.
Um semantic object customizado se justifica por uma nova entidade de negócio, não por um novo aplicativo.
Quais são os erros comuns com semantic objects?
- Diferenças de grafia e de maiúsculas/minúsculas. A SAP descreve os target mappings como sensíveis a maiúsculas e minúsculas, de modo que um tile que envia PurchaseOrder pode não ser resolvido contra um target mapping definido para Purchaseorder. Copie os semantic objects da definição em vez de digitá-los.
- Esperar que um semantic object conceda acesso. Um semantic object não carrega nenhuma autorização. O acesso vem dos catálogos nas roles do usuário, que contêm os target mappings desse semantic object.
- Supor que um link significa um app. Os smart links só aparecem para destinos que o usuário pode alcançar. Um link que aparece para um key user pode não aparecer para um usuário operacional, por design.
- Sobrepor semantic objects entregues pela SAP sem cuidado. Uma entrada customizada com a mesma chave altera os atributos para todos os apps que usam o objeto.
Quando a navegação de um semantic object se comporta de forma inesperada, execute a /UI2/FLIA para o usuário e o intent afetados antes de alterar qualquer definição. A maioria dos problemas com semantic objects são problemas de nomenclatura ou de roles, e não de definição.
Semantic object vs. target mapping: qual é a diferença?
| Semantic object | Target mapping | |
|---|---|---|
| O que é | Nome de uma entidade de negócio usado em um intent | Regra que resolve um intent para um app |
| Onde é definido | /UI2/SEMOBJ_SAP e /UI2/SEMOBJ no ABAP; app descriptor no SAP BTP | Technical catalogs no ABAP; inbounds do app descriptor no SAP BTP |
| Concede acesso? | Não | Indiretamente, pelos catálogos nas roles do usuário |
| Quantos por entidade | Um semantic object, muitas ações | Um ou mais por semantic object e ação |
| Falha típica | Grafia errada ou não definido, então nenhum intent corresponde | Ausente dos catálogos do usuário ou as regras não correspondem |
O semantic object nomeia aquilo com que o usuário quer trabalhar; o target mapping decide qual app faz o trabalho.
Perguntas frequentes
Um semantic object é o mesmo que um business object no back-end?
Não. Um semantic object é um nome de navegação usado pelo SAP Fiori Launchpad. Ele muitas vezes corresponde a um business object do back-end, como um pedido de compra, mas não carrega dados, lógica nem autorização. Ele apenas identifica a entidade em um intent.
Um mesmo semantic object pode abrir apps diferentes?
Sim. Cada ação do semantic object pode ser resolvida para um app diferente, e o mesmo semantic object com a mesma ação pode ser resolvido para apps diferentes por role ou tipo de dispositivo, dependendo de quais target mappings os catálogos do usuário contêm.
Como descobrir quais semantic objects um app SAP Fiori usa?
A SAP Fiori Apps Reference Library lista os intents de cada app, por exemplo PurchaseOrder-display para a transação ME23N. Em um sistema ABAP, a /UI2/FLIA mostra os intents disponíveis para um determinado usuário, junto com os seus catálogos e target mappings.
Preciso de um semantic object customizado para um app SAPUI5 customizado?
Somente quando o app trabalha com uma entidade que a SAP não modela. Se o app trata uma entidade standard, como um pedido de compra, reutilize o semantic object da SAP com uma ação própria, para que o app customizado participe da navegação standard.
Um semantic object controla quem pode abrir um app?
Não. Um semantic object é apenas um nome. Quem pode abrir um app depende dos business catalogs nas roles do usuário, que contêm os target mappings desse semantic object, e das autorizações que o app verifica em runtime.
Fontes
- SAP Help Portal: Defining Semantic Objects for Navigation (ABAP platform)
- SAP Help Portal: Intent-Based Navigation (SAP Fiori launchpad, ABAP platform)
- SAPUI5 SDK: Link Fields — semantic links in SAP Fiori elements for OData V4
- SAP Fiori Apps Reference Library: Manage Purchase Orders (Version 2), intent PurchaseOrder-manage
- 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