SAP ABAP CDS-02 ABAP CDS语法

ABAP CDS中的CDS DDL和CDS DCL的语法包括一般SQL DDL和DCL的元素,还可以定义注释和CDS关联。其语法和语义基本符合CDS的一般概念。

ABAP CDS - 一般语法规则(General Syntax Rules)

在ABAP CDS中定义CDS对象的CDS DDL和CDS DCL的一般语法规则如下:
关键词-Keywords:关键字必须全大写,全小写,或者小写字母加大写首字母。其他大小写混合使用是不允许的。
命名-Names:
        •名称不区分大小写。
        •名称长度不超过30个字符,不超过2个字符。
        •名称可以由字母、数字、“_”、“/”组成。
        •名称必须以字母、斜杠或下划线开头。建议使用下划线作为CDS关联的命名约定。
        •包含多个部分的名称的分隔符是“。”。包含多个部分的名称可以是路径、带有前缀数据源的列和结构化注释。
        •以下CDS关键字不能用作名称:ALL, AND, AS, ASSOCIATION, AVG, CASE, CAST, COUNT, CROSS, DISTINCT, EXISTS, EXTEND, EXTENSION, FROM, FULL, GROUP, HAVING, INNER, JOIN, KEY, LEFT, MAX, MIN, NOT, NULL, ON, OR, ORDER, RIGHT, SELECT, SUM, UNION, VIEW, WHEN, WHERE。
