SAP 中类的使用

news/2025/2/28 15:03:58/文章来源:https://www.cnblogs.com/wangqinglin/p/18740895

一、事务代码: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_sizeIMPORTING 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_sizeIMPORTING 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_sizeIMPORTING size DATA(lv_after_size).
WRITE: / |使用垃圾回收后内存用量: { lv_after_size } { 'Bytes' }| COLOR COL_TOTAL.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891176.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串数组指针变量的地址关系

deque是一个指向字符串数组的指针变量(char **deque)。下面我用图示来介绍下,字符串数组的相关概念。 首先定义一个字符串数组指针 char **deque;然后再申请N个数组空间 deque = (char **)malloc(N * sizeof(char *));此时deque就是一个拥有N个字符串指针的数组。然后向第一…

牛客题解 | 斐波那契数列_1

牛客题库题解题目 题目链接 描述 此题是非常经典的入门题了。我记得第一次遇到此题是在课堂上,老师拿来讲“递归”的(哈哈哈)。同样的类型的题还有兔子繁殖的问题。大同小异。此题将用三个方法来解决,从入门到会做。 考察知识:递归,记忆化搜索,动态规划和动态规划的空间…

牛客题解 | 整数中1出现的次数(从1到n整数中1出现的次数)

牛客题库题解题目 题目链接 题目的主要信息:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数举一反三: 学习完本题的思路你可以解决如下题目: JZ17. 打印从1到最大的n位数 JZ15. 二进制中1的个数 方法一:按位统计法(推荐使用) 思路: 数字都是由位数组成,某…

牛客题解 | 数组中重复的数字

牛客题库题解题目 题目链接 题目的主要信息:一个长度为\(n\)的数组中只有0到\(n-1\)的数字 需要找出其中任意一个重复出现的数字举一反三: 学习完本题的思路你可以解决如下题目: JZ56. 数组中只出现一次的两个数字 JZ50. 第一个只出现一次的字符 JZ75. 字符流中第一个不重复…

牛客题解 | 数据流中的中位数

牛客题库题解题目 题目链接 题目主要信息:寻找数据的中位数 数据量在不断输入增长举一反三: 学习完本题的思路你可以解决如下题目: BM46. 最小的k个数 方法一:插入排序法(推荐使用) 知识点:插入排序 插入排序是排序中的一种方式,一旦一个无序数组开始排序,它前面部分就…

牛客题解 | 数组中出现次数超过一半的数字

牛客题库题解题目 题目链接 题目主要信息:题目给出一个长度为n的数组,其中有一个数字出现次数超过了数组长度的一半,需要我们找出这个数字 输入数组非空,保证有解,这样就不用考虑特殊情况举一反三: 学习完本题的思路你可以解决如下题目: BM52. 数组中只出现一次的两个数字…

牛客题解 | 数值的整数次方

牛客题库题解题目 题目链接 题目的主要信息:求一个浮点数的整数次方 整数有正有负 不可以使用库函数,也不需要判断大数问题举一反三: 学习完本题的思路你可以解决如下题目: JZ83. 剪绳子(进阶版) 方法一:直接运算(推荐使用) 思路: 既然是求次方,那我们做不断累乘就可…

支付宝 IoT 设备入门宝典(下)设备经营篇

本篇会以支付宝 IoT 设备经营为中心,介绍常见的设备相关能力和问题解决方案,帮助商户利用设备进行运营动作,让设备更好的帮助自己上篇介绍了支付宝 IoT 设备管理,但除了这些基础功能外,商户还可以利用设备进行一些运营动作,让设备更好的帮助自己,本篇就会以设备经营为中…

国家能源集团某煤矿办公网与工业网整合运维

北京智和信通智和网管平台通过跨网络的整合监控运维能力,对某煤矿中的办公网和工业网进行管理。在一个平台内根据网络类型进行区分管理,统一监控。 国家能源集团某煤矿是国家能源集团在晋陕蒙区域的典型现代化井工煤矿,具有丰富的煤炭资源和先进的生产管理模式。 项目…

最长公共子序列LCS 笔记

最长公共子序列LCS 笔记 假设存在两个相同长度平凡的序列,我们希望找到它们最长的公共子序列,在没有其他特殊条件的情况下,利用动态规划计算的时间复杂度为 \(O(n^2)\) ,并且可以记录这个子序列 考虑两个指针作用于两个序列上,记 \(dp_{i,j}\) 表示为连续子序列 \([a_1,a_…

Windows 系统调用学习笔记

依然是 x86 的,照着 lzyddf 师傅的 blog 和 OneTrainee师傅的blog 学的 Windows API Application Programming Interface,简称 API 函数。Windows API 是微软为 Windows 操作系统提供的一组函数、数据结构、常量和协议,允许开发者与操作系统进行交互。通过 Windows API,开发…

作业一:自我介绍+软工五问

作业一这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13325这个作业的目标 学习使用github和博客园自我介绍、兴趣爱好 我叫梁鑫…