Introdução
Neste post do blog, vou mostrar como anotar o serviço CAP para permitir a exibição de uma página de lista analítica (ALP). Encontrei essa solução em deepak_singh99 (atualmente indisponível), então quero dar crédito.
Cenário
Para criar um aplicativo ALP básico no serviço CAP OData V4 como mostrado abaixo. O código está disponível no GitHub.
Página Lista analítica
Passos
- Crie um modelo de dados
- Adicione anotações
- Crie ALP
1. Crie um modelo de dados
Criei um modelo de dados muito simples baseado em uma entidade Livros gerada pelo comando `CDs adicionam amostras`.
namespace my.bookshop;
entity Books {
key ID : Integer @title: 'ID';
title : String @title: 'Title';
stock : Integer @title: 'Stock';
category1: String @title: 'Category1';
category2: String @title: 'Category2';
publishedAt: Date @title: 'Published At';
}
O modelo de dados é exposto ao serviço como está.
using my.bookshop as my from '../db/data-model';
service CatalogService {
@readonly entity BooksAnalytics as projection on my.Books;
}
2. Adicione anotações
Vou explicar as anotações adicionadas dividindo-as em quatro blocos para maior clareza.
O primeiro bloco concentra-se na habilitação de funções agregadas. Essas anotações são essenciais para que as ferramentas Fiori reconheçam e suportem corretamente a página de lista analítica (ALP). Sem essas anotações, as ferramentas Fiori podem gerar erros indicando a ausência de uma entidade adequada para ALP.
annotate CatalogService.BooksAnalytics with @(
Aggregation.ApplySupported: {
Transformations: [
'aggregate',
'topcount',
'bottomcount',
'identity',
'concat',
'groupby',
'filter',
'expand',
'search'
],
GroupableProperties: [
ID,
category1,
category2,
title,
publishedAt
],
AggregatableProperties: [{
$Type : 'Aggregation.AggregatablePropertyType',
Property: stock
}]
},
Analytics.AggregatedProperty #totalStock: {
$Type : 'Analytics.AggregatedPropertyType',
AggregatableProperty : stock,
AggregationMethod : 'sum',
Name : 'totalStock',
![@Common.Label]: 'Total stock'
},
);
O segundo bloco é usado para exibir um gráfico no centro do ALP. Um ponto novo para mim foi o uso de Medição dinâmica. Com o OData V2, você pode estar familiarizado com o «normal» Medir anotações. No entanto, no contexto do OData V4, a medição normal de alguma forma não funciona, então você precisa usar DynamicMeasure, que se refere a @analytics.AggregatedProparety definido no primeiro bloco.
annotate CatalogService.BooksAnalytics with @(
UI.Chart: {
$Type : 'UI.ChartDefinitionType',
Title: 'Stock',
ChartType : #Column,
Dimensions: [
category1,
category2
],
DimensionAttributes: [{
$Type : 'UI.ChartDimensionAttributeType',
Dimension: category1,
Role: #Category
},{
$Type : 'UI.ChartDimensionAttributeType',
Dimension: category2,
Role: #Category2
}],
DynamicMeasures: [
![@Analytics.AggregatedProperty#totalStock]
],
MeasureAttributes: [{
$Type: 'UI.ChartMeasureAttributeType',
DynamicMeasure: ![@Analytics.AggregatedProperty#totalStock],
Role: #Axis1
}]
},
UI.PresentationVariant: {
$Type : 'UI.PresentationVariantType',
Visualizations : [
'@UI.Chart',
],
}
);
O terceiro bloco concentra-se na exibição de filtros visuais. Para conseguir isso, você precisará de três blocos de anotação: gráfico, variante de apresentação e lista de valores. O bloco de anotação gráfica é semelhante ao do segundo bloco.
No entanto, observe que o OData V4 atualmente oferece suporte apenas a tipos de gráficos de barras e linhas para filtros visuais, enquanto o OData V2 também oferece suporte a gráficos de rosca.
Você também pode adicionar essas anotações com o recurso de desenvolvimento guiado das ferramentas Fiori, o que será muito mais fácil.
O quarto bloco consiste nas anotações SelectionFields e LineItem com as quais você já deve estar familiarizado.
3. Crie ALP
Vamos prosseguir com a criação de um ALP usando o modelo.
Seleção da planta baixa
Seleção de entidade
Para configurar o ALP, você precisa fazer algumas configurações na seção “opções” do arquivo manifest.json. A seção «visualizações» é usada para exibir o gráfico e a tabela principais. Esta seção é incluída por padrão quando você cria seu aplicativo usando o modelo «Página de lista analítica». Se quiser usar anotações diferentes das padrão (sem qualificador), você precisará fazer as alterações necessárias aqui.
A seção «@com.sap.vocabularies.UI.v1.SelectionFields» em «controlConfiguration» é usada para mostrar filtros visuais.
FONTE