常量-Literal
        •必须完整地指定数字常量,必要时使用小数点(.)作为小数分隔符。
        •字符常量用单引号(')括起来。
注释-Comments:
        •两个正斜杠(//)引入一个注释,该注释一直持续到行尾。
        •行内或跨多行的注释用字符/*和*/括起来。
分隔符-Separators:语句可以用分号(;)结束。有时这是强制性的。
受保护的关键字-Protected words:某些关键字受到保护,不能用作自定义名称。数据库表TRESE中保留的名称不允许使用。

说明
        •语句后面的结束分号有时是可选的,因为一段CDS源代码目前只能包含一条语句。
        •在CDS数据定义的DDL源代码和CDS角色的DCL源代码中,还可以使用两个斜杠、两个破折号(--)来引入注释。但是,斜杠(//)是推荐的方法。在用于注释定义的DDLA源代码和用于元数据扩展的DDLX源代码中不允许使用两个破折号

举例说明:
• SELECT、select和Select都是指定关键字的有效方法。另一方面,seLect和SeLect会产生语法错误。
• MYVIEW, myview, and myView都是定义相同的操作数。
• 0.5是一个有效的数字常量,但是 .5 不是。

ABAP CDS - 语言元素(Language Elements)

以下部分按主题排列,总结了ABAP CDS中的CDS DDL和CDS DCL的语言元素。

◾DDL(Data Definition Language,即数据定义语言)

CDS注释定义-CDS Annotation Definitions
关键词及补充说明:

Language ElementMeaning
define annotation ...定义CDS注释
enum定义CDS注释的枚举符号
default定义CDS注释的默认值
array of定义注释数组

CDS视图-CDS Views
关键词及补充说明:

Language ElementMeaning
DEFINE VIEW ... AS定义CDS视图
WITH PARAMETERS定义CDS视图的输入参数
SELECT [DISTINCT] ... FROMCDS视图的SELECT语句
INNER JOIN ... ONSELECT语句中的内连接
LEFT|RIGHT OUTER JOIN ... ONSELECT语句中的外连接
ASSOCIATION ... TO ... AS ... ON为SELECT语句中的路径表达式定义CDS关联
WITH DEFAULT FILTER指定CDS关联的默认筛选条件
1:路径表达式的属性
INNER ... WHERE路径表达式的属性
LEFT OUTER ... WHERE路径表达式的属性
KEY ... ASSELECT列表的元素
$EXTENSION.*SELECT列表中增强的元素
WHERE ...SELECT语句的WHERE子句
GROUP BY ...SELECT语句的GROUP-BY子句
HAVING ...SELECT语句的HAVING子句
UNION ALL ...SELECT语句的UNION子句

CDS视图增强-CDS View Enhancements
关键词及补充说明:

Language ElementMeaning
EXTEND VIEW ... WITH使用CDS视图扩展扩展CDS视图

CDS表函数-CDS Table Functions
关键词及补充说明:

Language ElementMeaning
DEFINE TABLE FUNCTION ... RETURNS ... IMPLEMENTED BY METHOD ...定义CDS表函数

CDS层次结构-CDS Hierarchies
关键词及补充说明:

Language ElementMeaning
DEFINE HIERARCHY ...定义CDS层次结构
WITH PARAMETERS定义CDS层次结构的输入参数
AS PARENT CHILD HIERARCHY使用父子关系定义CDS层次结构
SOURCE ...指定CDS层次结构的数据源
CHILD TO PARENT ASSOCIATION指定CDS层次结构的层次关联
PERIOD FROM ... TO ... VALID FROM ... TO ...定义临时的层次结构
DIRECTORY ... FILTER BY ...指定CDS层次结构源的条件
START WHERE ...指定CDS层次结构的开始条件
SIBLINGS ORDER BY ...指定CDS层次结构中兄弟节点的排序顺序
DEPTH ...划定CDS层次结构的结构级别
NODETYPE ...将元素定义为CDS层次结构的节点类型
MULTIPLE PARENTS ...定义在CDS层次结构中指定多个父节点时应用的行为
ORPHANS ...定义在CDS层次结构中指定孤立节点时应用的行为
CYCLES ...定义在CDS层次结构中指定节点周期时应用的行为
GENERATE SPANTREE将CDS层次结构简化为树状结构

CDS抽象实体-Abstract CDS Entities
关键词及补充说明:

Language ElementMeaning
DEFINE ABSTRACT ENTITY ...定义一个抽象的CDS实体
WITH PARAMETERS定义抽象CDS实体的输入参数
ASSOCIATION ... TO ... ON在抽象CDS实体的元素列表中发布CDS关联
WITH DEFAULT FILTER指定CDS关联的默认筛选条件

CDS元数据扩展-CDS Metadata Extensions
关键词及补充说明:

Language ElementMeaning
ANNOTATE ENTITY|VIEW ... WITH为CDS实体定义CDS元数据扩展
VARIANT将CDS元数据扩展与CDS变式连接起来
PARAMETERS扩展CDS实体输入参数的注释

◾DCL(Data Control Language,即数据控制语言)

CDS角色-CDS Roles
关键词及补充说明:

Language ElementMeaning
DEFINE ROLE定义CDS角色
GRANT SELECT ON在CDS角色中定义访问规则
WHERECDS角色的条件访问规则中的WHERE子句
AND, OR, NOTCDS角色的条件访问规则中的布尔运算符
INHERIT定义CDS角色的继承访问规则(已过时)
ASPECT pfcg_auth,CDS角色的条件
ASPECT user
PFCG_MAPPING指定CDS角色的PFCG条件中的PFCG映射
INHERIT ... FOR GRANT SELECT ON定义CDS角色的继承条件
...=|<>|<|>|<=|>=|?=|BETWEEN|LIKE|IS NULL ...常量条件的操作符

CDS访问策略-CDS access policy
关键词及补充说明:

Language ElementMeaning
DEFINE ACCESSPOLICY定义CDS访问策略
DEFINE PFCG_MAPPING ... BETWEEN ... AND ... USING ...在访问策略中定义PFCG映射

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

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

相关文章

基于SSM框架JAVA仓库管理系统源代码Mysql数据库(可当毕设,实训项目,设计大赛)

仓库管理系统实现的功能包括店铺管理&#xff0c;员工管理&#xff0c;部门管理&#xff0c;商品管理&#xff0c;权限管理&#xff0c;入库管理&#xff0c;出库管理&#xff0c;盘点管理&#xff0c;统计管理等功能。该项目采用了Mysql数据库&#xff0c;Java语言&#xff0c…

Hibernate多事务同时调用update(T t) ,字段被覆盖问题

前言 今天现网有个订单卡单了&#xff0c;经过排查发现没有任何异常日志&#xff0c;根据日志定位发现本应该更新的一个状态&#xff0c;也sql肯定执行了(使用了Hibernate的ORM框架)&#xff0c;但是数据库里面的状态没有更新。大概逻辑如下 String hql from orderInfo where…

大模型训练:如何解决GPU万卡互联挑战?

如何解决GPU万卡互联的挑战 近日&#xff0c;字节跳动携手北京大学研究团队发布重磅论文&#xff0c;揭示了一项革命性技术&#xff1a;将大型语言模型训练扩展至超10,000块GPU的生产系统。此系统不仅解决了万卡集群训练大模型时的效率和稳定性难题&#xff0c;更标志着人工智能…

用dbms_shared_pool.purge清除执行计划

1.Oracle 11g如何清除share pool中某条SQL的执行计划 以前在Oracle 10g数据库上,如果遇到绑定窥探导致执行计划慢的情况,想要清除某条SQL的执行计划,让它硬解析,找了很久都没有找到直接操作share pool的方法&#xff08;总不能alter system flush shared_pool&#xff09;,只能…

rocketmq和rabbitmq总是分不清?

1. 官方解答 摘自百度搜索&#xff1a; 2. 通俗易懂的回答

【Gem5】获取构建教程

gem5-tutorial-hpca-2023 1 介绍 1.1 Gem5是什么1.2 Gem5可以用来做什么1.3 获取并构建gem5 gem5-tutorial-hpca-2023 打开网址&#xff1a; github 创建教程代码空空间 “Code” -> “Codespaces” -> “Create Codespace on master” GitHub Codespaces 是一个由…

LeetCode 157. Read N Characters Given Read4

个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 LeetCode 157. 读取给定的 N 个字符 Read4 一、题目描述 Given a file and assume that you can only read th…

配置Kubectl命令自动补全功能

网站&#xff1a; bash-completion补全工具官网&#xff1a;https://caliban.org/bash/ 安装: 在日常管理k8s集群的时候&#xff0c;时刻都会使用到Kubectl命令行工具&#xff0c;但是该命令还是挺复杂的&#xff0c;使用中也记不住那么多的api选项&#xff0c;所以这里介绍…

python如何判断点是否在旋转矩形内部矢量

1. 简介 在计算机图形学和计算几何中&#xff0c;经常会遇到判断一个点是否在一个旋转矩形内部的问题。本项目方案旨在使用Python提供一种高效准确的算法来解决这个问题。 2. 算法原理 方法一&#xff1a; 为了判断一个点是否在一个旋转矩形内部&#xff0c;我们可以将问题…

最坏情况为线性时间的第k大元素

在统计和数据分析中&#xff0c;我们经常会遇到求最大值、最小值、中位数、四分位数、Top K等类似需求&#xff0c;其实它们都属于顺序统计量&#xff0c;本文将对顺序统计量的定义和求解算法进行介绍&#xff0c;重点介绍如何在最差时间复杂度也是线性的情况下求解第k大元素。…

在Debian 12系统上安装Docker

Docker 在 Debian 12 上的安装 安装验证测试更多信息引言 在现代的开发环境中,容器技术发挥着至关重要的作用。Docker 提供了快速、可靠和易于使用的容器化解决方案,使开发人员和 DevOps 专业人士能够以轻松的方式将应用程序从一个环境部署到另一个环境。 Docker 的安装过程在…

实用运维工具(转载)

1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载&#xff1a;http://sourceforge.net/projects/nethogs/files/nethogs/0.8/nethogs-0.8.0.tar.gz/download [rootlocalhost ~]#yum -y install libpcap-deve…

C语言—每日选择题—Day68

第一题 1、运行以下C语言代码&#xff0c;输出的结果是&#xff08;&#xff09; #include <stdio.h> int main() {char *str[3] {"stra", "strb", "strc"};char *p str[0];int i 0;while(i < 3){printf("%s ",p);i;} retur…

在win10上虚拟一个LoongOS系统(类似虚拟机)作为开发环境

文章目录 1.安装1.1.下载这三个东西1.2.安装好qemu。1.3.创建一个启动脚本startup_mate.bat&#xff0c;然后把三部分东西放到一起1.4.然后双击startup.bat就可以启动了。 2.文件的传输2.1.使能虚拟机系统的ssh2.2.连接ssh 3.Qt相关安装Qt安装opencv 1.安装 注意&#xff0c;一…

ClickHouse--17--argMin() 和argMax()函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 argMin() 和argMax()函数业务场景使用案例1.准备表和数据&#xff1a;业务场景一&#xff1a;查看salary 最高和最小的user业务场景二&#xff1a;根据更新时间获取…

再也不怕面试官问 OOM了,一次生产环境 Metaspace OOM 排查流程实操!

问题背景 小奎公司的运维同时今天反映核心业务一个服务目前 CPU 的使用率、堆内存、非堆内存的使用率有点高。刚反映没有过多久该服务就直接 OOM 了&#xff0c;以下是生产监控平台监控信息。 CPU 使用率监控 堆内存和非堆内存使用率 OOM 产生的日志报错信息 问题分析 根…

Go第三方框架--ants协程池框架

1. 背景介绍 1.1 goroutine ants是站在巨人的肩膀上开发出来的&#xff0c;这个巨人是goroutine&#xff0c;这是连小学生都知道的事儿&#xff0c;那么为什么不继续使用goroutine(以下简称go协程)呢。这是个思考题&#xff0c;希望讲完本文大家可以有个答案。 go协程只涉及用…

【STL】队列(queue)

队列 queue没有迭代器 Queue所有元素的进出都必须符合”先进先出”的条件&#xff0c;只有queue的顶端元素&#xff0c;才有机会被外界取用。Queue不提供遍历功能&#xff0c;也不提供迭代器。 头文件&#xff1a; #include <queue>queue<T> queT;//queue采用模…

Docker部署minio集群

1.基本定义 由于是非常轻量级的软件&#xff0c;所以架构上也没有这么复杂&#xff0c;他使用操作系统的文件系统作为存储介质&#xff0c;我们在向任意节点写数据的时候&#xff0c;minio会自动同步数据到另外的节点&#xff0c;而机制叫做erasure code&#xff08;纠删码&am…

Java基础知识总结(48)

&#xff08;1&#xff09;super关键字 1. super代表父类对象 2. 在构造器中访问父类的构造器&#xff08;创建子类对象时会先创建父类对象&#xff09; 3. super访问父类的实例变量 4. 访问父类的实例方法 如&#xff1a;/*** 父类* author Ray**/public class Animal {String…