原文:
https://sapyard.com/abap-for-sap-hana-part-xxviii-6-cds-related-tools-in-adt/
https://sapyard.com/cds-part-13-key-definition-in-cds-views/
https://sapyard.com/cds-part-14-abap-annotations-for-translatable-texts-in-cds-views/尊重版权,仅供个人学习
ADT中6个CDS相关实用工具
- 从SQL View导航到相应的DDL Source
还有一种方法是从字典表DDLDEPENDENCY
,很简单
- 显示SQL创建语句
- 查看当前View相关的Annotation
Entity级别:
字段级别:
- 图形编辑器(没有找到很正常,这个跟ADT版本有关)
- 关联分析器,这个是非常有用的一个工具,好评
- 数据预览器(这个不用说,使用频率太高)
CDS View中的主键定义
解答四个问题:
- 在CDS中使用KEY的实际目的是什么?
- KEY对CDS的影响是什么?
- 它会影响CDS View通过Open SQL获取的数据吗?
@AbapCatalog.preservekey
是怎么用的?
KEY就是当前CDS View的主键,注意语法KEY字段要在最前,并且不能中间夹杂普通字段。
它会有两个影响:
- 在SELECT语句中会默认按主键顺序
- 隐式的访问控制
如果没有指定注释@AbapCatalog.preservekey
或指定值为FALSE, SQL数据库视图将忽略CDS实体中使用key语句定义的key字段。
下面例子更好的说明这个Annotation的用法
这里没有指定key也没有用annotation AbapCatalog.preservekey
,所以默认它会根据关联的表的主键添加主键。
接下来,显式的声明KEY字段,为了区别,这里加了一个字段scarr.carrname
可以看到它的SQL view中主键并没有变化
如果加上annotation并且指定值为true的话
这时就可以以自定义的KEY字段做为主键了
利用Annotation对CDS View的字段进行翻译
ABAP Annotation在定义CDS对象的技术特性和语义属性时扮演着非常重要的角色。当ABAP运行时环境激活时,会对每个CDS对象进行评估解析。
这里主要介绍的是annotation EndUserText
,它用于为CDS对象定义可翻译的语义文本。
常用的属性的两个:
- EndUserText.label ,可以用在entity level(每一个CDS view都有这个,它会生成为SQL View的描述),也可以用在字段element level,最长不超过60个字符。
- EndUserText.quickinfo,只能用在字段element level,它可以是任意长度。
实例:
Annotation的翻译
Annotation的文本是存在一个有语言字段主键的表里的。
翻译它和常规ABAP对象的翻译一样也是用TCODE: SE63
传输翻译也是用TCODE: SLXT
这个不再赘述
动态访问Annotation文本
使用全局类CL_DD_DDL_ANNOTATION_SERVICE
的方法可以读取语言输入参数指定的文本。
实例:
注意一点是:
如果系统找不到指定语言的文本,则自动使用AS ABAP中的第二语言。