SAP GUI 创建 ABAP 异常类实操:SE24 生成构造器与 MESSAGE_TEXT 参数适配


文章封面

本文以 ZCX_MM_SC 为例,按 SAP GUI 的实际操作顺序,说明如何创建异常类、维护公开只读字符串属性、核对系统生成构造器、检查并激活,以及通过测试环境验证构造参数赋值。

实操日期为2026年11月10日,环境为 SAP GUI for Windows、ZSD/900、事务码 SE24。类已保存、语法检查无错误、已激活,并通过构造器实例测试。截图中的系统、包和对象名称用于说明本次操作;其他项目应使用各自批准的开发环境、包和工作台请求。

这次遇到的关键问题是:经典 SE24 为异常类自动生成的构造参数名为 MESSAGE_TEXT,参数名不能在当前界面编辑,构造器源码也提示不能编辑。原项目使用 IV_TEXT 命名参数,因此最终保留系统生成构造器,并把调用方统一为 EXPORTING message_text = ...。

截图从基本对象创建完成后开始采集,因此没有SE24初始页及创建弹窗的原始图片。下文说明前段配置,并用后续20张真实截图记录属性维护、构造器限制、激活和测试过程。没有通过删除重建对象补造前段截图。

对象设置与完成结果

项目本次设置或结果
类名ZCX_MM_SC
描述委外发料业务异常
类别与父类异常类,CX_STATIC_CHECK
实例生成与继承限制公共,Final
自定义属性MESSAGE_TEXT TYPE STRING READ-ONLY
构造参数系统生成的可选 TEXTID、PREVIOUS、MESSAGE_TEXT
当前包Z001,沿用本次系统归属;未移包、未释放传输
已验证保存、类语法检查、激活、构造器文本赋值
未覆盖全项目编译、ABAP Unit、ATC及真实业务流程验收

操作前如何进入

  1. 登录项目获准开发系统,核对系统/客户端;本次唯一会话为ZSD/900,当前事务SE24。
  2. SE24输入ZCX_MM_SC,先核对是否已有对象;本次实操初始状态栏显示原类已删除,点击创建后进入新对象创建窗口。
  3. 创建类别选择“异常类”,父类CX_STATIC_CHECK;描述“委外发料业务异常”;实例生成公共;勾选Final;不选择T100消息类方案。
  4. 保存后进入下面的属性维护步骤。若已有活动对象或目标系统/客户端不符,不按本记录覆盖未知对象。

1. 基本对象已创建

本次实操开始时在SE24已填ZCX_MM_SC,点击创建后选择异常类,父类CX_STATIC_CHECK,描述“委外发料业务异常”,实例生成选公共,勾选Final。本图记录基本对象创建后的当前界面,状态为“已实现/非活动”;不是此前创建弹窗的截图。

01 基本对象已创建

2. 进入属性页

在类构建器点击用于维护成员的“属性”页签。注意左侧还有一个“属性”页签用于类基本属性;本页是包含TEXTID、PREVIOUS等继承属性的成员表。定位继承属性之后的第一空行。

02 进入属性页

3. 填写MESSAGE_TEXT属性

在空行填写属性MESSAGE_TEXT;级别选Instance Attribute,可见性Public,勾选只读,键入Type,关联类型STRING。继承属性不修改。此图记录回车前的输入。

03 填写MESSAGE_TEXT属性

4. 确认属性输入

按回车检查输入,MESSAGE_TEXT应成为当前异常类的公开只读字符串实例属性。系统未返回错误;不要把它建为静态属性或数值字段。

04 确认属性输入

5. 保存类及属性

点击标准工具栏保存,实际状态栏返回“类 ZCX_MM_SC 已保存”。本会话没有弹出新的包/请求分配窗口;随后类属性显示包Z001。本次实操未改包、未释放传输。其他环境若弹出包/请求选择,按项目正式包与获准任务处理,不能照抄Z001。

