CDS(一)

news2024/11/19 14:35:41

Core Data Services 核心数据服务

DDL 定义Query Language 查询DCL 控制(权限相关)
model,从语义层获取数据open SQL 访问CDS viewCDS权限定义,集成旧的权限概念
扩展native SQL扩展SQL建模和声明

ABAP ViewCDS View
支持所有数据库
支持查询内连接内连接,外连接,union
支持计算不支持支持aggregation,grouping,calculation
支持子view不支持

可以基于一个CDSview创建另一个

CDS命名:

其他规则:

SQL视图名称与不带“_”前缀的CDS名称相同。

CDS视图参数以“P_”开头,后跟CamelCase名称。

Associations以“_”开头,后跟不带前缀的视图名称。例如:“_Product”表示与“I_Product”视图的关联 

字段:简洁,驼峰法命名(SalesOrder)

UUID:Universally Unique Identifier 唯一标识

特殊字段

代码:代码是具有固定值列表的字段,例如语言和货币:

表示一个布尔值或是个真实的值陈述

OrderIsReleased, NotificationHasLongText

数量或数量:

NetAmountInDisplayCurrency, TaxAmount, OrderQuantity

计时:

CreationDateTime

比率和比率:

ExchangeRate, ConditionRateInPercent, ProbabilityRatio

Session variables

as select from sflight 
     association to ZI_HT_DDIC as _Gesellschaft
      on $projection.carrid = _Gesellschaft.carrid
{
       key carrid,                               
       key connid,
       @EndUserText.label: 'Test-01'
       @EndUserText.quickInfo: 'Test-02'
       key fldate,
       @Semantics.quantity.unitOfMeasure: 'quantity'
       seatsmax*70        as  AvgGewicht,
       @Semantics.unitOfMeasure: true
       cast(('KG') as abap.cuky( 5 )) as ZUNIT,
       @Semantics.amount.currencyCode: 'currency'
       price,
       @Semantics.currencyCode: true
       currency,
       planetype,
        
       _Gesellschaft
}

可以查看所有的注释标识

 

Select Distinct

如果结果集中有重复的条目,DISTINCt可排除结果集中的重复条目。


define view ZDEMO_CDS_DDL
  as select distinct from sbook
{
  carrid,
  connid
}

Key 字段声明

指定CDS View中哪些字段是Key字段

CASE表达式

实现分支运算

  • case...when...else...end as 构成分支运算的逻辑
  • when语句中可以是逻辑表达式

CAST表达式

强制类型转换

  • CAST可以完成所需要的强制类型转换,进而实现在CDS中的运算需求;其中abap.fltp代表转换为abap中的浮点型

COALESCE函数

常用用户处理NULL的状况,为NULL语设定默认值

  • coalesce(arg1, arg2): 如果arg1不为NULL则返回arg1的值,否则返回arg2的值

define view ZI_HT_DDIC 
//with parameters p_carrid: abap.char( 3 ) 
//使用association 方法关联其他数据源(数据库表、视图、CDS)
 as select from spfli {
    key carrid,                                //指定CDS View中哪些字段是Key字段
    key connid,
        airpto,
        cityfrom,
        cityto,
        countryfr,
        arrtime,
        deptime,
        concat(cityfrom, cityto) as test1 ,     //concat () 拼接两个字符串,substring( )获取字符串中的一个子串。
//      concat( concat (substring(arrtime,5,2),'-'),  

/*case...when...else...end as 构成分支运算的逻辑
when语句中可以是逻辑表达式*/
       case carrid
            when 'AA' then 'American Airlines'
            when 'AB' then 'Air Berlin'
            when 'UA' then 'United Airlines'
            when 'CN' then 'China Airlines'
            else 'Other Airlines'
            end as airline_name,
            
 //CAST可以完成所需要的强制类型转换,进而实现在CDS中的运算需求;其中abap.fltp代表转换为abap中的浮点型
 
 case carrid
            when 'AA' then cast ( connid as abap.fltp ) * 1.3
            else          cast ( connid as abap.fltp ) * 0.9
       end as final_amount,
//coalesce(arg1, arg2): 如果arg1不为NULL则返回arg1的值,否则返回arg2的值

 coalesce( airpto, arrtime ) as status
     
}
// where carrid = $parameters.p_carrid;

Build-in 函数

