简单的ABAP面相对象实例

来源:互联网 发布:万网域名注册阿里云 编辑:程序博客网 时间:2024/06/06 02:40

"包括定义和实现class,属性、构造函数、各种普通方法、静态方法等。

REPORT  ztest_sam_001.
"定义class
*----------------------------------------------------------------------*
*       CLASS ob1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS ob1 DEFINITION.
  PUBLIC SECTION.
    DATA name TYPE string VALUE 'name'.

    METHODS:
            constructor IMPORTING i_name TYPE string,"构造函数
            m1,
            m2 IMPORTING msg TYPE string,
            m3 IMPORTING msg1 TYPE string msg2 TYPE string EXPORTING msg3 TYPE string,
            m4 RETURNING value(r) TYPE string.
    CLASS-METHODS: m5.

ENDCLASS.                    "ob1 DEFINITION
"实现class
*----------------------------------------------------------------------*
*       CLASS ob1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS ob1 IMPLEMENTATION.
  METHOD constructor.
    name = i_name.
  ENDMETHOD.                    "constructor
  METHOD m1.
    WRITE: '方法中打印'.
  ENDMETHOD.                    "m1
  METHOD m2.
    WRITE: / msg.
  ENDMETHOD.                    "m1
  METHOD m3.
    CONCATENATE msg1 msg2 name INTO msg3 SEPARATED BY '*'.
  ENDMETHOD.                    "m3
  METHOD m4.
    r = name.
  ENDMETHOD.                    "m4
  METHOD m5.
    WRITE: / 'static'.
  ENDMETHOD.                    "m5
ENDCLASS.                    "ob1 IMPLEMENTATION


START-OF-SELECTION.

  ob1=>m5( ).

  DATA ob TYPE REF TO ob1.    "创建class实例
  CREATE OBJECT ob
    EXPORTING
      i_name = 'sam'.        "初始化
  ob->m1( ).
  DATA s1 TYPE string.
  s1 = ob->m4( ).
  ob->m2( msg = s1 ).
  DATA msg TYPE string.

  ob->m3(
  EXPORTING
      msg1 = 'msg'
      msg2 =  'm3'
      IMPORTING
        msg3 = msg
    ).
  WRITE: / msg.

  WRITE: / 'ztest_ob1 test'.
  DATA: o1 TYPE REF TO ztest_ob1.   "-------se24 是创建
  CREATE OBJECT o1.
  o1->m1( 's' ).

  DATA: st1 TYPE string.
  o1->m2(
  EXPORTING     "--------------------------注意exporting、importing和定义时相反
    s1 = 'test s1'
  IMPORTING
    s2 = st1

    ).
  WRITE: / st1.