官方说明:
Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. They can be inserted into the SAP System to accommodate user requirements too specific to be included in the standard delivery. Since specific industries often require special functions, SAP allows you to predefine these points in your software.
我的理解:
SAP预定义了一些Interface,客户可以自己定义实现Interface的Class进行客户化,在标准程序中会使用调用客户自定义Class的Instance,在获取Instance的过程使用了工厂模式,因此获取过程对用户是未知的。不过BADI也有一些局限性,就是有哪些Interface是固定死的,有的时候会发现需要Mix客户化代码的时候找不到Interface,什么时候SAP的OO里面直接支持AOP就好了。
如何从SAP中查找BADI
BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。我这里就介绍一下我个人的应用的经验,供大家参考。
1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中(参见SECE包);
2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。
3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。
4、se18 查找接口,se19 实现接口就可以实现用户增强。
示例:用LE_SHP_DELIVERY_PROC控制跨月Cancel
METHOD if_ex_le_shp_delivery_proc~change_delivery_header .
DATA : thismonth(2) TYPE c.
DATA : wa_likp TYPE LINE OF shp_likp_t.
DATA : wa_log TYPE LINE OF shp_badi_error_log_t.
CLEAR ct_log[],thismonth.
thismonth = sy-datum+4(2). "----->這一個月的月份
LOOP AT it_xlikp INTO wa_likp.
CHECK is_v50agl-warenausg_storno ='X'."--->代表作GI cancel
IF wa_likp-wadat_ist+4(2) < thismonth.
wa_log-vbeln = cs_likp-vbeln.
wa_log-msgty = 'E'. "錯誤訊息
wa_log-msgid = 'ZDN_ERROR'. "這一個class要自己建
wa_log-msgno = '001'.
APPEND wa_log TO ct_log. "Error log寫入
ENDIF.
ENDLOOP.
ENDMETHOD. "IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER
TCODE:
SE18
SE19
分享到:
相关推荐
### 什么是BADI以及如何从SAP中查找BADI #### BADI概念解析 BADI(Business Add-In)是SAP提供的一种增强技术,它基于ABAP Objects框架,旨在为用户提供一种灵活的方式来满足特定需求而无需修改标准SAP交付内容。...
本文将详细介绍如何在SAP系统中查找和利用BADI出口增强,特别是通过SE80事务代码进行的具体步骤。 #### 1. 使用SE80事务代码查看程序包 首先,登录到SAP系统,输入事务代码SE80,进入程序包视图。在SE80的主界面上...
SAP提供了事务代码SE18来查找和激活BADI。在SE18中,你可以输入BADI的关键字或描述,系统将显示相关的BADI列表。然后,你可以查看BADI的接口定义,理解其方法和数据元素,最后在SE24中创建新的实现类来编写自己的...
本教程将深入讲解如何查找 SAP 标准程序中的用户出口和 BADI 实现方法,帮助开发者更高效地进行系统扩展。 一、用户出口(User Exits) 1. **理解用户出口**:用户出口是 SAP 为开发者预留的特定代码段,允许在...
#### 查找BADI与UserExit的工具 为了有效地查找和管理BADI与UserExit,SAP提供了多种工具和技术。其中一种方法是通过编写ABAP程序,如示例报告“ZPZTEST”,来搜索特定事务代码下可用的BADI和UserExit。这种程序...
然而,在实际开发中,查找BADI出口增强的方法可能会遇到一些困难。这篇文章将详细介绍BADI出口增强的查找方法,并提供了详细的操作步骤。 首先,需要在SE80中查看程序包,并在Repository Information System下查找...
3. 查找BADI可以通过SE38工具进行,需要知道相关的程序名称,例如SAPLMIGO,这是MIGO程序的名称。 4. CL_EXITHANDLER是SAP系统中用于管理程序退出点的类,可以通过对它的全局搜索来找到相关的BADI实现。 5. 实现...
一、什么是BADI? BADI(Business Add-Ins)是SAP系统中的一个增强技术,它允许用户在不修改SAP标准代码的情况下,添加自己的自定义逻辑。BADI的出现解决了SAP系统中原来存在的许多限制,使得用户可以更加灵活地...
### SAP如何查找BADI 在SAP系统中,BADI(Business Add-In)是一种非常重要的扩展机制,允许用户自定义业务逻辑而不修改标准SAP代码。对于开发人员来说,了解如何快速有效地查找与特定事务代码或功能模块相关的BADI...
SAP增强查找工具程序 SAP增强查找工具程序是基于ABAP编程语言开发的一种查找工具程序,旨在帮助SAP系统管理员和开发者快速查找各种类型的增强工具程序。该工具程序可以根据不同的搜索条件和scope criteria来查找...
使用SE24查找BADI - **步骤**: - 在SE24中打开类对象`CL_EXITHANDLER`。 - 在其方法`GET_INSTANCE`的第14行设置断点。 - 运行相关的事务代码。 - 当BADI被触发时,会进入`GET_INSTANCE`方法。 - 参数`EXIT_...
BADI(Business Add-In)是 SAP 提供的一种用户出口机制,允许用户在不修改 SAP 标准代码的情况下,实现自己的业务逻辑。BADI 的实现步骤可以分为两个部分:BADI 定义和在应用程序中调用 BADI。 BADI 定义 1. 使用...
1. **查找BADI** - 使用事务码SE24进入ABAP开发环境。 - 在对象类型中输入类名`CL_EXITHANDLER`,点击显示按钮。 - 在`CL_EXITHANDLER`类中找到方法`GET_INSTANCE`,并在其中设置断点于函数模块`CALL METHOD CL_...
"ZUSEREXIT_SAP增强查找"指的是在ABAP编程环境中寻找和利用SAP提供的增强点,以便在不修改标准代码的情况下定制系统行为。这通常涉及到事务代码、程序的查找和应用,以满足特定业务需求。 SAP增强主要包括以下几种...
SAP增强查找的知识点涵盖了SAP系统中用户扩展功能的方法与技术,从最初的源代码增强到最新的Switch Framework,各种增强方式都有其独特的应用场景和技术要求。 第一代增强基于源代码,是最早期的增强方法,需要直接...
通过SPRO->IMG查找用户出口 通过开发类查找用户出口 用户出口子程序所能使用的数据变量 VA01增强示例 第二代:基于函数出口增强(Function) SMOD与CMOD的区别 查找出口函数 根据出口函数查找对应的出口对象 出口...
用户可以通过EXIT_HANDLER这个单词查找BADI。BADI通常用于增强SAP标准程序的功能,例如,增强销售订单的处理流程。 三、如何使用SMOD和CMOD进行SD的用户增强 1. 关于增强的简单介绍 SMOD包含具体的增强,而CMOD是...