您的位置:首页 > 其它

ABAP对象:方法&构造方法

2015-11-01 22:14 316 查看
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.                                                "meth3
ENDCLASS.                    "callobj IMPLEMENTATION
DATA: 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.                    "CONSTRUCTOR
ENDCLASS.                    "CALLDEF IMPLEMENTATION
DATA: calldef TYPE REF TO calldef. " 声明对象
START-OF-SELECTION.
CREATE OBJECT calldef.  " 实例化对象(同时调用构造方法)


注:如有疏漏之处,还请不吝赐教!

参考资料:

(1).《工程师突击-SAP ABAP实用程序开发攻略》;机械工业出版社;唐骏华 编著。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: