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 Element | Meaning | 
| define annotation ... | 定义CDS注释 | 
| enum | 定义CDS注释的枚举符号 | 
| default | 定义CDS注释的默认值 | 
| array of | 定义注释数组 | 
• CDS视图-CDS Views
 关键词及补充说明:
| Language Element | Meaning | 
| DEFINE VIEW ... AS | 定义CDS视图 | 
| WITH PARAMETERS | 定义CDS视图的输入参数 | 
| SELECT [DISTINCT] ... FROM | CDS视图的SELECT语句 | 
| INNER JOIN ... ON | SELECT语句中的内连接 | 
| LEFT|RIGHT OUTER JOIN ... ON | SELECT语句中的外连接 | 
| ASSOCIATION ... TO ... AS ... ON | 为SELECT语句中的路径表达式定义CDS关联 | 
| WITH DEFAULT FILTER | 指定CDS关联的默认筛选条件 | 
| 1: | 路径表达式的属性 | 
| INNER ... WHERE | 路径表达式的属性 | 
| LEFT OUTER ... WHERE | 路径表达式的属性 | 
| KEY ... AS | SELECT列表的元素 | 
| $EXTENSION.* | SELECT列表中增强的元素 | 
| WHERE ... | SELECT语句的WHERE子句 | 
| GROUP BY ... | SELECT语句的GROUP-BY子句 | 
| HAVING ... | SELECT语句的HAVING子句 | 
| UNION ALL ... | SELECT语句的UNION子句 | 
• CDS视图增强-CDS View Enhancements
 关键词及补充说明:
| Language Element | Meaning | 
| EXTEND VIEW ... WITH | 使用CDS视图扩展扩展CDS视图 | 
• CDS表函数-CDS Table Functions
 关键词及补充说明:
| Language Element | Meaning | 
| DEFINE TABLE FUNCTION ... RETURNS ... IMPLEMENTED BY METHOD ... | 定义CDS表函数 | 
• CDS层次结构-CDS Hierarchies
 关键词及补充说明:
| Language Element | Meaning | 
| 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 Element | Meaning | 
| DEFINE ABSTRACT ENTITY ... | 定义一个抽象的CDS实体 | 
| WITH PARAMETERS | 定义抽象CDS实体的输入参数 | 
| ASSOCIATION ... TO ... ON | 在抽象CDS实体的元素列表中发布CDS关联 | 
| WITH DEFAULT FILTER | 指定CDS关联的默认筛选条件 | 
• CDS元数据扩展-CDS Metadata Extensions
 关键词及补充说明:
| Language Element | Meaning | 
| ANNOTATE ENTITY|VIEW ... WITH | 为CDS实体定义CDS元数据扩展 | 
| VARIANT | 将CDS元数据扩展与CDS变式连接起来 | 
| PARAMETERS | 扩展CDS实体输入参数的注释 | 
◾DCL(Data Control Language,即数据控制语言)
• CDS角色-CDS Roles
 关键词及补充说明:
| Language Element | Meaning | 
| DEFINE ROLE | 定义CDS角色 | 
| GRANT SELECT ON | 在CDS角色中定义访问规则 | 
| WHERE | CDS角色的条件访问规则中的WHERE子句 | 
| AND, OR, NOT | CDS角色的条件访问规则中的布尔运算符 | 
| 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 Element | Meaning | 
| DEFINE ACCESSPOLICY | 定义CDS访问策略 | 
| DEFINE PFCG_MAPPING ... BETWEEN ... AND ... USING ... | 在访问策略中定义PFCG映射 |