ABAP开发基础入门类、接口练习(一)

ABAP语言类的例子,帮助大家理解,后面会有练习题自己敲下代码影响会更深刻,如有疑问或者文字有问题请联系我。时间比较匆忙,后续会持续更新修改。

*&---------------------------------------------------------------------*
*& Report ZJOB_YLS_CLASS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zjob_yls_class.

*定义类中的项目
CLASS lcl_compt DEFINITION.
  PUBLIC SECTION.
*实例属性
    DATA gv_char TYPE c LENGTH 20 VALUE '实例属性'.
    DATA gv_concatenate TYPE c LENGTH 50.

*静态属性

    CLASS-DATA gv_static TYPE c LENGTH 20 VALUE '静态属性'.
*实例方法
    TYPES gty_char20(20) TYPE c.
    TYPES gty_char5(5) TYPE c.
    METHODS write_char.
    METHODS set_value IMPORTING i_value TYPE gty_char20.  "对change 变量赋值 传入这个i_value形式参数
    METHODS get_value EXPORTING e_value TYPE gty_char20.        "获取change变量的值 传出这个e_value形式参数

    METHODS con_value IMPORTING i_value1 TYPE gty_char5 OPTIONAL "可选参数
                                i_value2 TYPE gty_char5
                                i_value3 TYPE gty_char5
                      EXPORTING e_subrc  TYPE c
                                e_back   TYPE c." 多个参数

    METHODS ret_value IMPORTING i_value1        TYPE gty_char5 OPTIONAL "可选参数
                                i_value2        TYPE gty_char5
                                i_value3        TYPE gty_char5
                      RETURNING VALUE(e_concat) TYPE gty_char20."不能是C 必须要完整类型 type


    CONSTANTS gv_write TYPE c LENGTH 20 VALUE 'AAAAA'.
*静态方法
    CLASS-METHODS write_static.
  PROTECTED SECTION. "设计继承
    CLASS-DATA gv_super    TYPE c LENGTH 20 VALUE  'super class'.

  PRIVATE SECTION.
    CLASS-DATA gv_private  TYPE c LENGTH 10 VALUE '静态私有属性'.
    CLASS-DATA gv_change   TYPE c LENGTH 20.

ENDCLASS.

CLASS lcl_sub DEFINITION INHERITING FROM lcl_compt.

ENDCLASS.

*定义类中的方法内容

CLASS lcl_compt IMPLEMENTATION.

  METHOD write_char.
    WRITE:/ '实例方法',gv_char.

  ENDMETHOD.

  METHOD write_static.
    WRITE:/ '静态方法' , gv_static.
  ENDMETHOD.

  METHOD set_value.
    gv_change = i_value.
  ENDMETHOD.

  METHOD get_value.
    e_value   = gv_change.
  ENDMETHOD.

  METHOD con_value.
    CONCATENATE i_value1 i_value2 i_value3 INTO gv_concatenate.
    IF sy-subrc = 0.
      e_subrc   = 'S'.
      e_back    = gv_concatenate.
    ELSE.
      e_subrc   = 'E'.
    ENDIF.
  ENDMETHOD.

  METHOD ret_value.
    CONCATENATE i_value1 i_value2 i_value3 INTO gv_concatenate.
    IF sy-subrc = 0.
      e_concat  = gv_concatenate.
    ENDIF.

  ENDMETHOD.
ENDCLASS.


CLASS lcl_sub DEFINITION INHERITING FROM lcl_compt.
  PUBLIC SECTION.
    METHODS write_super.
ENDCLASS.


CLASS lcl_sub IMPLEMENTATION.
  METHOD write_super.
    WRITE:/ 'PUBLIC SECTION' , gv_char,gv_static.
    WRITE:/ 'PROTECT SETION' , gv_super.
*    WRITE:/ 'PRIVATE SETION' , gv_private.  私有的不行
  ENDMETHOD.
ENDCLASS.



*声明一个对象
DATA lcl_object   TYPE REF TO lcl_compt.
DATA lcl_object_2 TYPE REF TO lcl_compt.

START-OF-SELECTION.

  CREATE OBJECT lcl_object. "实例化
  CREATE OBJECT lcl_object_2. "实例化
*实例属性在不同实例之间是互相独立的
  WRITE:/ '访问实例' , lcl_object->gv_char.

  lcl_object->gv_char = '更换后的char值'.
  CALL METHOD lcl_object->write_char.


  CALL METHOD lcl_object_2->write_char.


  "静态属性 不依附实例

  WRITE:/'访问静态属性:' , lcl_compt=>gv_static.
  lcl_compt=>gv_static = '更改静态属性的值'.
  CALL METHOD lcl_compt=>write_static.

  CALL METHOD lcl_compt=>write_static.



*带有参数的方法调用
  CALL METHOD lcl_object->set_value
    EXPORTING
      i_value = '赋值char变量'.

  DATA gv_data TYPE lcl_object->gty_char20.
  CALL METHOD lcl_object->get_value
    IMPORTING
      e_value = gv_data.

  WRITE:/ gv_data.
*method 方法一个是importing 一个是receing
  DATA gv_subrc TYPE c LENGTH 50.
  CALL METHOD lcl_object->con_value
    EXPORTING
      i_value1 = 'china'
      i_value2 = 'SH'
      i_value3 = 'GREAT'
    IMPORTING
      e_subrc  = gv_subrc
      e_back   = gv_data.
  WRITE: / gv_subrc,
         / gv_data.


  CALL METHOD lcl_object->ret_value
    EXPORTING
      i_value1 = 'china'
      i_value2 = 'SH'
      i_value3 = 'GREAT'
    RECEIVING
      e_concat = gv_data.
  WRITE:  / gv_data.


  "private protected 常量 访问不了
  WRITE:/ lcl_compt=>gv_write.
  WRITE:/ lcl_object->gv_write.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值