05 保存类及属性

6. 定位CONSTRUCTOR

切到“方法”页,在方法列表定位CONSTRUCTOR。IF_MESSAGE~GET_TEXT等是继承方法,不需要新建或重定义。

06 定位CONSTRUCTOR

7. 核对系统生成参数

选中CONSTRUCTOR,点击“参数”。实际参数为TEXTID、PREVIOUS、MESSAGE_TEXT;MESSAGE_TEXT为TYPE STRING OPTIONAL。读取控件可编辑性确认参数名不可编辑,不尝试强行改成IV_TEXT。

07 核对系统生成参数

8. 查看构造器及编辑限制

点击“源代码”。系统进入构造器显示,状态栏提示“不能编辑异常类的构造函数”。源码调用父构造器并执行me->MESSAGE_TEXT = MESSAGE_TEXT。本次实操没有修改生成源码;最终采用保留系统生成构造器、统一本地项目调用参数的方案。

08 查看构造器及编辑限制

9. 返回类构建器

按返回离开只读构造器。不要把无法编辑理解为缺少一行代码,也不要通过改父类或取消异常类别绕过。

09 返回类构建器

10. 执行语法检查

确认当前对象ZCX_MM_SC,点击“检查”(Ctrl+F2)。实际状态栏为“未找到语法错误”。检查通过后仍需要激活。

10 执行语法检查

11. 核对激活对象清单

点击“激活”(Ctrl+F3)。弹出非活动对象清单,已选中6行,都是ZCX_MM_SC的类组成部分:两个CINC、CPRI、CPRO、CPUB及CONSTRUCTOR方法;不是6个独立业务类。不选择其他人员或其他对象。

11 核对激活对象清单

12. 确认激活成功

核对清单后点继续。实际状态栏为“对象已激活”,类状态变为“已实现/活动”。这一步是本次实操在目标SAP真实执行的激活结果。

12 确认激活成功

13. 核对父类、类别和包

打开类基本属性页,确认父类CX_STATIC_CHECK、描述“委外发料业务异常”、实例生成公共、Final及异常类别40。当前包Z001,语言ZH。包是系统当前归属,不是本手册为所有项目推荐的固定包。

13 核对父类、类别和包

14. 进入实例测试

在类构建器点击测试环境(F8)。系统进入“创建类ZCX_MM_SC的实例:构造函数参数”界面,包含TEXTID、PREVIOUS及MESSAGE_TEXT。只测试已知纯内存赋值构造器,没有执行业务发料/写表函数。

14 进入实例测试

15. 打开字符串编辑器

定位MESSAGE_TEXT行的“编辑长字段或结构”,双击进入;本次通过定位该行并执行选择动作进入字符串编辑器。TEXTID及PREVIOUS保持初始。

15 打开字符串编辑器

16. 输入测试文本

在CONSTRUCTOR.MESSAGE_TEXT的字符串输入栏填写ZCX_MM_SC_TEST_20261110。该文本仅用于验证构造器赋值,不是业务数据或接口请求号。

16 输入测试文本

17. 返回参数界面确认输入

返回构造器参数页,核对MESSAGE_TEXT行显示完整ZCX_MM_SC_TEST_20261110,避免进入长文本编辑器后未带回输入。

17 返回参数界面确认输入

18. 创建实例并核对结果

点击“创建实例”(F8),展开对象属性。实际MESSAGE_TEXT属性值为ZCX_MM_SC_TEST_20261110,证明参数到只读属性的传递正确。本次未执行完整项目ABAP Unit或ATC。

18 创建实例并核对结果

19. 退出测试回到已激活类

按返回回到类构建器,类状态仍为“已实现/活动”。测试只生成内存实例,不生成业务凭证。

19 退出测试回到已激活类

20. 以显示模式结束

切换为显示模式,最终停留在ZCX_MM_SC类基本属性界面,状态“已实现/活动”,包Z001。未继续创建或修改其他SAP对象。

20 以显示模式结束

本地代码怎样与生成器对齐

构造器公共接口为:TEXTID LIKE TEXTID OPTIONAL、PREVIOUS LIKE PREVIOUS OPTIONAL、MESSAGE_TEXT TYPE STRING OPTIONAL。调用示例:

RAISE EXCEPTION TYPE zcx_mm_sc
  EXPORTING message_text = '供应商不能为空,禁止保存'.

捕获后仍读取异常对象的MESSAGE_TEXT属性。保留PREVIOUS异常链;本地共361处调用参数改名,错误文本及业务判断未改。SAP中已实施的其他类、Include或增强片段需要以后按新本地源码合并和检查,本次实操没有批量修改它们。

验证范围和复现要点

  • 已在SAP执行:ZCX_MM_SC保存、类语法检查、类激活、构造器创建实例、MESSAGE_TEXT属性值核对。
  • 尚未执行:其余项目类/报表的SAP编译、RULES的16项ABAP Unit、ATC、真实发料/冲销、并发/断连恢复及完整业务验收。
  • 不能直接编辑生成构造器时,维护公开只读属性让SE24生成对应参数;不要强改参数名、父类或后台元数据。后续新增异常属性可能触发生成器更新,更新后重新核对签名和调用方。
  • 截图只证明对应步骤的实际界面状态,类激活不等于全部项目已上线。其他客户端/系统须重新核对。

常见问题

现象处理方式
构造器参数名不能改成 IV_TEXT核对系统生成签名,统一调用方使用 MESSAGE_TEXT,不强改生成元数据
源码界面提示不能编辑异常类构造函数保留生成器实现,通过属性维护生成对应参数;源码页用于核对
保存成功但状态仍为非活动执行类检查,再激活,并核对实际激活结果
类激活成功但其他程序仍报参数不存在检查调用方是否仍使用旧参数名,更新对应源码并分别检查
截图包为 Z001这是本次系统归属;正式项目应核对自身包、请求和传输安排

官方参考

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
MCP自动发表文章
下一篇:没有了
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

SAP GUI 创建 ABAP 异常类实操:SE24 生成构造器与 MESSAGE_TEXT 参数适配
SAP ABAP 开发常用事务码与核心概念:SE37、SE38、SE80、增强技术及 ALE/EDI/IDoc
SAP S/4HANA 实操 03:创建物料组
SAP S/4HANA 实操 04:MM 基于 Garson 组织架构创建物料主数据并递进练习
SAP MM、FI、SD、PP 组织架构配置实操:具体步骤与最终结果校验
SAP 用户与角色授权实操指南:SU01、PFCG、SU53 全流程
SAP S/4HANA MM 模块培训 19:采购供应商与 PO-GR-IR 实操
SAP S/4HANA 实操 01:MM 企业结构与采购组织配置:Garson 测试公司示例
SAP S/4HANA 实操 02:MM 复制标准类型创建 Garson 自定义物料类型
SAP S/4HANA MM模块培训 24 - 货物发出:201、261、551移动类型与中断流程补齐
从 SE37 到 HTTP 地址:一步步定位 SAP 自定义接口的测试入口
SE41 复制标准 ALV GUI 状态操作教程
ABAP 数据字典 DDIC 详解:从 Domain 到透明表、搜索帮助与锁对象
查询参数类:SQLServer
SAP S/4HANA MM模块培训 51 - 采购用户参数:SU3默认值与MSV、EVO、EFB
SAP GUI导入Excel无法获取数据:原因排查与解决方案
iNeuOS工业互联网操作系统,增加设备驱动的自定义参数模板,适配行业个性化设备的应用场景
SAP S/4HANA MM模块培训 06 - 库存物料采购与询价创建
SAP传输请求操作指南:SE09创建副本与STMS导入发布
ABAP基础语法:变量、系统变量、数据类型与结构体变量详解