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映射
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混沌破晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值