ABAP CCDEF, CCIMP, CCMAC, CCAU, CM00X這些東東是什麼鬼
本文是鼠年第二篇文章,也是汪子熙公眾號第201篇原創文章。
今天是鼠年大年初二,不知道昨天的大年初一,大家過得如何?
最近這段非常時期,像Jerry這類宅男,能夠理直氣壯地以“響應國家號召,不給國家和社會添亂”為理由宅在家裡。
為了降低對病毒的恐懼感,讓我們繼續學習,分散下對疾病的注意力。
我們新建一個ABAP類之後,完成程式碼編寫,第一次啟用時,會看到這些以類的名稱開頭,中間跟著一大段=符號,以五個字元結尾的物件出現在待啟用列表裡。它們是什麼鬼?
我們來動手研究一番。Jerry在2019豬年大年三十寫的文章 SAP GUI和Windows登錄檔 曾經提到Windows系統的登錄檔,而ABAP Netweaver也有屬於自己的登錄檔:TADIR和TRDIR. 無論在SE80或者是SE11事務碼裡建立的物件,在這兩張表裡都會留下一些痕跡。
建立一個最簡單的ABAP類,包含public,protected和private方法和屬性各一個,麻雀雖小,五臟俱全。
啟用之後,在登錄檔TRDIR里根據類的名字ZCL_ABAP_CLASS進行查詢,得到如下記錄:
由此可見,ABAP裡的類(Class), 技術上是透過若干可以透過SE38直接開啟的ABAP include程式組成:
對於上述TRDIR裡的記錄,我們可以逐一用SE38開啟,搞清楚它們到底代表什麼含義。
CCAU
這個AU的含義可以用ABAP Unit來幫助記憶。
SE38開啟include程式之後,自動進入下面這個介面,發現CCAU程式儲存的是這個類的單元測試程式碼。
CCDEF
DEF代表Definition(定義). SE38裡開啟ZCL_ABAP_CLASS================CCDEF,看到的是這個介面:
此處維護的是ABAP類的區域性定義,包括類的區域性類,區域性介面,區域性型別定義等等。
也可以先進入SE24,然後點選Local Definitions/Implementations開啟。
CCIMP
IMP代表implementation(實現). SE38開啟ZCL_ABAP_CLASS================CCIMP, 能看到區域性類的實現。
CI
類的私有區域定義。
CO
類的protected區域定義。
CU
類的公有區域定義。
CMXXX
CM代表Class Method,XXX是類的方法序號,基於16進位制,從1開始遞增,例如CM001儲存類的第一個方法的實現程式碼,CM002代表第二個方法,以此類推。
例如,SE38裡開啟ZCL_ABAP_CLASS================CM001,看到的是第一個私有方法的原始碼:
ZCL_ABAP_CLASS================CM002:
ZCL_ABAP_CLASS================CM003:
CCMAC
MAC是Macro(宏)的縮寫,儲存類的宏定義。
如何用程式碼的方式獲得一個類的這些不同的ABAP include程式名稱呢?
使用ABAP工具類CL_OO_CLASSNAME_SERVICE:
比如我想知道CL_CRM_BOL_CORE這個類所有方法對應的include名稱,那麼在工具類的GET_ALL_METHOD_INCLUDES打個斷點,
然後SE24裡開啟CL_CRM_BOL_CORE,點選Source Code Based:
斷點立即觸發,從呼叫棧能看出,為了在Source Code模式下顯示出ABAP類的完整程式碼,需要把散落儲存在各個include程式裡的程式碼讀取出來。
類方法和其include程式名稱的對應關係一目瞭然。
在ABAP Type Group SEOP裡,儲存了本文介紹的以CC開頭的include型別的常量定義。
相信閱讀了本文之後,下次大家在各個場合裡遇到以CCXXX結尾的這些ABAP include,不會再覺得一頭霧水了。感謝閱讀,祝大家新年快樂。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2674321/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 這是什麼東西呢?
- 聽說node.js很火?那麼這skr什麼鬼東西?Node.js
- ftp是什麼,ftp是什麼東西?FTP
- 東方過氣是什麼梗?為什麼粉絲戲稱東方過氣?過氣東方是什麼?
- 來聊聊,這個Java到底是什麼東西?Java
- 框架是個什麼東西?框架
- UILayer是什麼鬼UI
- pyc是個什麼鬼?
- cross-env 是什麼鬼ROS
- where 1=1 是什麼鬼?
- linux 運維 命令 + 運維需要掌握些什麼東西Linux運維
- 京東CLO隆雨離職是怎麼回事?京東CLO隆雨離職原因是什麼
- 什麼是南北向流量和東西向流量?
- “新怪談”到底是個什麼東西?
- Petya到底是個什麼鬼
- [譯] JavaScript:回撥是什麼鬼?JavaScript
- 老東家用 Laravel 新東家用 yii 有了 Laravel 請問 yii 這樣的垃圾框架存在的意義是什麼呢?Laravel框架
- 這是什麼這是什麼
- Spark RPC 到底是個什麼鬼?SparkRPC
- FastThreadLocal 是什麼鬼?吊打 ThreadLocal 的存在!!ASTthread
- Django-rest-framework 是個什麼鬼?DjangoRESTFramework
- 節流函式throttle是什麼鬼?函式
- 深度學習記錄(1)metricLogger是個什麼東西?深度學習
- 布隆過濾器是什麼鬼?有什麼用?過濾器
- 為什麼要“東數西算”?
- python是什麼?這些你都瞭解了嗎?Python
- Vue 3 的 setup語法糖到底是什麼東西?Vue
- 程式、執行緒、協程到底是個什麼東西?執行緒
- 談談NAT:什麼?全球IP和私有IP是什麼鬼?
- 什麼是 SAP ABAP 的 include structureStruct
- 回到老東家需要注意什麼?
- Spring 5 core 中的 @NonNull 是個什麼鬼?!SpringNull
- Python 中的 sys.argv 是個什麼鬼?Python
- 阿里雲釋出的數加是什麼鬼阿里
- 報文、幀、分組、段、資料包,這些術語是同一個東西嗎?
- 京東二面,Redis為什麼那麼快?Redis
- 什麼是 SAP ABAP 的 SYSTEM_EXIT
- 為什麼說區塊鏈也不是什麼好東西?區塊鏈