SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

Posted sap-jerry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?相关的知识,希望对你有一定的参考价值。

我们在ABAP Development Tool里编写SAP CDS view,为视图维护这些以@开头的注解,同Java Spring里广泛应用的annotation一样,都是一种为development object维护元数据的方式。

技术图片

如上图所示,我维护了五个不同的注解,一旦保存,这个cds view的源代码被发送到ABAP后台,通过CL_DD_DDL_HANDLER解析,DDL此处是Data Definition Language的缩写。

技术图片

这个类的ANNOTATIONS字段包含了一个内表M_ENTRIES,里面的内容即代表五个被解析出来的注解。

技术图片

cds view所有支持的annotation都在这个ABAP接口定义的常量里了:

if_dd_ddl_annotations

比如下图的if_dd_ddl_annotations=>AbapCatalog_sqlViewName就代表我在CDS view源代码里申明的注解:@AbapCatalog.sqlViewName: ‘znaming‘

技术图片
技术图片

而ABAP Development Tool里采用文本方式编辑的ABAP CDS view,如何被ABAP后端解析的呢?通过这个CL_DD_DDL_HANDLER~GET_OBJDEF_FROM_SRC方法里的第163行parse_cds解析。

技术图片

这个方法是在kernel端实现的,能高效的把文本格式的CDS view源代码解析成ABAP结构:

技术图片

如下图所示:

技术图片
技术图片
技术图片
技术图片

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
技术图片

以上是关于SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?的主要内容,如果未能解决你的问题,请参考以下文章

SAP ABAP CDS 查看/DCL 检查授权

SAP ABAP CDS view 里 INNER JOIN 和 Association 的区别

SAP ABAP CDS view 里 INNER JOIN 和 Association 的区别

SAP NetWeaver ABAP 服务器的数据库表database table暴露为CDS View

SAP NetWeaver ABAP 服务器的数据库表database table暴露为CDS View

SAP NetWeaver ABAP 服务器的数据库表database table暴露为CDS View