声明类:CLASS……ENDCLASS.
声明实例成员:DATA或METHOD;访问使用符号“->”
声明静态成员:CLASS-DATA或CLASS-METHOD;访问使用符号“=>”
声明实例方法:METHODS;访问使用符号“->”
声明静态方法:CLASS-METHODS;访问使用符号“=>”
实现(实例/静态)方法:METHOD……ENDMETHOD.
public section:公共部分,所定义成员可以被所有对象使用
protected section:保护部分,所定义类成员只能被类及其派生类中的方法使用
private section:私有部分,所定义成员只能被类本身的方法使用
注:类中不允许定义有head line 的内表
程序示例:
REPORT ztest2015001.
*----------------------------------------------------------------------*
* CLASS callobj DEFINITION
*----------------------------------------------------------------------*
* 声明类callobj
*----------------------------------------------------------------------*
CLASS callobj DEFINITION.
PUBLIC SECTION. " 定义公共类成员
CLASS-DATA: para(30) TYPE c VALUE 'The static class paramet!'.
DATA: count TYPE i.
METHODS: showdata1,
showdata2.
PRIVATE SECTION. " 定义私有成员,所定义的变量和方法只能在该类内部使用
METHODS: showdata3.
ENDCLASS. "callobj DEFINITION
*----------------------------------------------------------------------*
* CLASS callobj IMPLEMENTATION
*----------------------------------------------------------------------*
* 实现类方法
*----------------------------------------------------------------------*
CLASS callobj IMPLEMENTATION.
METHOD showdata1.
WRITE:/ 'Hello SAP!'.
ENDMETHOD. "showdata1
METHOD showdata2.
count = 1.
WRITE:/ count.
CALL METHOD showdata3.
ENDMETHOD. "showdata2
METHOD showdata3.
WRITE:/ 'The Private Method!'.
ENDMETHOD. "showdata3
ENDCLASS. "callobj IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS callobj2 DEFINITION
*----------------------------------------------------------------------*
* 声明类callobj2
*----------------------------------------------------------------------*
CLASS callobj2 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: call_static_class.
ENDCLASS. "callobj2 DEFINITION
*----------------------------------------------------------------------*
* CLASS callobj2 IMPLEMENTATION
*----------------------------------------------------------------------*
* 实现类方法
*----------------------------------------------------------------------*
CLASS callobj2 IMPLEMENTATION.
METHOD call_static_class.
WRITE: / callobj=>para.
ENDMETHOD. "call_static_class
ENDCLASS. "callobj2 IMPLEMENTATION
DATA: obj TYPE REF TO callobj, " 声明对象
obj2 TYPE REF TO callobj2.
DATA: methname TYPE string.
START-OF-SELECTION.
CREATE OBJECT obj. " 实例化对象
CREATE OBJECT obj2.
methname = 'SHOWDATA2'.
CALL METHOD: obj->showdata1, " 通过对象调用类方法
obj->(methname)." 通过变量,动态调用类方法
CALL METHOD: callobj2=>call_static_class, " 通过类调用静态类方法
obj2->call_static_class. " 通过对象调用静态方法
注:如有疏漏之处,还请不吝赐教!
参考资料:
(1).《工程师突击-SAP ABAP实用程序开发攻略》;机械工业出版社;唐骏华 编著。