常见的数值表达式如下:
ABS:获取绝对值
CEIL:向上取整
FLOOR:向下取整
DIV:除法计算,取整数位
DIVISION:除法计算,保留 N 位小数
MOD:除法计算,取余数
ROUND:计算舍入值

CONCAT:连接字符串,参数固定为2个,各个表达式之间可以嵌套使用,CONCAT内部也可以使用 &&
&&:连接字符串,参数没有个数限制,但不能将其他内嵌表达式当作参数使用,仅作为操作符使用,在非SELECT语句中也可以被使用
CONCAT_WITH_SPACE:连接字符串,并用 N 个空格分隔,该表达式结果不能超过1333个字符
INSTR:遍历字符串,查找指定字符 s1 并返回第一次出现的位置,没有查到则返回0
LEFT/RIGHT:从字符串左/右侧开始取出 N 位字符,忽略前导/尾部的空格
LENGTH:计算字符串长度
DATS_IS_VALID/TIMS_IS_VALID:校验日期/时间有效性,有效时返回 1,否则返回 0
DATS_DAYS_BETWEEN:计算日期d1和d2相隔的天数
DATS_ADD_DAYS:为指定日期加上N天
DATS_ADD_MONTHS:为指定日期加上N月
TSTMP_IS_VALID:校验时间戳有效性,有效时返回 1,否则返回 0
TSTMP_CURRENT_UTCTIMESTAMP:返回当前时间戳
TSTMP_SECONDS_BETWEEN:计算时间戳 t1 和 t2 相隔的秒数,需要用赋值语句进行传参,可以添加相应的错误处理
TSTMP_ADD_SECONDS:为指定时间戳加上 N 秒,N 必须为 timestamp 类型
ABAP_USER_TIMEZONE:获取用户时区,不传参时默认获取当前用户当前 Client 的时区
ABAP_SYSTEM_TIMEZONE:获取系统时区,不传参时默认获取当前 Client 的时区TSTMP_TO_DATS:将时间戳转换成对应时区的日期
TSTMP_TO_TIMS:将时间戳转换成对应时区的时间
TSTMP_TO_DST:根据时间戳获取对应时区的夏令时标识
DATS_TIMS_TO_TSTMP:将日期和时间根据时区转换成时间戳

define view ZI_HT_Customer 


as select from zmind2_conn {
  key carrier_id as AirlineId,
   key connection_id as ConnectionId,
   airport_from_id as DepartureAirport,
   airport_to_id as DestinationAirport,
   departure_time as DepartureTime,
   arrival_time as ArrivalTime,
   distance as Distance,
   distance_unit as DistanceUnit,
 
  key carrier_id,
    min(distance) as MinDistance,
     max(distance) as MaxDistance,
     avg(distance) as AvgDistance,
     sum(distance) as SumDistance,
     count(*) as count_dis
             
   }
   
    group by  
    carrier_id
    having 
    count(*) > 2
  // where carrier_id = 'LH'
  • Having中指定的条件字段,只能是group by中的字段的子集;在Having中也可以使用聚集运算的中间结果集作为删选条件
  • 使用聚集运算时,要使用group by指定聚集的件,也即按哪些字段进行分组统计
  • Inner Join, Left Outer Join, Right Outer Join的用法同ABAP OPEN SQL的用法一致
  • UNION可以合并两个SELECT的结果集,并自定去除重复的条目                                       (1)UNION ALL 合并结果集,保留重复的条目(2)合并的两个结果集要有相同(3)字段数合并结果集的列类型要兼容(4)字段名称要相同

 增强或扩展CDS视图 | 优通SAP (ut163.com)

ABAP CDS View with input parameters

  • CDS Database View : It is read-only classical database view in ABAP Dictionary.
  • CDS Entity: It is actual CDS view. It covers the CDS Database view and makes other attributes possible, such as authorization checks defined in CDS view

1.Define input parameters in a CDS View.

2.Use input parameters in a CDS View.

@AbapCatalog.sqlViewName: 'ZHTTABLEFILTER'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Exercise 4'
define view ZHT_TABLE_FILTER
with parameters matnr:abap.numc(18)
  as select from mara as a
        inner join  makt as b
        on a.matnr = b.matnr
      {
        key a.matnr as material,
        a.ersda,
        a.created_at_time,
        a.ernam,
        a.laeda,
        a.aenam,
        a.vpsta,
        a.pstat,
        a.lvorm,
        a.mtart,
        a.mbrsh,
        b.maktx as description
      } where a.matnr = $parameters.matnr;

