ABAP对象:方法&构造方法

来源:互联网 发布:淘宝旺旺名可以修改吗 编辑:程序博客网 时间:2024/06/03 20:16

1. 方法

方法声明关键字: METHODS 或CLASS-METHODS
方法实现代码:     METHOD……ENDMETHOD


基本语法:

METHOD <meth>
  IMPORTING  ..<i> TYPE <type> ...
  EXPORTING  ..<e> TYPE <type> ...
  CHANGING   ..<c> TYPE <type> ...
  EXCEPTIONS ..<x> ...


IMPORTING/EXPORTING:数据输入/输出
CHANGING:可同时作为输入、输出接口
EXCEPTIONS:返回执行中所出现的错误

例:


*----------------------------------------------------------------------**       CLASS callobj DEFINITION*----------------------------------------------------------------------**       声明类*----------------------------------------------------------------------*CLASS callobj DEFINITION.  PUBLIC SECTION.    TYPES: BEGIN OF dt_city,             name TYPE char10,           END OF dt_city.    TYPES: dt_it_city TYPE TABLE OF dt_city.    DATA: ls_city TYPE dt_city.    METHODS: meth1 IMPORTING value(ivt_city) TYPE dt_it_city. " 输入参数,內表作为参数    METHODS: meth2 EXPORTING value(evs_city) TYPE dt_city.    " 输出参数,结构体作为参数    METHODS: meth3 CHANGING  value(cv_num) TYPE i.ENDCLASS.                    "callobj DEFINITION*----------------------------------------------------------------------**       CLASS callobj IMPLEMENTATION*----------------------------------------------------------------------**       实现类方法*----------------------------------------------------------------------*CLASS callobj IMPLEMENTATION.  METHOD meth1.    WRITE: '方法一:'.    LOOP AT ivt_city INTO ls_city.      WRITE: / ls_city-name.    ENDLOOP.  ENDMETHOD.                                                "meth1  METHOD meth2.    evs_city = '济南'.  ENDMETHOD.                                                "meth2  METHOD meth3.    cv_num = cv_num + 20.  ENDMETHOD.                                                "meth3ENDCLASS.                    "callobj IMPLEMENTATIONDATA: obj TYPE REF TO callobj.DATA: num TYPE i.DATA: g_struc TYPE callobj=>dt_city. " 参考类变量定义相关结构体及内表DATA: g_tab   TYPE callobj=>dt_it_city.START-OF-SELECTION.  CREATE OBJECT obj.  g_struc-name = '北京'.  APPEND g_struc TO g_tab.  g_struc-name = '上海'.  APPEND g_struc TO g_tab.  g_struc-name = '广州'.  APPEND g_struc TO g_tab.  CALL METHOD: obj->meth1 EXPORTING ivt_city = g_tab,   " g_tab值赋给ivt_city               obj->meth2 IMPORTING evs_city = g_struc. " evs_city值输出到g_struc  WRITE:/ '方法二:',/ g_struc-name.  WRITE:/ '方法三:'.  WRITE: / num.  CALL METHOD: obj->meth3 CHANGING cv_num = num.  WRITE: / num.
2.构造方法

构造方法没有返回数据类型,功能是在实例化类时完成一些初始化工作,在每一次对象初始化时被自动调用。

声明语句:Methods Constructor

例:

*----------------------------------------------------------------------**       CLASS CALLDEF DEFINITION*----------------------------------------------------------------------**       声明类*----------------------------------------------------------------------*CLASS calldef DEFINITION.  PUBLIC SECTION.    METHODS constructor. " 声明构造方法  PRIVATE SECTION.    DATA: outpara TYPE string.ENDCLASS.                    "CALLDEF DEFINITION*----------------------------------------------------------------------**       CLASS CALLDEF IMPLEMENTATION*----------------------------------------------------------------------**       实现类方法*----------------------------------------------------------------------*CLASS calldef IMPLEMENTATION.  METHOD constructor.  " 实现构造方法(进行初始化)    outpara = 'Execute SAP Construct'.    WRITE: outpara.  ENDMETHOD.                    "CONSTRUCTORENDCLASS.                    "CALLDEF IMPLEMENTATIONDATA: calldef TYPE REF TO calldef. " 声明对象START-OF-SELECTION.  CREATE OBJECT calldef.  " 实例化对象(同时调用构造方法)


  注:如有疏漏之处,还请不吝赐教!
参考资料:
(1).《工程师突击-SAP ABAP实用程序开发攻略》;机械工业出版社;唐骏华 编著。


0 0