SAP 增强(Enhancement)(转)

本文介绍了SAP ERP系统的用户增强概念,包括增强的定义、分类及其应用,并详细解释了E类、C类和S类增强的区别。同时,提供了一个简单的ABAP程序示例来查找所有已激活的用户增强。

转自:http://hi.baidu.com/andy_yanhui/blog/item/f487b34f5be70600b2de05fa.html

 

(一)什么是增强(Enhancement)?
简单地说,增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。增强是ERP系统设计时考虑到企业实际的流程有可能和系统默认标准流程不同,在标准流程框架下专门留的接口,每个接口对应一个客户化函数,这些出口函数有标准处理程序传入的参数和输出参数,用户可根据系统输入参数做条件编写适合本企业流程的逻辑,然后通过输出参数传输回。
(二)用户增强分类
SAP的用户增强通常包括下面3类。
1.E:Enhancement exits,即通常所谓的用户出口(User_exit )
用户出口也叫功能出口(Function Exit)。
使用Tcode:SE37搜索EXIT*,找到的函数大都是做系统预留的出口函数,前面说过,用户出口是标准程序留给用户的接口,标准程序通常不允许用户任意修改,如果修改需要申请Access Key,而且修改标准程序可能导致的错误 erp公司 通常是不负责的。在SAP中,自定义的程序通常以保留字Y或Z开头,因此,出口函数中都预包含了一个Z开头的程序。
2.C:GUI接口(GUI codes)
3.S:屏幕增强(Screen Exit)
比如,在建立采购订单,工单和固定资产主数据时,系统都预留屏幕增强,也就是说允许用户自定义用户输入界面并编写相应的输入输出处理程序。
在各类增强中,可能还用户自己定义结构或表格,系统对应类型T。比如增强MM06E005
允许用户建立两个结构CI_EKKODB和CI_EKPODB。
接下来将重点介绍功能出口的应用。
(三)组织用户增强
相关增强表格:
MODSAP:增强表格
TFDIR:包括出口函数在内的所有函数表(E类)
CUATEXTS:修改 GVI 界面,界面: 菜单文本被客户(C类)
TSDIR:动态程序区 CALL CUSTOMER SUBSCREEN(S类)
* 对于以EXIT开头的出口函数,TFDIR-MAND值为C表示此出口函数被激活。
相关增强检查函数:
MODX_FUNCTION_ACTIVE_CHECK:检查E类用户出口是否被激活。
MODX_MENUENTRY_ACTIVE_CHECK:检查C类增强激活状况
MODX_SUBSCREEN_ACTIVE_CHECK: 检查S类增强激活状况
你可能会发现,SAP的各模块的任何一个事务码(Tcode)对应的标准程序都留下了大量的用户出口,正是SAP灵活的配置功能和强大的用户出口才使其产品轻松应对各种复杂需求成为可能,系统还为能快速找到和激活这些增强进行了有效组织,各类增强被记录在table中并且提供了相关检查函数,从而更方便企业用户。
熟悉ABAP开发的朋友通常都收集了一个可以输入事务码快速找到系统留下的所有出口的程序,下表就是一个检测系统增强被激活的简单参考程序。
(以下ABAP code在原作者的基础上经过调试,修正了一些格式错误,可以正常输出结果)
  *&---------------------------------------------------------------------*
*& Report  ZFINDACTEXIT
* 该程序可以检测出系统所有被激活的用户增强.
* By oliver. on 2009/10/21 .
* Used to find out all the activated user-exit of SAP .
REPORT ZFINDACTEXIT .

TABLES: MODSAP,TFDIR.

DATA :  BEGIN  OF ITAB_EXIT  OCCURS  0,
           FUNCNAME  LIKE TFDIR-FUNCNAME,
                   MAND  LIKE TFDIR-MAND,
                NAME  LIKE MODSAP-NAME,
   END  OF ITAB_EXIT .

DATA : FIELD1( 30).
SELECT A~FUNCNAME A~MAND  B~NAME  INTO  TABLE ITAB_EXIT
   FROM TFDIR  AS A     INNER  JOIN MODSAP  AS B
     ON A~FUNCNAME = B~MEMBER
   WHERE A~MAND =  'C'  AND A~FUNCNAME = B~MEMBER .
FORMAT  COLOR COL_HEADING  INTENSIFIED  ON.

WRITE:/1 SY-VLINE,
2  'Enhancement Name',
21 SY-VLINE ,
22  'Activated Exit Function',
95 SY-VLINE.

WRITE:/( 95) SY- ULINE.

LOOP  AT ITAB_EXIT.
   FORMAT  COLOR  COL_NORMAL  INTENSIFIED OFF.

   WRITE:/1 SY-VLINE,
   2 ITAB_EXIT-NAME  HOTSPOT  ON,
   21 SY-VLINE ,
   22 ITAB_EXIT-FUNCNAME,
   95 SY-VLINE.
ENDLOOP.

AT  LINE-SELECTION.
   GET  CURSOR  FIELD FIELD1.
   SET  PARAMETER  ID  'MON'  FIELD SY-LISEL+ 1( 10).
   CALL  TRANSACTION  'SMOD'  AND  SKIP  FIRST  SCREEN.
SAP系统中,增强选择的过程通常涉及多个步骤,具体包括增强点的定义、增强实现的开发、增强的激活与管理。以下是详细的增强选择方法和过程: 1. **定义增强点** SAP系统中可以通过事务代码 **SE93** 来定义和管理增强点。该事务代码允许用户创建增强请求,并为特定的业务场景定义增强点。增强点通常绑定到特定的功能模块、方法或程序中,以便后续实现增强逻辑[^1]。 2. **实现增强类** 增强类的实现通常通过ABAP类完成。例如,可以创建一个本地类 `zcl_enhancement`,并在其中定义一个方法 `enhance_me` 用于执行增强逻辑。以下是一个增强类的示例代码: ```abap CLASS zcl_enhancement DEFINITION. PUBLIC SECTION. METHODS: enhance_me. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_enhancement IMPLEMENTATION. METHOD enhance_me. WRITE: / 'This is my custom enhancement.'. ENDMETHOD. ENDCLASS. ``` 上述代码展示了如何通过ABAP类实现一个简单的增强方法,并在其中输出自定义信息[^1]。 3. **增强的激活与调用** 增强的调用通常依赖于系统中的增强框架。例如,可以通过调用增强管理器类(如 `cl_exithandler`)来触发特定的增强点。具体方法如下: ```abap DATA: lr_enhancement TYPE REF TO zcl_enhancement. CREATE OBJECT lr_enhancement. CALL METHOD lr_enhancement->enhance_me. ``` 此段代码展示了如何实例化增强类并调用其方法。在实际应用中,增强的调用可能涉及多个增强点的选择与排序,具体取决于业务需求和系统配置。 4. **增强的选择机制** SAP系统支持多种增强类型,包括: - **用户出口(User Exits)**:基于函数模块的增强点,通常以 `EXIT_*` 命名。 - **BADI(Business Add-Ins)**:面向对象的增强机制,支持多实现和过滤条件。 - **增强点(Enhancement Points)**:基于增强包(Enhancement Spot)的扩展机制,通常用于标准程序的扩展。 在选择增强方法时,需要根据业务需求、系统版本以及增强的复杂度进行判断。例如,BADI适用于需要多实现或多条件过滤的场景,而用户出口则更适合简单的函数模块扩展。 5. **增强的管理与调试** 增强的管理可以通过事务代码 **SE18**(BADI定义)和 **SE19**(BADI实现)进行。此外,事务代码 **SMOD** 和 **CMOD** 也可用于管理和激活用户出口增强
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值