SAP-CDS学习

创建CDS

--视图的基本语法
/*
@AbapCatalog.sqlViewName: '...'
@AbapCatalog.Buffering.status: #ACTIVE
@AbapCatalog.Buffering.type: #FULL
  define view ...
   as select from ...
   { ... }

*/

@AbapCatalog.sqlViewName: 'ZDEMO_CDS_T' --SQL描述  必输
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'ZDEMO_CDS'
define view ZDEMO_CDS  --视图技术名称  必输 SQL描述和视图技术名称不可以一样
  as 

  select from mara 

   {  
        matnr,
        ersda ,
        laeda}
        where laeda = '00000000'

 

通过SE11可以查看

设置主键

@AbapCatalog.sqlViewName: 'ZDEMO_CDS_T'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS 测试Demo'
define view ZDEMO_CDS 
  as 

  select from mara 

   {  
       key matnr,
        ersda ,
        laeda}
        where laeda = '00000000'

删除客户端字段

@AbapCatalog.sqlViewName: 'ZDEMO_CDS_T'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@ClientDependent:         false  --不需要客户端
@EndUserText.label: 'CDS 测试Demo'
define view ZDEMO_CDS 
  as 

  select from mara 

   {  
       key matnr,
        ersda ,
        laeda}
        where laeda = '00000000'

CDS - SELECT LEFT OUTER JOIN / UNION

@AbapCatalog.sqlViewName: 'ZDEMO_CDS_T'  --SE11 查询的技术名称
@ClientDependent:         false  --不需要客户端
@EndUserText.label: 'CDS 测试Demo'  --视图描述
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
define view ZDEMO_CDS 
  as 

  select from mara as A
    left outer join makt as B
        on A.matnr = B.matnr

   {  
    key A.matnr,
        maktx,
        ersda ,
        laeda}
        where laeda = '20240820'
        and spras = '1'
    union
   select from mara as A
    left outer join makt as B
        on A.matnr = B.matnr

   {  
    key A.matnr,
        maktx,
        ersda ,
        laeda}
        where laeda = '20240819'
        and spras = '1'

时戳计算

@AbapCatalog.sqlViewName: 'zcds_data_SQL'   --SQL描述  必输
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '100天'
define view zcds_data as    --视图技术名称  必输 SQL描述和视图技术名称不可以一样
  
  select from demo_expressions  {
    id,
    substring( cast( tstmp_add_seconds( tstmp_current_utctimestamp(), cast( 60 * 60 * 24 * -100 as abap.dec(15,0) ),'FAIL') as abap.char(17) ), 1, 8 ) as date1,
     substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as date2,
    tstmp_current_utctimestamp() as timestamp1,
    tstmp_is_valid(tstmp_current_utctimestamp()) as valid1 ,
    tstmp_seconds_between(tstmp_current_utctimestamp(),  tstmp_add_seconds( tstmp_current_utctimestamp(), cast( 100 as abap.dec(15,0) ),'FAIL'),'FAIL') as difference ,
    tstmp_add_seconds( tstmp_current_utctimestamp(), cast( 60 * 60 * 24 * -1 as abap.dec(15,0) ),'FAIL') as timestamp2
    }

 

@AbapCatalog.sqlViewName: 'demo_cds_datfnc'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_date_functions
  with parameters p_days:abap.int4,
                  p_months:abap.int4
  as select from demo_expressions {
    id,
    dats1 as date1,
    dats_is_valid(dats1) as valid1,
    dats2 as date2,
    dats_is_valid(dats2) as valid2,
    dats_days_between(dats1,dats2) as difference,
    dats_add_days(dats1,:p_days,'INITIAL')  as day1,
    dats_add_months(dats2,:p_months,'FAIL') as day2 }

@AbapCatalog.sqlViewName: 'DEMO_CDS_SYST'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_system_fields
  with parameters
    @Environment.systemField : #CLIENT
    p_mandt : syst_mandt,
    @Environment.systemField : #SYSTEM_DATE
    p_datum : syst_datum,
    @Environment.systemField : #SYSTEM_TIME
    p_uzeit : syst_uzeit,
    p_langu : syst_langu  
    @<Environment.systemField : #SYSTEM_LANGUAGE,
    p_uname : syst_uname  
    @<Environment.systemField : #USER
  as select from demo_expressions          
     { :p_mandt as client,
       :p_datum as datum,
       :p_uzeit as uzeit,
       :p_langu as langu,
       :p_uname as uname  }
      where id = '1'; 

@AbapCatalog.sqlViewName: 'DEMO_CDS_PTYPE'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_parameter_type
  with parameters p_date:demodate,
                  p_num:abap.dec(10,3) as
  select from demo_expressions          
         { key id,
               :p_date       as col_date,
               :p_num + dec3 as col_num
         };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值