Las consultas analíticas basadas en CDS son una forma poderosa de modelar fuentes de datos analíticos que se pueden usar en una variedad de interfaces de usuario (SAP Analytics Cloud, Analysis for Office, Smart Business KPI, Web Dynpro Grid, etc.). Con solo leer la documentación técnica, no siempre es fácil transformar el caso de uso empresarial en codificación real. Lea esta publicación de blog en caso de que esté interesado en obtener un acceso basado en casos de uso al diseño de consultas analíticas.
(Todas las muestras de codificación se basan en CDS Analytical Projection Views, pero también deberían funcionar para CDS View (Entities) con ligeras adopciones)
Durante el tiempo de ejecución de un informe, no siempre es visible qué datos se han seleccionado. Ya sea porque la barra de filtro está oculta, los valores de las variables se establecen a través de una variante, se derivan o se codifican de forma rígida en la consulta.
Para selecciones importantes, puede tener sentido mostrarlas como parte de las etiquetas de los elementos del informe: Dimensiones o Medidas.
Para hacerlo concreto, definamos una consulta que seleccione los siguientes datos financieros:
@EndUserText.label: 'Query with Dynamic Labels'
@AccessControl.authorizationCheck: #NOT_ALLOWED
define transient view entity ZJF_C_DynLabels_Q01
provider contract analytical_query
with parameters
@Semantics.businessDate.at: true
@Environment.systemField: #SYSTEM_DATE
P_KeyDate : vdm_v_key_date,
@EndUserText.label: 'Plan Category'
@AnalyticsDetails.query.variableSequence: 20
@AnalyticsDetails.variable: { usageType: #FILTER, referenceElement: 'PlanningCategory', mandatory: true, selectionType: #SINGLE, multipleSelections: false, defaultValue: 'BUDGET03' }
P_PlanningCategory : fcom_category
as projection on I_ActualPlanJrnlEntryItemCube
{
@AnalyticsDetails.query.axis: #ROWS
@UI.textArrangement: #TEXT_LAST
@Consumption.dynamicLabel: { label : 'Cost Center (&1)' ,
binding : [ { index : 1 , parameter : 'P_KeyDate' } ] }
CostCenter,
@AnalyticsDetails.query.axis: #FREE
GlobalCurrency,
@AnalyticsDetails.query.axis: #COLUMNS
@Semantics.amount.currencyCode: 'GlobalCurrency'
@Aggregation.default: #SUM
@EndUserText.label: 'Actual Amount'
case
when ( PlanningCategory = 'ACT01') then curr_to_decfloat_amount( AmountInGlobalCurrency )
end as ActualAmountInGlobCurrency,
@AnalyticsDetails.query.axis: #COLUMNS
@Semantics.amount.currencyCode: 'GlobalCurrency'
@Aggregation.default: #SUM
@Consumption.dynamicLabel: { label : 'Plan Amount (&1)' ,
binding : [ { index : 1 , parameter : 'P_PlanningCategory' } ] }
case
when ( PlanningCategory = $parameters.P_PlanningCategory ) then curr_to_decfloat_amount( AmountInGlobalCurrency )
end as PlanAmountInGlobCurrency,
@AnalyticsDetails.query.axis: #COLUMNS
@Semantics.amount.currencyCode: 'GlobalCurrency'
@Aggregation.default: #FORMULA
@EndUserText.label: 'Plan Actual Delta'
$projection.PlanAmountInGlobCurrency - $projection.ActualAmountInGlobCurrency as DeltaAmountInGlobCurrency
}
where Ledger="0L" and LedgerFiscalYear="2021"
Esta vista previa se realizó con Web Dynpro Data Grid que comencé a ver la transacción de backend RSRT con el nombre de consulta técnica «2CZJF_C_DynLabels_Q01».
Las etiquetas dinámicas están marcadas en rojo y muestran la Fecha clave y la Categoría del plan dentro ().
Las siguientes fuentes proporcionan más información:
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073