用户出口和客户出口的区别 SAP
⚡ 智能摘要
用户出口和客户出口 SAP ABAP 是增强钩子,它无需修改标准程序即可向其添加自定义功能。 SAP 代码。本页解释了客户出口类型、示例、SMOD 和 CMOD 事务、用户出口以及这两种技术的区别。
什么是客户退出?
客户出口是 “钩子” 提供 SAP 在许多标准程序、屏幕和菜单中,客户可能会 “悬挂” 为满足业务需求而定制的功能。稍后会详细介绍……
主要优势在于标准 SAP 对象从未被修改。自定义代码位于保留的包含文件或子屏幕中。 SAP 在合适的时机调用,使得增强功能能够在系统升级后保留下来,而不是被覆盖。正因如此,出口属于以下类别: SAP 增强技术与最新的商业插件相结合。
客户退出类型
客户退出主要有三种类型:
- 功能模块出口
- 屏幕出口
- 菜单退出
功能模块退出它允许客户通过函数模块在特定位置添加代码。 SAP 应用程序
Syntax: CALL CUSTOMER-FUNCTION '004'
屏幕退出它允许客户在屏幕上添加字段。 SAP 程序 通过子屏幕。子屏幕在标准屏幕的流程逻辑中被调用。
Format: CALL CUSTOMER-SUBSCREEN CUSTSCR2
菜单退出: 它允许客户在标准下拉菜单中添加项目。 SAP 程序。这些项目可用于调用附加程序或自定义屏幕。
Format: +CUS ( additional item in GUI status )
客户退出示例
屏幕退出示例:
在事务 CAT2(时间表输入)中,人力资源部希望包含一个交互式确认,即故意提交不正确的数据是被解雇的理由。
菜单退出示例:
在事务 SE38 - ABAP 编辑器中,开发团队希望包含一个指向事务 SE80 - 对象导航器的菜单链接,以方便使用。
之前
后
功能模块出口示例:
公司希望在供应商创建时强制输入供应商的银行详细信息。因此必须显示“请输入银行详细信息”的错误消息
之前
后
找到客户出口
交易中 SMOD 并研究细节-
或者在交易中 SE81 您可以使用适当的应用区域
创建客户退出
要创建客户退出,您首先需要在交易中创建一个项目 控制模块
Later 您将客户出口分配给您的项目。
从找到出口到激活密码的完整过程很短,而且始终遵循相同的六个步骤。
- 找到改进之处: 在 SMOD 中找到增强名称,例如组件 EXIT_SAPMF02K_001 为供应商主数据。
- 创建项目: 在 CMOD 中,输入以 Z 或 Y 开头的项目名称,然后选择“创建”。
- 分配增强功能: 在“增强功能分配”屏幕上,添加包含出口的增强功能名称。
- 编写代码: 打开函数模块 exit,并将代码放在其保留的包含文件(以 ZX 开头)中。
- 处理屏幕和菜单部分: 对于屏幕退出,构建 CUSTSCR 子屏幕;对于菜单退出,在 GUI 状态中填写 +CUS 功能代码。
- 启动项目: 在 CMOD 中激活项目,以便在运行时调用退出函数。如果未激活,则代码将被忽略。
💡提示: 函数模块出口的包含语句以 ZX 开头,因此它会随项目一起传输。切勿将自定义逻辑直接放在…… SAP 功能模块,因为那属于修改,而不是增强。
什么是用户出口?
用户出口与客户出口的用途相同,但仅适用于 SD 模块。出口通过调用函数模块来实现。代码由开发人员编写。
众所周知,SD 中的用户出口是 MV45AFZZ
- USEREXIT_FIELD_MODIFICATION – 修改屏幕属性
- USEREXIT_SAVE_DOCUMENT – 当用户点击“保存”时执行操作
- 用户退出_保存_文档_准备
- USEREXIT_MOVE_FIELD_TO_VBAK – 当用户标题更改移动到标题工作区时。
- USEREXIT_MOVE_FIELD_TO_VBAP – 当用户项更改移动到 SAP 项目工作区
用户出口在技术上是程序内部的一个子程序(FORM)。 SAP 因此,它可以直接编辑,并且需要访问密钥。这与客户出口的主要实际区别在于,下一节将对此进行概述。
用户退出与客户退出
这两种技术都为标准行为添加了自定义行为。 SAP但它们在范围、技术和升级安全性方面有所不同。下表对它们进行了比较。
| 标准 | 用户出口 | 客户退出 |
|---|---|---|
| 可用性 | 仅限SD模块 | 遍及所有 SAP 模块 |
| 技术 | 子程序(FORM) SAP 包括 MV45AFZZ | SMOD 和 CMOD 管理功能模块、屏幕或菜单退出。 |
| 访问关键 | 需要修改访问密钥 | 无需访问密钥 |
| Upgrade 行为 | 必须在升级过程中使用 SPAU 进行检查 | Upgrade 安全,从预留的包括中调用 |
| 管理者 | 直接在 include 中编辑 | 通过 CMOD 项目激活 |
客户出口比客户出口更安全、更通用。对于两种出口都无法实现的增强功能, SAP 后来又推出了商业插件。
客户退出与 BAdI
A 业务插件 (BAdI) BAdI 是面向对象的客户出口替代方案。它不使用保留包含,而是定义了一个接口,自定义逻辑则位于实现该接口的类中。这带来了客户出口所不具备的两个优势。
- 多种实现方式: 多用途 BAdI 允许对同一增强功能进行多次独立实现,而客户出口仅允许一次实现。
- 面向对象: BAdI 使用方法和类,因此适合现代 ABAP 对象开发,并且更容易按国家/地区或业务场景进行筛选。
实际规则很简单:当增强点已经存在时,使用现有的客户出口或用户出口;当需要新的、可重用的增强点时,使用 BAdI。









