用户出口和客户出口的区别 SAP

⚡ 智能摘要

用户出口和客户出口 SAP ABAP 是增强钩子,它无需修改标准程序即可向其添加自定义功能。 SAP 代码。本页解释了客户出口类型、示例、SMOD 和 CMOD 事务、用户出口以及这两种技术的区别。

  • 🪝 核心定义: 顾客出口是一个由……放置的挂钩 SAP 在客户添加自定义逻辑的标准程序、屏幕或菜单内部。
  • 🧩 三种出口类型: 函数模块出口添加代码,屏幕出口通过子屏幕添加字段,菜单出口向下拉菜单添加项目。
  • 🔍 寻找出口: 事务 SMOD 列出可用的出口,SE81 按应用区域浏览它们。
  • 🛠️ 实施: 在 CMOD 中创建一个项目,为其分配出口,编写代码,然后激活该项目。
  • 📦 用户出口: 用户出口的作用与 SD 模块相同,但仅存在于 SD 模块中,MV45AFZZ 就是最著名的例子。
  • 选择技术: 用户出口是 SD 子程序,客户出口是跨模块和升级安全的,而 BAdI 是这两者面向对象的后继者。

用户出口和客户出口 SAP

什么是客户退出?

客户出口是 “钩子” 提供 SAP 在许多标准程序、屏幕和菜单中,客户可能会 “悬挂” 为满足业务需求而定制的功能。稍后会详细介绍……

主要优势在于标准 SAP 对象从未被修改。自定义代码位于保留的包含文件或子屏幕中。 SAP 在合适的时机调用,使得增强功能能够在系统升级后保留下来,而不是被覆盖。正因如此,出口属于以下类别: SAP 增强技术与最新的商业插件相结合。

客户退出类型

客户退出主要有三种类型:

  1. 功能模块出口
  2. 屏幕出口
  3. 菜单退出

功能模块退出它允许客户通过函数模块在特定位置添加代码。 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 您将客户出口分配给您的项目。

从找到出口到激活密码的完整过程很短,而且始终遵循相同的六个步骤。

  1. 找到改进之处: 在 SMOD 中找到增强名称,例如组件 EXIT_SAPMF02K_001 为供应商主数据。
  2. 创建项目: 在 CMOD 中,输入以 Z 或 Y 开头的项目名称,然后选择“创建”。
  3. 分配增强功能: 在“增强功能分配”屏幕上,添加包含出口的增强功能名称。
  4. 编写代码: 打开函数模块 exit,并将代码放在其保留的包含文件(以 ZX 开头)中。
  5. 处理屏幕和菜单部分: 对于屏幕退出,构建 CUSTSCR 子屏幕;对于菜单退出,在 GUI 状态中填写 +CUS 功能代码。
  6. 启动项目: 在 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。

常见问题

SMOD 显示了 SAP 增强功能及其组件。CMOD 将一个或多个增强功能分组到一个客户项目中,分配代码并激活它。SMOD 用于查看,CMOD 用于实施。

不。客户出口是增强功能,而不是修改功能,因此不需要访问密钥。用户出口可以直接在应用程序中编辑。 SAP 包含,因此需要修改访问密钥。

运行事务,打开“系统”菜单,然后选择“状态”查看程序名称,然后在 SMOD 或 SE81 中搜索该程序的增强功能。一个常用的快捷方法是搜索表 MOD。SAP 针对该程序的功能组。

ABAP 开发工具中的 AI 助手会读取程序名称,并建议相关的增强、出口或 BAdI,同时解释每个选项的作用。开发人员仍需确认选择,并在保留的包含文件中编写逻辑。

AI顾问会权衡是否存在已存在的增强点以及需要多少实现,然后通常会推荐一个BAdI或用于新工作的增强点,keeping 经典出口,指那些仅作为出口存在的点。

总结一下这篇文章: