函数方法

REPORT  Z_FUNCTIONAL_METHOD.
CLASS circle DEFINITION.
  PUBLIC SECTION.
    METHODs get_area IMPORTING VALUE(i_radiustype i             value指定参数传递形式默认是引用传递
                     RETURNING VALUE(r_sizeTYPE f.                         returning可以替代importing和exporting,这边替代的是exporting

  PRIVATE SECTION.
    CONSTANTS pi type VALUE '3.1415926'.
endclass.

CLASS circle IMPLEMENTATION.
  METHOD get_area.
    r_size i_radius ** * 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.                      使用returning这边就应该用receiving关键字定义接受.
  WRITE: / area.
  area o_circle->get_arearadius ).          这种方法是函数方法,可以直接赋值,调用方法得到结果后直接赋给area变量
  WRITE: / area.

第二次看:

如果方法中定义了返回参数,可以这样调用

INUMBS = o_vehicle->accelerate( NUMB = 1 ).
numb是传入参数。
INUMBS相当于返回参数,当然只返回一个参数的时候才可以这样使用。
如果不是这样写的话就是原本的方式 如下:

  CALL METHOD o_vehicle->accelerate
    EXPORTING
      numb        = 1                   "传入值,可以是变量,如果是定义的时候关键字是Importing不是EXPORTING
    receiving                           
      rnumb       = INUMBS              "返回值,如果是方法定义的时候这边就是returning关键字而不是receiving 
    EXCEPTIONS
      MESSAGEERRO = 1
      others      = 2
          .
  IF sy-subrc <> 0.
   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
原文地址:https://www.cnblogs.com/caizjian/p/3237301.html