前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼

ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼

作者头像
Jerry Wang
发布2020-02-14 15:02:31
4270
发布2020-02-14 15:02:31
举报

本文是鼠年第二篇文章,也是汪子熙公众号第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,不会再觉得一头雾水了。感谢阅读,祝大家新年快乐。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档