中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

發布時間:2021-12-17 17:10:34 來源:億速云 閱讀:247 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

小編做SAP CRM Fiori應用開發時,在學習JavaScript時,讀過這本書:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

書中使用這種語法圖講解JavaScript的語法:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

其實ABAP幫助文檔里也存在類似的語法圖,只是藏在一個不起眼的角落,不為大家所熟知:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

以關鍵字APPEND為例,查看其語法圖:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

單擊超鏈接,語法圖就展示出來了,我覺得比幫助文檔里的文字描述直觀得多:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

點擊問號,可以查看圖里每個組成部分的詳細說明:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

我們有時候發現編寫的ABAP代碼,運行時不能按照自己的期望工作,往往是因為對ABAP幫助文檔里描述的ABAP關鍵字的功能理解得似是而非。如果你閱讀有的關鍵字幫助文檔時,感到晦澀難懂時,不妨換個角度,看一看它的語法圖,說不定能夠豁然開朗。

Jerry之前學習過SAP Commerce,在搭建開發環境執行ant all命令行進行項目構建時,發現會自動生成大量的.java文件。我的同事告訴我,這些Java文件的內容,是基于一個叫做Velocity的Java模板引擎生成的。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

這些位于Hybris安裝包內,以.vm結尾的文件,即Velocity的模板文件:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

打開這些模板文件,發現由下圖藍色區域所示的靜態內容和紅色區域所示的變量組成。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

在基于這些模板文件生成Java文件時,以$開頭的變量會被運行時計算出的實際值替換,例如$currentDateTime被替換成實際執行ant all命令行構建項目的時間戳。

一個基于上圖模板文件生成的Java文件的例子:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

那么ABAP里有沒有類似Java Velocity這種模板引擎呢?

和JavaScript一樣,ABAP里也有字符串模板(String Template)的概念:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

ABAP字符串模板定義在兩根豎線之內,如上圖第14行代碼所示。字符串模板里包含靜態的字符串文本和ABAP變量名。在運行時,這些充當占位符的ABAP變量會被其實際包含的值所取代。

下圖是JavaScript里的字符串模板的一個例子,只不過分隔符從ABAP的豎線換成了單引號:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

使用ABAP的字符串模板,我們同樣可以實現類似Java Velocity動態生成代碼的需求。Jerry之前的文章  淺談Java和SAP ABAP的靜態代理和動態代理,以及ABAP面向切面編程的嘗試 曾經介紹過。

將需要動態創建的ABAP類的源代碼用字符串模板拼湊好,存儲到內表lt_source中,然后調用關鍵字GENERATE SUBROUTINE POOL,創建生命周期只存在于當前會話期間內的臨時ABAP類。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

如果想生成全局ABAP類,即生成之后能夠持久化在ABAP服務器上,并且能夠通過SE24和SE80打開,則將拼湊好的包含ABAP類實現源代碼的內表傳給ABAP類的創建API,即函數SEO_CLASS_CREATE_COMPLETE.

下圖代碼根據內表mt_sourcecode里存儲的內容,在$TMP包下創建了一個新的ABAP類。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

以上就是ABAP最常用的兩種自動生成代碼的方式。

其實還有第三種方式,應用在SAP一些框架比如BRFplus自動生成ABAP類的場景里:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

可以通過關鍵字ABAP CODE COMPOSER找到幫助文檔。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

下面Jerry就通過一個實際的例子介紹如何使用ABAP Code Composer自動生成代碼。

和Java Velocity思路一樣,我們基于一個ABAP模板自動生成新的代碼。創建一個ABAP Include充當模板,取名ZSINGLETON:

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

模板代碼如下,定義了一個用單例設計模式(Singleton)實現的ABAP類的基本骨架。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

這個ABAP模板里以$開頭和$結尾的變量,作用和Java Velocity里的變量類似,充當占位符的角色,運行時被模板的調用者傳入的實際值替換。

而@if和@end, 和Velocity的#if與#end一樣,在根據模板生成實際代碼時,提供了簡單的條件分支處理和控制功能。

我的ZSINGLETON模板里總共定義了4個變量:

  • $I_PARAM-class$

  • $I_PARAM-global$

  • $I_PARAM-interface$

  • $I_PARAM-exception$

最后寫一個ABAP程序,使用Code Composer消費ZSINGLETON模板,將上述4個變量的實際值傳入,生成一個可以持久化保存的ABAP單例類,名稱為第18行代碼指定的ZCL_JERRY.

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

下圖是通過ABAP模板和ABAP Code Composer生成的ABAP類的源代碼,可以看到之前模板里通過$定義的變量,已經被調用模板生成ABAP類時傳入的實際值替換了。

如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer

關于如何分析SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平泉县| 名山县| 罗城| 南安市| 靖远县| 隆化县| 微山县| 加查县| 鹰潭市| 大竹县| 沈阳市| 东兴市| 土默特左旗| 炉霍县| 吴桥县| 长海县| 大丰市| 尤溪县| 珠海市| 邛崃市| 阿瓦提县| 高邮市| SHOW| 正安县| 广元市| 楚雄市| 成都市| 固始县| 浦城县| 顺义区| 马关县| 溧阳市| 沛县| 门头沟区| 荔浦县| 兴安盟| 揭阳市| 永年县| 自治县| 方山县| 方城县|