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.

posted @ 2018-08-31 18:05  师逸杰  阅读(1194)  评论(0)    收藏  举报