一、事务代码:SE24
二、步骤
2.1、创建类:se24
实例化类型
public:该类可以在任何地方进行初始化
Protected:只能在自身和或类的子类中进行初始化
Private: 只能自身的类中进行初始化
Abstract: 不可以创建实例。
2.2、创建属性
2.2.1、选择属性
在属性分页签中先按上图填写好属性MV_NAME ,级别、可见性,然后点击上图框起来的按钮进入下图,类定义
级别
instance attribute : 相当于用data申明的变量
static attribute : 这个属性所有的对象实例都是共享的,这个静态属性由类的所有对象共有,(对象访问使用-> ,通过类名访问=>).
constant : (常量的属性)
可见性
public :公共可见
protected: (本身,子类,友元类)
PRIVATE (本身,友元类)
Read-only: 该属性不可以在类外被直接修改。
键入
like: 已经实例化的数据对象
type:没有实例化的类型
type ref to :后面跟类
Type boxed :结构嵌套的定义(数据值相同时,可以记录一条数据)
2.2.2、代码定义三部 (结构体,内表,工作区)
定义好后,返回界面,自动添加了MT_MATERIAL,MS_MATERIAL属性
2.3、创建方法
2.3.1、方法建立
级别 : instance method :实例方法必须通过类的实例来使用
static Method :只能操作静态对象.
2.3.2、添加参数
IMORTING: 输入值
EXPORTING: 输出值
CHNAGING: 输出值
Returning: 输出一个参数
传递值 :是值传,还是传引用。
2.3.3、进入代码
2.3.4、测试参数
2.3.5、测试代码
REPORT ZTEST01.
DATA :GO_CLASS_MATLL TYPE REF TO ZCL_CLASS_MATL.
DATA : GV_I_NAME TYPE CHAR30 VALUE 'importing into class'.
DATA : GV_E_NAME TYPE CHAR30 VALUE 'exporting from class'.
DATA : GV_C_NAME TYPE CHAR30 VALUE 'changing in class'.
DATA : GV_R_NAME TYPE CHAR30 VALUE 'returning from class'.
CREATE OBJECT GO_CLASS_MATLL.
CALL METHOD GO_CLASS_MATLL->TEST_PARAMETER
EXPORTING
IV_NAME = GV_I_NAME " method imporing parameter
IMPORTING
EV_NAME = GV_E_NAME
CHANGING
CV_NAME = GV_C_NAME
RECEIVING
RV_NAME = GV_R_NAME.
WRITE:/ 'gv_i_name',GV_I_NAME.
WRITE:/ 'gv_e_name',GV_E_NAME.
WRITE:/ 'gv_c_name',GV_C_NAME.
WRITE:/ 'gv_r_name',GV_R_NAME.
2.4、事件
2.4.1、创建事件
2.4.2、创建方法
REPORT ZTEST01.
TYPES:
BEGIN OF TY_MATERIAL,
MATERIA_ID TYPE MARA-MATNR,
MATERIA_TYPE TYPE MARA-MTART,
END OF TY_MATERIAL .
TYPES:
TY_TAB_MATERIAL TYPE SORTED TABLE OF TY_MATERIAL WITH NON-UNIQUE KEY MATERIA_ID .
DATA : GV_MATNR TYPE MARA-MATNR.
DATA : GT_MARA TYPE TY_TAB_MATERIAL .
DATA : GO_INVENTORY TYPE REF TO ZCL_CLASS_MATL.
CREATE OBJECT GO_INVENTORY.
PARAMETERS : P_MTART TYPE MARA-MATNR.
"Register event handler method
SET HANDLER GO_INVENTORY->HANDLE_ORDER_POINT_REACHED FOR GO_INVENTORY.
START-OF-SELECTION.
CALL METHOD GO_INVENTORY->CHECK_MATERIAL
EXPORTING
IV_MATERIAL_ID = P_MTART
IMPORTING
ET_MATERIAL = GT_MARA.
LOOP AT GT_MARA INTO DATA(GS_MARA).
WRITE :/ GS_MARA-MATERIA_ID, GS_MARA-MATERIA_TYPE.
ENDLOOP.
2.5、创建构造方法
REPORT ZTEST01.
DATA GO_CONSTRUCTOR TYPE REF TO ZCL_CLASS_MATL.
CREATE OBJECT GO_CONSTRUCTOR
EXPORTING
IV_VALUE = 'CONSTRUCTOR'.
WRITE:/ 'CONSTRUCTOR TEST. '.
结果
2.6异常
2.7 父类
测试:
测试:
报表调用方式一:
报表调用方式二:
2.8
DATA:
go_obj TYPE REF TO cl_material_details_list.
"打印程序初始内存使用量
cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = DATA(lv_init_size) ).
WRITE: / |内存初始用量: { lv_init_size } { 'Bytes' }| COLOR COL_POSITIVE.
DO 1000 TIMES.
CREATE OBJECT go_obj.
FREE go_obj.
ENDDO.
cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = DATA(lv_before_size) ).
WRITE: / |创建并FREE类变量后内存用量: { lv_before_size } { 'Bytes' }| COLOR COL_GROUP.
cl_abap_memory_utilities=>do_garbage_collection( ).
cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = DATA(lv_after_size) ).
WRITE: / |使用垃圾回收后内存用量: { lv_after_size } { 'Bytes' }| COLOR COL_TOTAL.