ABAP类的方法(转载)

简介:

方法参数传递: 
REPORT z_mehtod_para.
*---------------------------------------------------------------------*
*        CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION.
   PUBLIC SECTION.
     METHODS: accelerate IMPORTING rate TYPE i,
              show_speed.
   PRIVATE SECTION.
     DATA speed TYPE i VALUE 0.
ENDCLASS.
*---------------------------------------------------------------------*
*        CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
   METHOD accelerate.
     speed = speed + rate.
   ENDMETHOD.
   METHOD show_speed.
     WRITE: / 'Speed:',speed.
   ENDMETHOD.
ENDCLASS.

DATA o_vehicle TYPE REF TO vehicle.

START-OF-SELECTION.
   CREATE OBJECT o_vehicle.
   CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
   CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
   CALL METHOD o_vehicle->show_speed.
该示例输出如下: 
     4
方法还可以进行动态调用,即通过变量对方法进行指定,例如下列语句
   meth = acclerate.
   call method o_vehicle->(meth).

函数方法: 
REPORT z_funtional_method.

*---------------------------------------------------------------------*
*        CLASS circle DEFINITION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS circle DEFINITION.
   PUBLIC SECTION.
     METHODS get_area IMPORTING value(i_radius) TYPE i
                      RETURNING value(r_size)    TYPE f.
   PRIVATE SECTION.
     CONSTANTS pi TYPE f VALUE '3.14159265'.
ENDCLASS.
*---------------------------------------------------------------------*
*        CLASS circle IMPLEMENTATION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS circle IMPLEMENTATION.
   METHOD get_area.
     r_size = i_radius ** 2 * pi.
   ENDMETHOD.
ENDCLASS.

PARAMETERS radius TYPE i.
DATA: o_circle TYPE REF TO circle,
       area TYPE f.

START-OF-SELECTION.
   CREATE OBJECT o_circle.
   CALL METHOD o_circle->get_area
               EXPORTING i_radius = radius
               RECEIVING r_size = area.
   WRITE: / area.
   area = o_circle->get_area( radius ).
   WRITE: / area.

构造方法和析构方法
1. 构造方法
    构造方法是运行时环境自动调用的一种方法,用于为对象设定一个初始化状态,不能在程序运行过程中由程序代码调用.与其他方法类似构造方法也存在静态和实例两种形式.构造方法不一定需要在类中定

义,系统通常会自动生成一个默认的构造方法,将对象状态设置为初始值.
构造方法中不包含任何形式的输出参数,其功能只是定义对象状态,而不是对其进行改变.构造方法在create object语句中被调用,因此根据实例构造方法的定义,该语句本身也可以包含输出参数exporting和

返回值exception选项.如果在对象创建过程中出现异常,则对象被删除,引用变量设为初始值.
     类构造方法属于静态方法,只能在程序中被调用一次,即第一次使用该类时调用,该方法也必须在公有部分声明,其名称必须为class_constructor.
     class-methods class_constructor.
     类构造方法不包含接口,而且在其中只能访问类的静态属性.
构造方法: 
REPORT z_method_constructor.
*---------------------------------------------------------------------*
*        CLASS vehicle DEFINITION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS vehicle DEFINITION.
   PUBLIC SECTION.
     METHODS: accelerate IMPORTING rate TYPE i,
              constructor IMPORTING i_speed TYPE i,
              show_speed.
   PRIVATE SECTION.
     DATA speed TYPE i VALUE 0.
ENDCLASS.
*---------------------------------------------------------------------*
*        CLASS vehicle IMPLEMENTATION
*---------------------------------------------------------------------*
*        ........                                                       *
*---------------------------------------------------------------------*
CLASS vehicle IMPLEMENTATION.
   METHOD accelerate.
     speed = speed + rate.
   ENDMETHOD.
   METHOD show_speed.
     WRITE speed.
   ENDMETHOD.
   METHOD constructor.
     speed = i_speed.
   ENDMETHOD.
ENDCLASS.

DATA o_vehicle TYPE REF TO vehicle.

START-OF-SELECTION.
   CREATE OBJECT o_vehicle EXPORTING i_speed = 4.
   CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
   CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
   CALL METHOD o_vehicle->show_speed.
该示例输出如下: 
      8
在对象创建过程中,通过构造方法传递了一个速度初始值作为其初始状态.
2. 析构方法
    在某些面向对象语言中还存在析构方法的概念,该方法在对象删除过程中被调用,目前ABAP对象中尚未提供该方法的实现形式.

专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862

本文转自沧海-重庆博客园博客,原文链接:http://www.cnblogs.com/omygod/archive/2007/12/18/1005123.html,如需转载请自行联系原作者
目录
相关文章
[原]解除ABAP程序编辑锁的方法
关键字:Unlock ABAP Program editor lock 方法1:在已有SE38创建修改权限的情况下 REPORT ZUNLOCK.
1117 0
|
6月前
|
程序员
开发语言漫谈-ABAP
ABAP是SAP公司专门用于SAP软件环境的专门语言
|
SQL 设计模式 前端开发
【置顶】SAP ABAP开发实战——从入门到精通系列目录
本文章为SAP ABAP开发实战——从入门到精通系列的目录以及关于该教程的后续写作计划表
1567 0
【置顶】SAP ABAP开发实战——从入门到精通系列目录
|
BI
SAP ABAP在线预览文档对象的开发实现
应用场景:有些定制化开发(报表/功能增强等)完成之后,客户需要将其操作手册或者相关文档放在某个报表的初始画面,供实际操作者在线查阅,当然这个功能也同样类似于模板的下载,这里就以在线预览(直接打开)为例进行说明。
225 0
|
前端开发 JavaScript 数据库
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用(二)
Restful ABAP Programming 编程模式是 ABAP 这门编程语言在不断向前进化的过程中,诞生的一门新的编程模型,简称为RAP模型。
156 0
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用(二)
|
程序员 BI
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
也谈SAP业务顾问如何避免被ABAP开发顾问怒打
abap开发function module时使用tables传递参数报错过时的解决方法
如下图,我写了一个Function Module我要在tables中添加一个参数TABLES参数已过时不管怎么点击保存按钮,一直报错,怎么办呢?不管是不是过时,狂点回车,就保存了
1742 0
|
小程序
ABAP开发基础知识:11)子程序的建立与调用
ABAP子程序(Subrouting)是包含在程序中的一段具有一定功能的代码,能够将某个功能作为一个小程序包含在主程序中,以方便程序分析及阅读。特别是一此程序中多次用到的功能,可以简化代码,增加程序的可读性且便于维护。
1486 0
|
索引 机器学习/深度学习
ABAP开发基础知识:12)ABAP宏的应用
宏(Macros)是一段独立的代码,能实现数据的运算与输出,功能与子程序类似,主要应用于同一程序中某些重复的运算,以简化代码,其定义语法如下:        DEFINE INCREMENT.    "INCREMENT为自定义宏的名称。
924 0