3.Call a parameterized view with open SQL.

define view ZHT_TABLE_FILTER02
    with parameters matnr:abap.numc(18)
as select * from ZHT_TABLE_FILTER  (matnr:$parameters.matnr)

尝试显示一个简单的ALV:

REPORT zht_exercise4.

  DATA alv  TYPE REF TO IF_SALV_GUI_TABLE_IDA.
   alv = cl_salv_gui_table_ida=>create_for_cds_view(
       iv_cds_view_name = 'ZHT_TABLE_FILTER' ).
       ALV->set_view_parameters(
        it_parameters = VALUE #(
        ( name = 'matnr' value = '000000000051011280')
        ) ).
if alv is not initial.
alv->fullscreen( )->display( ).
endif.

Extend View

在SE11中,我们通过append对table或view进行增强,在CDSview中,对原有的CDS View进行增强可以如下

@AbapCatalog.sqlViewAppendName: 'ZMIND2_EXT'
@EndUserText.label: 'Monster CDS view extension'
extend view ZI_HT_DDIC 
       with ZI_HT_Customer_ext
       association to zmind2_conn as _from
                  on zspfli.carrid = _from.carrier_id
       {
      _from.airport_from_id ,
      _from.airport_to_id
}

增强后,原CDS View将有增强标记

