ABAP 面向对象
面向对象:将对象作为程序的基本单元,将元素和方法封装其中,以提高软件的重用性、灵活性和扩展性,采用封装、继承、多态等设计方法。
ABAP 中的类可以分为局部类和全局类;局部类-指在某个程序特定的过程或函数中可以访问的类,全局类-指在所有程序中都可以访问的类。
一、局部类的定义(程序中类的定义)。
1.类的声明及实现
CLASS Z_CLASS_NAME DEFINITION. "声明
ENDCLASS.
CLASS Z_CLASS_NAME IMPLEMENTATION. "实现
ENDCLASS.
2.类的成员(属性、方法、事件)
①声明可见性(参考 类中成员的可见性 )
②成员定义
CONSTANT : LV_BUKRS(4) TYPE C VALUE '1010'.
CLASS-DATA LV_YEAR TYPE I VALUE '365'.
DATA LV_DATUM TYPE D.
类方法需要在类的声明和实现两部分进行定义, 在类的声明部分说明方法的参数接口, 在实现部分则通过 ABAP 代码完成具体的功能.方法的声明关键字为 METHODS 和 CLASS-METHODS.
METHOD Z_MEYHOD_NAME.
ENDMETHOD.
3.类中成员的可见性
PUBLIC SECTION. "公有的,可被所有对象使用(在属性定义语句中增加 READ-ONLY 关键字, 则该属性不能被类外部读取但可被类的内部方法所修改.)
PROTECTED SECTION. "保护的,只能被本类及其子类访问
PRIVATE SECTION. "私有的,只能被本类访问
CLASS Z_CLASS_NAME DEFINITION. "声明
PUBLIC SECTION.
CLASS-DATA LV_YEAR TYPE I VALUE '365'.
DATA LV_DATUM TYPE D.
METHOD Z_MEYHOD_NAME
for event data_changed of cl_gui_alv_grid
importing er_data_changed e_onf4_before e_onf4_after e_ucomm,
handle_hotspot_click
for event hotspot_click of cl_gui_alv_grid
importing e_row_id e_column_id es_row_no .
ENDMETHOD.
PRIVATE SECTION.
ENDCLASS.
CLASS Z_CLASS_NAME IMPLEMENTATION. "实现
METHOD Z_MEYHOD_NAME.
perform handle_data_changed using er_data_changed.
* CALL METHOD grid1->refresh_table_display.
stbl-row = 'X'." 基于行的稳定刷新
stbl-col = 'X'." 基于列稳定刷新
call method grid1->refresh_table_display
exporting
is_stable = stbl.
stbl-row = 'X'." 基于行的稳定刷新
stbl-col = 'X'." 基于列稳定刷新
call method grid4->refresh_table_display
exporting
is_stable = stbl.
ENDMETHOD.
ENDCLASS.
二、全局类的定义。
1.全局类定义.
可以用 SE80 或 SE24 进入 Class Builder 进行创建.
SE24:

三、类使用
DATA Z_CLASS_NAME_OBJECT TYPE REF TO Z_CLASS_NAME001.
IF Z_CLASS_NAME_OBJECT IS INITIAL.
CREATE OBJECT OB_NAME01. “实例构造方法
CALL METHOD OB_NAME01->Z_MEYHOD_NAME.

浙公网安备 33010602011771号