创建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
};