在原始view中,可以看到append的字段.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全网最细,Jenkins配合GitLab分支自动合并/自动创建(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 GitFlow工作流简介…

python(自4) xpath下载 lxml安装 lxml语法 使用方式

(一)安装 搜索xpath 讲解 XPath 教程 (w3school.com.cn) 一,下载地址 : https://chrome.zzzmh.cn/info/hgimnogjllphhhkhlmebbmlgjoejdpjl 二 ,拖拽 (二)lxml安装 cmd 打开终端 cd pythond…

数据库及分类详细介绍

目录 一、数据库详细介绍1、什么是数据库2、数据库的种类3、常见的数据库4、关系型数据库4.1、关系型数据库介绍4.2、关系型数据库的优缺点4.3、关系型数据库小结 5、非关系型数据库5.1、非关系数据库诞生的背景5.2、非关系型数据库的介绍5.3、非关系型数据库的优缺点5.4、非关…

LInux本地连接超时ip未显示

关闭防护墙 systemctl stop firewalld 查看防火墙状态 systemctl status firewalld 开启80端口 /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 查看Ip ifconfig

清能股份2MW热电联供系统成功下线

2023年9月26日,由清能股份旗下豫氢动力承接的2MW燃料电池热电联供项目已正式下线,发往焦作煤业(集团)开元化工有限责任公司(简称“开元化工”)安装运营。 开元化工是河南知名氯碱国企,该项目是国…

左对齐和右对齐

%d默认为左对齐&#xff0c;%5d为右对齐&#xff08;以空格补齐&#xff09;&#xff0c;%05d为右对齐&#xff08;以0补齐&#xff09;&#xff0c;%-5d左补齐&#xff08;以空格补齐&#xff09;&#xff0c;整数和小数同理。%.xf,x为小数点后保留的位数。 #include<stdi…

WebGL实现透明物体(α混合)

目录 α混合 如何实现α混合 1. 开启混合功能&#xff1a; 2. 指定混合函数 混合函数 gl.blendFunc&#xff08;&#xff09;函数规范 可以指定给src_factor和dst_factor的常量 混合后颜色的计算公式 加法混合 半透明的三角形&#xff08;LookAtBlendedTriangl…

使用Python和Pandas处理网页表格数据

在我们的日常工作和生活中&#xff0c;经常会遇到需要处理大量数据的情况&#xff0c;而网页表格数据则是其中常见的一种形式。如果我们能够灵活地使用Python和Pandas这两个强大的工具&#xff0c;就能够快速、高效地对这些数据进行处理和分析。 首先&#xff0c;我们需要了解…

游戏服务商Latis Global参展2023 ChinaJoy B2B

第20届ChinaJoy于2023年7月在上海举行了为期四天的博览会,参展观众达到了33.8万人次。ChinaJoy是全球最具知名度与影响力的年度盛会之一,涵盖了包括游戏、动漫、互联网影视、电子竞技、潮流玩具、智能娱乐在内的多个数字娱乐领域。ChinaJoy不仅仅代表了数字娱乐领域的最新风向,…

搞定零售出海的底层挑战,泡泡玛特的经验是什么?

出品 | CSDN 云计算 从 2010 年成立&#xff0c;2016 年发布 Molly IP 的盲盒产品到现在&#xff0c;泡泡玛特已经成为在全球拥有员工 4000 多人的知名潮流玩具品牌。就像在中国市场被喜爱的迪士尼、日漫等多个 IP 一样&#xff0c;泡泡玛特从 2022 年开始也带着众多 IP 走出中…

如何正确监测蓄电池健康?狠狠学到!

蓄电池在现代生活和工业中发挥着关键作用&#xff0c;它们为无数设备和系统提供了必要的电力支持。然而&#xff0c;蓄电池的性能和可靠性对许多应用至关重要。监控蓄电池状态和性能变得越来越重要&#xff0c;以确保它们在需要时始终可用。 为此&#xff0c;蓄电池监控系统应运…

从零开始之了解电机及其控制(8)clarke和park变换

为了最大化无刷电机产生的扭矩&#xff0c;我们希望感应磁场与转子磁场正交并引导转子磁场&#xff0c;无刷电机定子产生的磁场矢量将与电流矢量逆时针旋转 90 度 但现在我们要稍微改变这个y电路的外观&#xff0c;我们不是将相位表示为电阻器&#xff0c;它会产生垂直于电流方…

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司&#xff0c;以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商&#xff0c;Miele的经营范围覆盖了厨房、洗衣和清洁领域&#xff0c;致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…

TSM动作识别模型【详解】

文章目录 本文使用的是somethingv2数据集&#xff0c;解压后是如下形式&#xff1b; 由于该压缩数据进行了分卷操作&#xff0c;需要合并后才能进行解压。首先我们将下面4个json文件剪贴到其他文件夹&#xff0c;只保留00-19的文件&#xff0c;然后在该文件夹下打开cmd&#xf…

Unity vscode 官方debug

把这个先unlock 再升级到最新的 然后重新生成 project files 打开 launch.json {"version": "0.2.0","configurations": [{"name": "Attach to Unity","type": "vstuc","request": "a…

创造您梦寐以求的家居设计——Live Home 3D Pro for Mac

您是否曾经想象过在舒适的家中展现自己独特的风格&#xff1f;现在&#xff0c;您可以通过Live Home 3D Pro for Mac来实现您的家居设计梦想&#xff01;这款强大的3D家居设计软件将带给您无限的创作可能性。 Live Home 3D Pro for Mac是一款专业级的家居设计软件&#xff0c;…

Java初始化大量数据到Neo4j中(二)

接Java初始化大量数据到Neo4j中(一)继续探索&#xff0c;之前用create命令导入大量数据发现太过耗时&#xff0c;查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import 业务数据说明可以参加Java初始化大量数据到Neo4j中(一)&#xff0c;这里主要是将处理好的节点数据和…

opencv英文识别tesseract-orc安装

文章目录 一、安装并保存所在路径二、配置环境变量1、打开高级设置2、配置环境变量三、修改tesseract.py文件中的路径,否则运行报错1、进入python所在的文件夹,找到Lib,site-packages2、搜索pytesseract3、打开py文件修改路径一、安装并保存所在路径 特别注意路径名中不能有…

离线环境harbor 搭建及使用

一 摘要 本文主要介绍harbor 的安装及使用。 二 环境信息及部署图 2.1 环境信息 名称版本备注操作系统centos7.9容器docker 23.0.1harbor2.7代理nginx待补充 2.2 架构图 说明&#xff1a; 1.harbor 核心服务里有个nginx &#xff0c;也可以用该nginx 做代理 2.proxy-ngin…

推荐几款优秀的项目报表软件

项目报表在项目工作中扮演着重要的角色&#xff0c;它是领导和客户了解项目进况的直接途径。有需求就会有市场&#xff0c;为解决传统报表制作复杂困难的问题&#xff0c;专业报表工具应运而生。 一款好用的项目报表软件可以帮助项目团队快速产出项目报表&#xff0c;实现数据…