美文网首页SAP CDS view
SAP CDS view 如何将 CHAR 类型的数据字段和当前

SAP CDS view 如何将 CHAR 类型的数据字段和当前

作者: _扫地僧_ | 来源:发表于2022-03-06 09:53 被阅读0次

    以数据库表 ADR2 为例,其字段 VALID_FROM 类型为 char14,存储的日期格式为 YYYYMMDDHHMMSS

    一些具体的例子数据:


    现在有个需求,开发一个 CDS view,将 valid_from 小于当前日期的记录全部读取出来。

    ABAP 752 版本之后,可以使用 $session.system_date 在 CDS view 的源代码里访问当前 Application server 的当前日期。

    下面是这个需求的实现步骤。

    1. 创建一个 CDS view ZITIME,
    @AbapCatalog.sqlViewName: 'ZJERRYTIME'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'time'
    define view zitime as select from adr2 {
        key addrnumber as addnumber,
        country,
        valid_from,
        cast(substring(valid_from,1,8) as abap.dats) as valid_from_date
    } where valid_from <> ''
    
    

    首先使用 substring 将 valid_from 字段前8个字符提取出来,然后使用 cast 将其转换成类型 abap.dats, 因为只有类型相同的两个字段,才能进行比较。我们使用 cast 将 substring 函数返回的 char 类型的值,转换成和 $session.system_date 变量相同的类型。

    转换完毕之后,将这个新的字段重命名为 valid_from_date:

    1. 新建一个 CDS view ZCTIME,将前一个视图的字段 valid_from_date$session.system_date 比较即可:
    @AbapCatalog.sqlViewName: 'ZCTIMEVIEW'
    @AbapCatalog.compiler.compareFilter: true
    @AbapCatalog.preserveKey: true
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: 'consumption'
    define view ZCTIME as select from zitime {
        key zitime.addnumber,
        zitime.country,
        zitime.valid_from_date
    } where valid_from_date < $session.system_date
    

    最后的运行效果:

    更多Jerry的原创文章,尽在:"汪子熙":


    相关文章

      网友评论

        本文标题:SAP CDS view 如何将 CHAR 类型的数据字段和当前

        本文链接:https://www.haomeiwen.com/subject/xmhylrtx.html