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,运行。

  • 相关阅读:
    SpringBoot集成Mybatis
    springboot通过slf4j配置日志
    SpringBoot导入jsp依赖始终报错
    shiro小记
    阿里开发手册华山版——(编程规约篇)记录目前自己不合理的地方
    [网络流24题] 2. 太空飞行计划问题 解题报告
    LOJ 6089 小 Y 的背包计数问题 解题报告 (动态规划)
    UVA 10599 Blocks 解题报告 (动态规划)
    Comet OJ#12E Ternary String Counting 解题报告
    [WC2016]挑战NPC 解题报告
  • 原文地址:https://www.cnblogs.com/suoluo119/p/11691415.html
Copyright © 2011-2022 走看看