Почему поля выбора не отображаются? - PullRequest
0 голосов
/ 20 февраля 2019

Я создал представление CDS с расширением разрешения метаданных следующим образом:

@AbapCatalog.sqlViewName: 'ZAMCCLASSSEL'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Classification selection'
@VDM.viewType: #CONSUMPTION 
@Metadata.allowExtensions: true

define view ZAM_C_CLASS_SEL
  as select from ZAM_I_CLASS_SEL
{
  key InternalClass,
      ClassType,
      ClassNum,
      _ClassKeyword,
      _ClassType
}

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

@AbapCatalog.sqlViewName: 'ZAMICLASSSEL'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Classification selection'
@VDM.viewType: #COMPOSITE

define view ZAM_I_CLASS_SEL
  as select from ZAM_I_CLASS_HEAD
  association [1..1] to ZAM_I_CLASSTYPE   as _ClassType    on $projection.ClassType = _ClassType.ClassType
  association [1..1] to ZAM_I_CLASS_KEYWS as _ClassKeyword on $projection.InternalClass = _ClassKeyword.InternalClass
{
      @ObjectModel.foreignKey.association: '_ClassKeyword'
  key InternalClass,
      @ObjectModel.foreignKey.association: '_ClassType'
      ClassType,
      ClassNum,
      ValidFrom,
      ValidUntil,
      _ClassType,
      _ClassKeyword
}

и расширение метаданных:

@Metadata.layer: #CORE
annotate view ZAM_C_CLASS_SEL with
{

  @UI.hidden: true
  InternalClass;
  @UI.selectionField: [{position: 10}]
  ClassType;
  @UI.selectionField: [{position: 20}]
  ClassNum;

}

На smartfilterbar должны отображаться оба поля ClassType и ClassNum как поля выбора на экране:

<mvc:View controllerName="ch.mindustrie.FIORI_ELE_SELECTION.controller.Selection" xmlns:mvc="sap.ui.core.mvc"
    xmlns:smartFilterBar="sap.ui.comp.smartfilterbar" displayBlock="true" xmlns="sap.m">
    <Shell id="shell">
        <App id="app">
            <pages>
                <Page>
                    <smartFilterBar:SmartFilterBar id="smartFilterBar" persistencyKey="UniqueAndStablePersistencyKey" entitySet="ZAM_C_CLASS_SEL"></smartFilterBar:SmartFilterBar>
                </Page>
            </pages>
        </App>
    </Shell>
</mvc:View>  

, но вместо этого у меня есть пустой smartfilterbar:

enter image description here

нажатие на кнопку Filters и оно показывает:

enter image description here

Это означает, что оба полядоступно, но, возможно, отсутствует опция для установки на элементе управления smartfilterbar.

Обновление
Я понял, что при изменении мета-расширения следующим образом:

@Metadata.layer: #CORE
annotate view ZAM_C_CLASS_SEL with
{
  @UI.selectionField: [{position: 20}]
  @Consumption.filter : { mandatory: true}
  ClassType;
  @UI.selectionField: [{position: 10}]
  @Consumption.filter : { mandatory: true}
  ClassNum;

}  

Будут показаны поля выбора.

...