user exits, customer exits, badi
user exits, customer exits, badi

Basic Concepts:1. User Exits: 是系统中预留的一些空的Form/Subroutine, 获得Access key后可以在Form中写入自己的逻辑.

2. Customer Exits :
a. FM Exits: 在FM中include 保留的 Z 程序来提供功能扩展点
b. Menu Exits: 在GUI status中预留+Fcode menu item, 在程序中预留对应的Handling FM Exits
c. Screen Exits: 在Screen 中预留 Subscreen, 在程序中预留transport data to subscreen & return / retrieve data from subscreen 的 FM Exits

3. Enhancement & Enhancement Project :
a. Enhancement: 把系统程序中的相关Customer Exits收集起来成为一个Enhancement, 一般情况是按功能和类型来收集的, 比方说几个相关的FM eixts组成一个enhancemnet, 或就一个 screen 或 menu exits 形成一个enhancement. 查看/修改 Enhancement的t-code为: SMOD
b. Enhancement Project: 在使用Enhacement时, 要先建立一个Enhancement Project, 可以将多个Enhancement assign给一个enhancement project去管理, 对应t-code: CMOD.

4. BADI (Business Add-in), 通过面向对象的方式来提供扩展点,它支持Customer Exits所有的enhancement 类型,因目前Class中不能包含subscreen所以在用BADI enhance screen时比用Customer Exits要复杂些.相关机制请参考我以前的blog.

这里要提下的是非Multiple Case的BADI同时只能有一个Active Implementation, 即要Active新生成的需先inactive旧的. 若是Multiple Case的BADI则可同时有多个Active Implementation,且所有的Implementation在没有Filter的情况下都会被遍历执行.

5. Other
User Exits与Customer Exits的区别在于User Exits的使用需要Access Key但Customer Exits不要.
FM exits在关联的Function Group中的命名规则为: EXIT_program name_nnn
Customer exits的调用方式为:
a. FM Exits: CALL CUSTOMER-FUNCTION 'xxx' EXPORTING ... IMPORTING ...
b. Subscreen: Call CUSTOMER-SUBSCREEN INCLUDING

How to find user exits?
Using t-code: SE93 and specify the transaction code. from here goto the main program and click on the FIND button. Specify USEREXIT and select find in main program radio button and click search... if any user exit is used, it will list all the places as in SAP if any user exit is used, a comment is been written above the user exit.

How to find customer exits?
1. 通过一些专门的程序,见附件
2. Search string “call customer” in the main program source code;
3. SE80 -> Repository Infomation System -> Enhancements -> Customer Exits -> Input search condition -> Execute
4. SE11 -> Database table: MODSAPVIEW -> Display Contents -> Input "*program name*" into Enhancement field -> Execute -> 得到的SAP extension name 即为 Customer Exits Enhancement Name

How to find BADIs?
1. 通过一些专门的程序,见附件
2. Search string “type ref to” in the main program source code, then check if there is BAdi used in the program;
3. Set break-point in the method CL_EXITHANDLER=>GET_INSTANCE.
4. SE80 -> Repository Infomation System -> Enhancements -> Business Add-ins

Customer Exits and BADI implementation.
1. Customer Exits: SMOD, CMOD
2. BADI: SE18, SE19.

Attachment is an ABAP program which can find customer exits and BADIs conveniently.

How to find all the BADIs(including sap internal use): 1. Go to the TCode SE24 and enter CL_EXITHANDLER as object type.
2. In 'Display' mode, go to 'Methods' tab.
3. Double click the method 'Get Instance' to display it source code.
4. Set a breakpoint on 'CALL METHOD cl_exithandler => get_class_name_by_interface'.
5. Then run your transaction.
6. The screen will stop at this method.
7. Check the value of parameter 'EXIT_NAME'. It will show you the BADI for that transaction.
补充: 1. 如何能过customer exit name 找 enhancement?
通过表 MODSAP
2. 如果知道你要做的customer exit是否已经有Project实现过了?
CMOD -> input customer name to "Enhancement component" field like "EXIT_SAPLRSAP_002" -> execute

