zoukankan      html  css  js  c++  java
  • 使用ABAP CDS views创建一个分析模型并设置参数

    参考blog:
    1,Trick with parameter derivation for using analytical report variants in ABAP CDS views
    https://blogs.sap.com/2017/09/29/trick-with-parameter-derivation-for-using-analytical-report-variants-in-abap-cds-views/

    2,Providing Value Help
    https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/7.5.9/en-US/ce9deec2b91746f7b2f1ca4421256754.html

    我们可以使用cds view的注解为分析模型创建参数,并且可以为该参数设置value help。


    1, 创建一个basis view,作为数据的来源

    @AbapCatalog.sqlViewName: 'ZV_I_BASIS'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'ZFI_I_BASIS'
    define view ZFI_I_BASIS
        as select from rsadmina as t1
    {
        @ObjectModel.text.element: ['accstdname']
        '1' as accstdid,
        @Semantics.text: true
        'IFRS' as accstdname,
        '0L' as p_r_la,
        'P0' as p_r_la_wo_pd,
        'TL' as p_r_ta,
        1 as sumcount
    }
    union all select from rsadmina as t2
    {
        @ObjectModel.text.element: ['accstdname']
        '2' as accstdid,
        @Semantics.text: true
        'RAS' as accstdname,
        'LL' as p_r_la,
        'P1' as p_r_la_wo_pd,
        'TL' as p_r_ta,
        2 as sumcount
    }

    这里涉及到的一些注解在之前的blog中,有过介绍。另外的一些注解可以看这个说明。

    2,创建search help view

    @AbapCatalog.sqlViewName: 'ZV_VALUEHELP'
    @ObjectModel.representativeKey: 'accstdid_vh'
    @Search.searchable: true
    @EndUserText.label: 'ZFI_VALUEHELP'
    
    define view ZFI_VALUEHELP
        as select from ZFI_I_BASIS
    {
        @Search.defaultSearchElement: true
        key accstdid as accstdid_vh
    }

    这个view的数据从之前的basis view中查找,
    @Search.searchable: true 如果将该view作为search help的话,需要使用该注解。
    @Search.defaultSearchElement: true 至少设置一个默认检索项目,在search help的dialog中,可以使用该字段作为检索项目。
    @ObjectModel.representativeKey: 'accstdid_vh'  因为search help是作为association与其他view进行关联的,所以要指定一个字段作为key,与其他view进行关联。

    3,创建cube

    @AbapCatalog.sqlViewName: 'ZV_I_ACCSTANDAND'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'Dictionary of IFRS/RAS standard'
    
    @Analytics.dataCategory: #CUBE
    define view ZFI_I_ACCSTANDAND
        as select from ZFI_I_BASIS
        association [0..1] to ZFI_VALUEHELP as _zvaluehelp on  $projection.accstdid = _zvaluehelp.accstdid_vh
    {
        @ObjectModel.text.element: ['accstdname']
        @ObjectModel.foreignKey.association: '_zvaluehelp'
        accstdid,
        @Semantics.text: true
        accstdname,
        p_r_la,
        p_r_la_wo_pd,
        p_r_ta,
        @DefaultAggregation: #SUM
        sumcount,
    
        _zvaluehelp
    }

    association [0..1] to ZFI_VALUEHELP as _zvaluehelp on  $projection.accstdid = _zvaluehelp.accstdid_vh  这个关联不能写在analysis view中,因为analysis view中association无效。key就是我们在之前通过注解 @ObjectModel.representativeKey来定义的。
    @ObjectModel.foreignKey.association: '_zvaluehelp' 使用这个注解可以将该字段与search help的view进行关联,同时需要在view中暴露  '_zvaluehelp'。

    4,创建analysis view

    @AbapCatalog.sqlViewName: 'ZV_C_LEDGER3_Q'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'ZFI_C_LEDGER3_Q'
    
    @Analytics.query: true
    @VDM.viewType: #CONSUMPTION
    
    define view ZFI_C_LEDGER3_Q
        as select from ZFI_I_ACCSTANDAND
    
    {
            @Consumption.filter: {selectionType: #SINGLE, multipleSelections: true, mandatory: true}
            //@Consumption.derivation: { lookupEntity: 'ZFI_I_ACCSTANDAND',
            //                            resultElement: 'accstdid'
            //                          }
            accstdid,
            accstdname,
            p_r_la,
    
            sumcount
    }

    @Consumption.filter: {selectionType: #SINGLE, multipleSelections: true, mandatory: true} 消费字段作为检索项出现,可以设置该检索项的各种属性,比如是否必输,是否为单选等。

    5,生成tile与target,运行。

  • 相关阅读:
    npm总是安装不成功,而且很慢?
    Nginx启动报错:10013: An attempt was made to access a socket in a way forbidden
    firebug如何使用
    video详解 HTML5中的视频:
    树的各种遍历
    SQL语句执行顺序
    vim常用命令
    无监督分类算法—K-Means
    Json字符串和Json对象的简单总结
    List拆分成多个集合
  • 原文地址:https://www.cnblogs.com/suoluo119/p/11691415.html
Copyright © 2011-2022 走看看