BC401 - ABAP Objects 快速参考

ABAP Objects 快速参考

#dashboard #abap-objects

类定义 → 类属性与方法

语法 说明
CLASS <name> DEFINITION.ENDCLASS. 类定义部分
CLASS <name> IMPLEMENTATION.ENDCLASS. 类实现部分
PUBLIC SECTION. 公有可见性
PROTECTED SECTION. 受保护可见性
PRIVATE SECTION. 私有可见性

属性类型 → 类属性与方法

语法 类型 说明
DATA: attr TYPE type. 实例属性 每个对象独立
CLASS-DATA: attr TYPE type. 静态属性 所有对象共享
CONSTANTS: c TYPE type VALUE val. 常量 不可变
DATA attr TYPE type READ-ONLY. 只读属性 仅在PUBLIC SECTION中有效

方法定义 → 构造器与方法调用

语法 说明
METHODS: meth IMPORTING ... EXPORTING ... CHANGING ... RETURNING ... RAISING ... 实例方法
CLASS-METHODS: meth ... 静态方法
CALL METHOD ref->meth. 显式方法调用
ref->meth( ). 简写调用
ref->meth( EXPORTING i = v ). 带参数调用
DATA(result) = ref->func_meth( ). 函数式方法调用

对象创建与删除 → 对象与引用

语法 说明
DATA: ref TYPE REF TO <class>. 声明引用变量
CREATE OBJECT ref. 实例化对象
ref->attr 通过引用访问属性
ref->meth( ). 通过引用调用方法

构造器 → 构造器与方法调用

类型 语法 说明
实例构造器 METHODS: constructor IMPORTING ... 每个类只有一个
静态构造器 CLASS-METHODS: class_constructor. 自动调用,无参数

继承 → 继承基础

语法 说明
CLASS subclass DEFINITION INHERITING FROM superclass. 定义继承关系
METHODS: meth REDEFINITION. 重定义方法
super->meth( ). 调用父类方法
me->attr 自引用

类型转换 → 类型转换与多态

类型 语法 说明
Up-cast ( widening ) ref_super = ref_sub. 隐式,总是安全
Down-cast ( narrowing ) ref_sub ?= ref_super. 显式,可能运行时错误
Down-cast (安全) ref_sub = CAST #(<class>( ref_super )). 使用CAST操作符

接口 → 接口定义与实现

语法 说明
INTERFACE <name>.ENDINTERFACE. 定义接口
INTERFACES <name>. (在PUBLIC SECTION中) 实现接口
ref->intf~meth( ). 通过接口解析操作符访问
ALIASES alias FOR intf~meth. 定义别名

事件 → ABAP事件

语法 说明
EVENTS: evt EXPORTING VALUE(e) TYPE t. 定义实例事件
CLASS-EVENTS: evt ... 定义静态事件
RAISE EVENT evt EXPORTING e = val. 触发事件
METHODS: handler FOR EVENT evt OF class IMPORTING e. 定义事件处理器
SET HANDLER ref->handler FOR ref_trigger. 注册事件处理
SET HANDLER ref->handler FOR ALL INSTANCES. 注册到所有实例

异常处理 → 异常处理概念

语法 说明
RAISE EXCEPTION TYPE cx_class EXPORTING ... 抛出异常
TRY. ... CATCH cx_class INTO ref. ... ENDTRY. 捕获异常
CLEANUP. ... 清理块
ref->get_text( ). 获取异常文本

异常类层次 → 异常处理概念

1
2
3
4
5
6
CX_ROOT
├── CX_NO_CHECK (不可声明检查)
├── CX_STATIC_CHECK (静态检查,默认)
└── CX_DYNAMIC_CHECK (动态检查)
└── CX_SY_ARITHMETIC_ERROR
└── CX_SY_ARITHMETIC_OVERFLOW

RTTS → 运行时类型服务

用途
CL_ABAP_TYPEDESCR 根描述类
CL_ABAP_STRUCTDESCR 结构类型描述
CL_ABAP_CLASSDESCR 类类型描述
cl_abap_typedescr=>describe_by_data( data ) 获取数据类型描述
cl_abap_typedescr=>describe_by_object_ref( ref ) 获取对象类型描述

关键公式/模式

模式 公式/规则
实例属性 vs 静态属性 → 类属性与方法 DATA = 每实例, CLASS-DATA = 每类
Up-cast 规则 → 类型转换与多态 子类引用 → 父类引用,隐式安全
Down-cast 规则 → 类型转换与多态 父类引用 → 子类引用,需要 ?=
构造器继承 → 继承基础 构造器不被继承,子类必须调用 super->constructor( )
事件参数 → ABAP事件 事件只能有 EXPORTING 参数(值传递)
异常传播 → 异常处理进阶 方法签名中 RAISING 声明可传播的异常