user exits, customer exits, badi相关推荐

  1. User Exits,Customer Exits,BADI and BTE基本概念

    Basic Concepts: 1. User Exits:是系统中预留的一些空的Form/Subroutine,获得Access key后可以在Form中写入自己的逻辑. 2. Customer E ...

  2. SAP Enhancement 分类

    Enhancement(1)--BTEs 最近一个同事碰到一个FI的增强,要用BTEs实现,我也是第一次接触到这种增强,所以跟着他一起做了一下.写一个这方面的小节.    BTEs(Business ...

  3. Enhancement .

    Enhancement(1)--BTEs 最近一个同事碰到一个FI的增强,要用BTEs实现,我也是第一次接触到这种增强,所以跟着他一起做了一下.写一个这方面的小节. BTEs(Business Tra ...

  4. Enhancement

    Enhancement(1)--BTEs 最近一个同事碰到一个FI的增强,要用BTEs实现,我也是第一次接触到这种增强,所以跟着他一起做了一下.写一个这方面的小节. BTEs(Business Tra ...

  5. 跟着团子学SAP PS:如何查询PS模块中的user exits以及相关BAdIs SE80/SMOD/CNEX006/CNEX007/CNEX008

    在PS很多标准字段或功能无法满足客户需求的时候往往需要通过SAP标准的user exits或者BAdI进行开发以满足业务需要,所以今天介绍下如何查询PS模块中的用户出口以及BAdIs: (1)查询PS ...

  6. Enhancement(5)--Field Exits {转载}

    Field Exits,我想了一下还是单独拿出来写一下比较好. 虽然技术上来讲有点像Customer Exits(两者都是通过function来实现出口的),但是其原理和用途又有很大不同,而且Fiel ...

  7. ABAP总结之十一,Enhancement(5)--Field Exits

    Field Exits,我想了一下还是单独拿出来写一下比较好. 虽然技术上来讲有点像Customer Exits(两者都是通过function来实现出口的),但是其原理和用途又有很大不同,而且Fiel ...

  8. SAP所有模块用户出口(User Exits)

    用户出口就是SAP中的Customer Exits或者User Exits 使用用户出口可以: -不影响标准SAP源代码 -不影响软件升级 SAP有四种基本用户出口的类型: 1.菜单出口-Menu E ...

  9. SAP所有模块用户出口(User Exits) 一

    关于SAP的用户出口 用户出口就是SAP中的Customer Exits或者User Exits 什么叫用户出口呢?打个比方说吧,SAP软件就象一根晾衣服的绳子,上面有数不清的衣架,多数衣架上已经挂上 ...

最新文章

  1. ubuntu18安装virtualbox
  2. 中科院韩先培:预训练模型怎样成为下一代知识图谱
  3. JSON.parse(text[, reviver])
  4. 如何使用CSS创建巧妙的动画提示框
  5. 【TypeScript系列教程03】基础语法
  6. 上机练习 实现消费单的打印 需求不明确要补充
  7. 吉大计算机考研分数线2021,吉林大学2021考研分数线
  8. 动辄几个亿的东半球最强饭局:大佬们都吃了啥?
  9. ajax跨域访问问题
  10. 互联网产品经理,全方位入门,图书推荐
  11. C/C++利用netsh设置动态IP和静态IP
  12. Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
  13. Unity的Carte Blanche简介
  14. tp5使用xunsearch
  15. java怎么计算时间差_请问java怎么计算时间差
  16. 《Java SE实战指南》10:特性修饰符
  17. rangeOfString用法
  18. 由二项分布推导泊松分布中的两个使用公式的证明
  19. 思科服务器系统时间,cisco 设置时间
  20. PCBA加工锡膏溶焊工艺简介

热门文章

  1. 禁止文字选中 css
  2. 结构体定义容易混淆的地方
  3. 【SRH】------常见的HTTP状态码
  4. build.gradle代码
  5. 《Unity3D-控制角色受伤的时候身体颜色变化的代码》
  6. 3720: Gty的妹子树
  7. python操作Excel读写--使用xlrd
  8. HotSpot 自动内存管理笔记与实战
  9. Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
  10. php ci 参数,CI如何写一个控制器,并传递参数正常解析访问?