abap alv新增行数据_SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

c4aebca522a25232923e148ff0d44df9.png

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

c19413ee2fad7f07cff8028406ba6d02.png

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

af1c062a0544603efe68a12769c3ce44.png

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

7a8e7b876e21b85450b039f2a1d9a2f4.png

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

if_dd_ddl_annotations

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

1f7113064f6278484ad4aa2824276310.png

6c20f761f89c9551121fb723c69b7b58.png

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

c0b97603246d9ba2abe07070ef7a4959.png

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

d517bc8de6b112c01cd550e98afdd58d.png

如下图所示:

317018cca0088045ad681ddcc1224836.png

9f226b9077f8e0a891853e79b3d3d322.png

f1cdf8d7aca5da8d72ff82659d4c7246.png

5da47fc8abb166df891e488126d6a1f5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值