如何寻找SAP中的增强

本文介绍了在SAP系统中如何寻找一代、二代和三代增强的方法,包括在特定包、出口对象中搜索,使用特定函数以及通过项目管理进行查找。二代增强主要在CMOD的项目中,而三代增强可通过CL_EXITHANDLER类的get_instance方法识别。

0 简介

在SAP中,对原代码的修改最不容易的是找增强,以下是我总结的对增强的方法的介绍。

1 寻找一代增强

我现在以找采购订单的增强来为例子来找增强,通常来说,第一代增强用在SD模块较多(销售订单的检查) 在以下的地方可以查询到 ,通过SD的出口是在VMOD这个包里。
在这里插入图片描述

2 寻找二代增强

2.1 第二代增强在CMOD里可以看到(project);

这个好像只有对SD的模块可以这样去查找 CALL CUSTOMER-FUNCTION
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 在包里也可以看到

在这里插入图片描述

2.3 在出口对象里输入包的名字也可以找到

在这里插入图片描述

以下的地方可以看到
在这里插入图片描述

2.4 通过以下函数可以发现已有的增强

MODX_FUNCTION_ACTIVE_CHECK (用这个函数可以查找做过增强的)
在这里插入图片描述

2.5 也可以在cmod里直接找

在这里插入图片描述

2.6 总结

在 第二代增强的组织方式是如下,我们一般是通过新建Project来实现。
PROJECT
出口对象
函数
modsap 是一个函数对象的表.

3 寻找第三代增强

在以下的类中的CL_EXITHANDLER方法get_instance中可以找到相应的

在这里插入图片描述

以下就是增强的名字了
在这里插入图片描述

### 如何在 SAP 程序中实现增强功能 #### 定义增强的概念 增强是指对标准 SAP 应用程序的功能进行扩展或修改而不改变其源代码的一种机制。通过这种方式可以满足特定业务需求,而不会影响系统的升级和支持。 #### BADI (Business Add-In) 增强方式 BADI 是一种基于接口的增强技术,在定义好的接口上实现了预设的方法来完成某些逻辑处理。创建一个新的 Business Add-In 或者使用现有的 BADI 来增加自定义行为是一个常见的做法[^1]。 对于物料管理模块中的事务码 MM01 的增强可以通过如下方式进行: ```abap REPORT zmm01_enhancement. DATA: lo_badi TYPE REF TO /syclo/cl_mmif~if_exits_material_maintenance. CREATE OBJECT lo_badi. CALL METHOD lo_badi->enhance_material_creation EXPORTING material_data = wa_material_data. ``` 这段代码展示了如何实例化一个与材料维护相关的 BADI 并调用其中的一个方法来进行增强操作。 #### 类增强(Class Enhancement) 除了 BADI 外,还可以利用类增强的方式对现有对象模型实施更改。这允许开发者针对指定类及其成员函数添加新的属性或是覆盖已有方法的行为。具体来说有三种类型的退出:Pre-Exit, Post-Exit 和 Overwrite-Exit[^2]。 例如要在一个名为 `ZCL_MY_CLASS` 的 Z 类里做增强: ```abap CLASS lcl_my_class DEFINITION INHERITING FROM zcl_my_class FINAL. PUBLIC SECTION. METHODS: enhance_method REDEFINITION. ENDCLASS. CLASS lcl_my_class IMPLEMENTATION. METHOD enhance_method. " 自定义逻辑... ENDMETHOD. ENDCLASS. ``` 这里展示了一个继承自目标类的新子类,并重写了父类里的某个方法以引入额外的功能。 #### 查找并应用合适的增强工具和技术 为了有效地找到适合项目使用的增强手段,建议熟悉 SAP 提供的各种资源和工具。比如 SE80 对象浏览器可以帮助定位到可能用于增强的对象;而 ST05 跟踪工具则有助于理解应用程序内部的工作流程以便决定最佳介入位置[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值