SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

i042416發表於2020-01-05

我們在ABAP Development Tool裡編寫SAP CDS view,為檢視維護這些以@開頭的註解,同Java Spring裡廣泛應用的annotation一樣,都是一種為development object維護後設資料的方式。

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

如上圖所示,我維護了五個不同的註解,一旦儲存,這個cds view的原始碼被髮送到ABAP後臺,透過CL_DD_DDL_HANDLER解析,DDL此處是Data Definition Language的縮寫。

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

這個類的ANNOTATIONS欄位包含了一個內表M_ENTRIES,裡面的內容即代表五個被解析出來的註解。

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

cds view所有支援的annotation都在這個ABAP介面定義的常量裡了:

if_dd_ddl_annotations

比如下圖的if_dd_ddl_annotations=>AbapCatalog_sqlViewName就代表我在CDS view原始碼裡申明的註解:@AbapCatalog.sqlViewName: 'znaming'

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的? SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

而ABAP Development Tool裡採用文字方式編輯的ABAP CDS view,如何被ABAP後端解析的呢?透過這個CL_DD_DDL_HANDLER~GET_OBJDEF_FROM_SRC方法裡的第163行parse_cds解析。

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

這個方法是在kernel端實現的,能高效的把文字格式的CDS view原始碼解析成ABAP結構:

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?

如下圖所示:

SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的? SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的? SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的? SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2671995/,如需轉載,請註明出處,否則將追究法律責任。

相關文章