拡張Version1
拡張スポットを探すメソッド1:
1 VA02:伝票番号を入力―システム:ステータスーPGM:SAPMV45A
2 INCLUDE:??????Z?. ―>ENHANCEMENT
検索:USEREXIT*;例:USEREXIT_SAVE_DOCUMENT
拡張を改修できるところ:
拡張スポットを探すメソッド2:
1 SPRO
2SE38:MV45AFZZ―KEYWORD:SAVEで探す
在增强点输入相关代码后,即可对VA02增强如图中支付条件VBKD- ZTERM
行项目类型VBAP- PSTYV
行项目数量VBAP- KWMENG
If VBAP- PSTYV = ‘tan’.
If VBAP- KWMENG > 100.
Message ‘数量不能大于100’ TYPE ‘E’.
Endif.
Endif.
进行条件限制,做相关增强。
拡張Version2
主なTCODE:
FUNCTION的T-CODE:SMOD(SAP ENHANCEMENT)
CMOD(PROJECT MANAGEMENT OF SAP ENHANCEMENT)
メソッド1
1 ME22N:SYS―STATUS―PGM―ジャンプーPKG名:ME
2 SMOD―SH:情報システム:PGM:ME―検索:購買―照会―コンポーネント
可执行,对应不同函数
【创建PROJECT对象:CMOD】
拡張を配置できる
这里可分配增强
之后可在COMPONENT中查看:将出口对象引入后,对应其中的函数都会在此被包含。
函数在里面如何进行使用:(几个概念)
出口对象:可以管理多个函数;一个出口对象会根据相关的功能,去管理多个函数
出口对象写完保存在函数中,函数本身保存于某个出口对象。进行调用函数的时候,进行激活操作。激活:让修改的功能在程序中能够实现。包含时候不是以出口对象为单位,也不是以函数为单位的,而是PROJECT,这个项目对象为单位的。
项目对象也可包含多个出口对象。一个PROJECT包含多个出口对象。一个项目,预定义好了包含不同函数。
有层级概念:
PROJECT
出口对象(已建立,需要包含到PROJECT)
函数
比如SD模块想要包含所有出口,都定义在PROJECT。又包含多个出口对象。每个对象又包含函数。
SE16N中:
一个出口对象(已被预定义了)包含多个扩张函数;
一个函数对应唯一出口对象
【实例2: 销售订单的增强】
SMOD – F4
当前PKG:VA 下,EXIT对象
MV45A:COLLECTOR FOR CUSTOMER FUNCTION;
COPY PACKING:包装条款
查看COMPONENT
003:在表头级别,复制一些条件;
004:字段修改
根据订单类型,定义采购订单编号的输入:在003
方法三:
仅适用于已被激活函数的查找
结果说明找到该增强点。
还有其他一些相应的方法就是运用系统函数查找增强:
- DYNP_VALUES_READ
- MODX_ALL_ACTIVE_MENUENTRIES(菜单增强)
- MODX_FUNCTION_ACTIVE_CHECK(出口函数增强)
- MODX_MENUENTRY_ACTIVE_CHECK(菜单增强)
- MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强)
拡張Version3
个人理解:根据SAP提供的BADI创建一个BADIS实例化出相关的方法。
在不同的方法中可以实现相关增强。
查找BADI的方法:实现BADI增强,所有事务码会调用一个CLASS:CL_EXITHANDLER,运用SE24进入该CLASS,找到一个方法,该方法是获得实例化的BADI名称
メソッド1:
SE24:CL_EXITHANDLER – GET_INSTANCE
设置断点: CALL METHOD:CL_EXITHANDLER―>get_class_name_by_interface
【BADI实例:VA01】
设置断点之后,VA01执行,获得BADI
SE18:BADI_SD_SALES BAdI的INTERFACE,需要创建实现部分:IMPLEMANTATION中写实现
【MM03】BADI_SCREEN_LOGIC_RT
【MM01】DASIC DATA1
创建物料,到保存,所有相关BAdI增强
まとめ:
V1:SAP标准SYS增强,ACCESSKEY有权限方可修改,升级过程会被覆盖,
S4版本可以任意修改源代码;
V2:基于FM的EXIT,以EXIT_开头,包含一堆INCLUDE程序,都是ZX开头的预留程序。
出口需要放在PROJECT里面,激活方可使用。
V3:基于OO面向对象进行实现,需要先创建继承类。