SAP SE24--类的属性及方法

ABAP 语言中,类的属性可以从两个角度来看:
  • 从属性的可见性角度,属性可分为 public, protected 和 private。因为 ABAP 的类自身分为两种,
  • 局部类只能在某支程序中定义和使用,也只能在某支程序内可见。这些属性在程序之外是不可见的。
  • 全局类(SE24 定义)在外部是可见的,public, protected 和 private才有意义。
    • 在全局类中定义的 public 属性,在外部是可见的
    • 全局类中定义的 protected 属性,只能在类本身、子类和友元类可见
    • 全局类中定义的 private 属性,只能在类本身可见;
  • 实例属性 (instance attribute) 和 静态属性 (static attribute)。
    • 实例属性:使用 DATA 关键字来声明,在每个对象中独立存在;
    • 静态属性:使用 CLASS-DATA 关键字声明,在各个对象之间共享。简单地说,静态属性与类相关,实例属性与对象相关。
    • 在调用类和对象的属性和方法的时候,如果是静态属性或方法,用 => 符号,如果是实例属性或方法,用 -> 符号。
CALL METHOD: obj->showdata1, " 通过对象调用类方法
               obj->(methname)." 通过变量,动态调用类方法
   CALL METHOD: callobj2=>call_static_class, " 通过类调用静态类方法
               obj2->call_static_class.     " 通过对象调用静态方法
类方法通过定义变量来调用方法:

 DATA lv_impclass TYPE REF TO object.

READ TABLE it_zcmt_int_po_cfg  INTO it_zcmt_int_po_cfg  INDEX 1.
CREATE OBJECT lv_impclass  TYPE (it_zcmt_int_po_cfg-impclass).
TRY .
     DATA(ptab ) =  VALUE abap_parmbind_tab(
        ( name  = 'OUTPUT' kind  = cl_abap_objectdescr=>exporting value =  REF #( output ) )
        ( name  = 'INPUT'  kind  = cl_abap_objectdescr=>importing value =  REF #( input ) )
        ).
     CALL METHOD lv_impclass->(it_zcmt_int_po_cfg-method)  PARAMETER-TABLE ptab.
   CATCH cx_ai_system_fault  INTO DATA(oref).
    cv_msg = oref->get_text( ).
    cv_m_type = c_fail.
ENDTRY.
创建静态类--静态属性用于赋值
调用赋值
 ZCL_MM_COBL=>KOSTL = lv_KOSTL.
SET/GET用法:
      CL_CRM_BOL_ENTITY->get_related_entityEXPORTING
                                               iv_relation_name = lv_rel
                                              RECEIVING
                                               rv_result        = lr_entity ).
CL_CRM_ BOL_ENTITY->SET_PROPERTY( IV_ATTR_NAME = 'DESCRIPTION'
                                                                     IV_VALUE     = 'Test*' ).
类在ABAP程序中的使用;

1.声明类开定义类的使用方法。
2.data type ref to ()
3. create object
4. -> =>运算符号类对象或组件;
DEMO:
REPORT zjgltest01.


" 创建类一
CLASS callobj DEFINITION.
  PUBLIC SECTION.                   " 定义公共类成员
    CLASS-DATA:para(30) TYPE c VALUE 'The static class parameter!'.    " 定义静态变量
    DATA count TYPE i.                             " 定义该类中的全局变量
    METHODS : showdata1,
      showdata2.


  PRIVATE SECTION.               "定义类中私有成员.
    METHODS:showdata3.
ENDCLASS.
"  定义类方法实现行为
CLASS callobj IMPLEMENTATION.
  METHOD showdata1.
    WRITE:'HELLO SAP'.
  ENDMETHOD.


  METHOD showdata2.
    count = 1.
    WRITE:count.
    CALL METHOD showdata3.              " 在类内啊调用私有方法
  ENDMETHOD.


  METHOD showdata3.
    WRITE:/'The Private Method!'.
  ENDMETHOD.
ENDCLASS.


" 定义第二个类,其成员对象为一静态方法
CLASS callobj2 DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:call_static_class.
ENDCLASS.
" 定义第二个类方法
CLASS callobj2 IMPLEMENTATION.        " 直接引用其它类中的静态变量
  METHOD call_static_class.
    WRITE:/ callobj=>para.
  ENDMETHOD.
ENDCLASS.


" 主程序
DATA obj TYPE REF TO callobj.           " 引用参照类声明变量
DATA : methname TYPE string.             " 定义方法名变量
START-OF-SELECTION.
  CREATE OBJECT obj.                  " 创建类实例化对象
  methname = 'SHOWDATA2' .        " 为变量赋值方法名
  CALL METHOD : obj->showdata1,   " 调用类方法
                 OBJ->(methname).   " 通过变量调用类方法
  CALL METHOD:callobj2=>call_static_class." 无需实例化

方法声明关键字:METHOD 或 CLASSS-METHOD.
方法实现代码: METHOD…ENDMETHOD.
1.import/Export:输入,输出接口,其接口参数可以为单个变量,Structure,要么内表 .
2.Changing:可同时作为输入,输入接口,其参数与上面一样。
3.RETURNING:返回类传递数值()。
4.EXCEPTIONS:返回执行中所有出现的错误。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值