类方法的声明及属性

*----------------------------------------------------------------------*
*       CLASS callobj DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS callobj DEFINITION.
  PUBLIC SECTION.
    DATA:BEGIN OF l_struc,"定义可公用的结构体、内表及方法
         name(10TYPE c,
      END OF l_struc.

*****定义内表语法不能用OCCURS n CLASS所定义的内表不支持Headr line
    DATA:ltab LIKE TABLE OF l_struc INITIAL SIZE 0.

    METHODS:set IMPORTING value(set_valueLIKE ltab,"定义传入内表,自定义类
                                                     "方法名"SET"
            get EXPORTING value(get_valueTYPE i,"自定义类方法名“GET”
            chg CHANGING value(chg_valueTYPE i."自定义类方法名“CHC”
ENDCLASS.                    "callobj DEFINITION

****对于同一个类方法可同时使用多个参数,如:
***************************************************
***METHODS:SET IMPORTING VALUE(SET_VALUE) LIKE LTAB
***            EXPORTING VALUE(GET_VALUE) TYPE I
***            CHANGING VALUE(CHG_VALUE) TYPE I.
***************************************************

CLASS callobj IMPLEMENTATION.
  METHOD set.
    LOOP AT set_value INTO l_struc.
      WRITE: / l_struc.
    ENDLOOP.
  ENDMETHOD.                    "set
  METHOD get.
    get_value 20.
  ENDMETHOD.                    "get
  METHOD chg.
    chg_value = chg_value + 20.
  ENDMETHOD.                    "chg
ENDCLASS.                    "callobj IMPLEMENTATION

DATA obj TYPE REF TO callobj.
DATA num TYPE i.
DATA:l_struc LIKE callobj=>l_struc."参考类变量定义相关结构体及内表
DATA:ltab LIKE callobj=>ltab.

START-OF-SELECTION.
  CREATE OBJECT obj.

  l_struc-name 'JERY'.
  APPEND l_struc TO ltab."自定义数据

  l_struc-name 'PLATO'.
  APPEND l_struc TO ltab.

  l_struc-name 'JASSON'.
  APPEND l_struc TO ltab.

  CALL METHOD:obj->set EXPORTING set_value = ltab,
              obj->get IMPORTING get_value = num.

  WRITE:/ num.
  CALL METHOD:obj->chg CHANGING chg_value = num.
  WRITE:/ num.

posted @ 2017-09-20 15:37  独吊东南枝  阅读(439)  评论(0编辑  收藏  举报