尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

126、本地类与全局类(SE24)

126、本地类与全局类(SE24) 126、本地类与全局类(SE24)前阵子调一个批量接口,程序跑到一半直接dump,报错信息说方法GET_DETAIL未定义。我打开SE24仔细检查全局类ZCL_UTIL,方法明明就在那里,参数也没问题。回到代码里找调用点,发现程序顶部居然也写了一个CLASS ZCL_UTIL DEFINITION,里面连GET_DETAIL的影子都没有。这个同名本地类是同事为了快速验一段测试代码临时加的,忘了删。程序内所有ZCL_UTIL的引用,都解析到了这个本地类上,全局类被活生生“顶掉”了。那一瞬间我就知道,必须把本地类和全局类的区别写一篇笔记。本地类,英文叫Local Class,是直接写在ABAP程序内部的CLASS…ENDCLASS。你打开SE38或SE80,进入程序编辑器,在代码里敲进去的类就是本地类。它的作用域仅限于你写的这个程序,除非程序里用到了它,否则它不会在ABAP运行环境里留下任何痕迹。全局类,英文叫Global Class,是通过事务代码SE24创建的,属于ABAP类库(Class Pool)中的独立类对象。SE24是ABAP类构建器,你在那里建出来的类,所有程序都可以直接引用。打个比方,本地类是你自己工位上画的流程图,只有你自己能看懂;全局类是挂到公司公共文档库里的规范文档,全公司都能访问。这个比喻不一定严谨,但方向是对的。写本地类很简单,直接在程序中放两段代码,一段是定义部分,一段是实现部分。比如:CLASS lcl_sale_helper DEFINITION.PUBLIC SECTION.METHODS calc_discount IMPORTING iv_price TYPE iRETURNING VA
返回列表