ABAP CDS @ AnalyticsDetails.resultValueSource - PullRequest
0 голосов
/ 18 января 2020

Я немного борюсь с аннотацией @AnalyticsDetails.resultValueSource. В чем именно смысл этой аннотации? Документ Документация SAP гласит:

При выполнении запроса строка данных отображается только для признака c, если для этого признака имеются опубликованные значения c ,

CUBE Все значения, доступные в представлении fromclause.

DIMENSION Все значения, доступные в измерении.

Я попытался построить следующий запрос:

Basi c Представление для основных данных:

@VDM.viewType: #BASIC
@Analytics.dataCategory: #DIMENSION
@ObjectModel.representativeKey: 'carrid'
@AbapCatalog.sqlViewName: 'zairline_v'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Airlines'
define view zairline as select from scarr {    
    key carrid,
    carrname
} where carrid = 'LH'

Составное представление:

VDM.viewType: #COMPOSITE
@Analytics.dataCategory: #CUBE
@AbapCatalog.sqlViewName: 'zcube_fbook'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Cube flight booking'
define view zcube_flights as select from sflight
  association to zairline as _airline on sflight.carrid = _airline.carrid {
    @ObjectModel.foreignKey.association: '_airline'
    key carrid,
    key connid,
    key fldate,
    _airline
}

Представление потребления:

@VDM.viewType: #CONSUMPTION
@Analytics.query
@AbapCatalog.sqlViewName: 'zquery_fbook'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Query flight bookings'
define view zquery_flight_booking as select from zcube_flights{
    @AnalyticsDetails.query.axis: #ROWS
    @AnalyticsDetails.resultValueSource: #DIMENSION
    key carrid,
    key connid,
    key fldate
}

Но запрос показывает рейсы для каждой авиакомпании (NetWeaver Release 7.51). В соответствии с документом SAP, я ожидаю, что он должен просто показывать рейсы авиакомпании "LH".

Мой вопрос: в чем смысл этой аннотации, когда она не ограничивает строки, показанные в запросе должным образом?

...