您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > SAP-增强介绍及查找方法
总述SAP增强已经发展过几代了,可参考SAP标准教材BC425和BC427。本文简单的说一下SAP的用户增强总共有四代。第I条第一代基于源代码的增强节1.01介绍SAP提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强都需要修改SAP的标准代码。示例:USEREXIT..inSAPMV45A源代码增强以子程序形式发布,在SAP的发行版本中,使用PERFORM调用这些子程序,他们在发布时都是空的,集中在一些文件名倒数第二个字符为Z的包含程序中。用户增强时,应首先到servicemarketplace申请对象键,然后才能修改这些子程序,这些子程序可以使用程序中所有的全局数据。屏幕增强以客户屏幕形式发布,它们包含在标准程序中,没有什么特别规律。这种代码增强和屏幕增强的说明可以从事务码SPRO后台配置中相关模块的路径里面找到。同时使用的针对数据表的增强时appendstructure,可以在事务码SE11中打开透明表,点击应用工具栏最右边的那个appendstructure按钮就能为数据表追加新的字段。节1.02查找方法详见第V条。第II条第二代基于函数模块的增强节2.01介绍SAP提供的CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现。源代码增强以函数模块形式发布,在SAP的发布版本中,使用CALLCUSTOMER-FUNCTION调用这些函数模块,它们在发布时只有一句代码INCLUDEXXXXXXX。用户增强时,无需申请对象键,直接双击这个包含,然后回车,就可以创建相关的包含文件,编写相应的代码了。这些函数模块中只能使用接口中传递的参数,不能使用调动程序的全局变量。屏幕增强也包含在函数模块所属的函数组中。针对数据表的增强时CI_STRUCTURE,这些结构以.INLCUDE结构的形式包含在SAP发布的数据表中,用户可以通过向这些结构中添加字段而对数据表进行增强。上述这类增强通过事务码SMOD进行维护,CMOD进行实现。SMOD中的一个增强可以包含上述的源代码、屏幕和表结构增强,按照较容易理解的逻辑结构来管理这些增强,使用相对更加便利。节2.02查找方法详见第V条。第III条第三代基于面向对象概念的增强节3.01介绍SAP提供的第三代用户出口就是BADI,它使用类,接口及方法等面向对象的概念,采用一种使用面向对象的方法来进行SAP增强,它的调用方式是CALLMETHOD(instance)[相关的TCODE是SE18和SE19],可以通过EXIT_HANDLER这个单词来查找BADI.BADI(BusinessAdd-ins),源代码增强以接口形式发布,在SAP的发行版本中,也是通过接口的方法调用来使用。用户增强时,实际是实现一个(或多个)基于这个接口的实现类。由于接口可以有多个实现类,所以对于一个增强可以有多种不同的源代码,它们通过过滤器应用于不同的业务场景。这种增强使用事务代码SE18创建、SE19实现。节3.02查找方法详见第V条。第IV条第四代SWITCHFramework节4.01介绍SAP从Netweaver7.0以后推出的新增强体系,它对BADI做出了改进,改叫新BADI了。还新增Enha新增EnhancementSpot和EnhancementSection以及隐式增强点的概念,基本可以在面向对象的程序里实现处处即可增强的最高境界。节4.02查找方法详见第V条。第V条增强查找方法节5.01方法一利用TCODE寻找增强【第二代的增强】执行一个程序(源代码后附),在选择屏幕处输入你所需要增强的程序TCODE,执行后,就会出现一个列表,那里就有关于如何增强这个的绝大部分SMOD增强。点击进去,本人手动寻找需要的增强。暂时确实代码。节5.02方法二利用系统函数寻找【第二代的增强】MODX_FUNCTION_ACTIVE_CHECK在这个FUNCTION的代码最后添加一个断点。执行需要增强的TCODE,如果有增强,就会自动跳入DEBUG界面。在DEBUG界面,查看f_tab字段,这里面所显示的SMOD就是关于这个TCODE所有的增强项目的列表。这些增强都是属于EXIT_XXXXXX_XXX这种形式。至于如何查看这个增强是属于哪个SMOD,查阅MODSAP这个表(SAPEnhancements).还有一些FUNCTION供参考:[1].DYNP_VALUES_READ[2].MODX_ALL_ACTIVE_MENUENTRIES(菜单增强)[3].MODX_FUNCTION_ACTIVE_CHECK(出口函数增强)[4].MODX_MENUENTRY_ACTIVE_CHECK(菜单增强)[5].MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强)这些的使用方法和上述的一样,能够针对各种情况寻找增强。节5.03方法三从程序代码中查找【第一、二代】对于第一代增强,可以用以下方法查找增强:在需要增强的程序里面,打开SYSTEM——》status,双击进入PROGRAM,打开欲增强的程序,点击工具栏上的“DisplayObjectList”按钮,选择Subroutines,查找以“UserExit”开头的子程序,根据子程序前面的注释文档来查找用户出口,由描述来确定合适的需要增强的FORM。对于第二代增强,可以用以下方法查找增强用户增强通常包括下面3类,顾名思义,就是增强SAP的可能没有提供的功能(通过后台配置也不能实现).1.EEnhancementexits:就是常说User_exit(用户出口)使用SE37搜索EXIT*的函数大都是做exit用的,通常里面预包含了一个Z开头的程序.SE16查询TFDIR(函数表)输入EXIT*也可.2.CGUIcodes(GUI接口增强)3.SSubscreens(屏幕增强)Enhancement在表MODSAP可看到,而TFDIR字段MAND(值为C表示此出口函数被激活).使用SMOD(CMOD)当然可激活exitfunction,有时候一时难以查询到相关Enhancement时可使用下面程序将出口函数激活.REPORTZactexitfun.dataztfdirliketfdir.*selectsingle*fromtfdirintoztfdir*whereFUNCNAME=*'EXIT_SAPMM06E_013'.*ztfdir-MAND='C'.*updatetfdirfromztfdir.*将EXIT_SAPMM06E_013换成实际所需exit函数名updatetfdirsetMAND='C'.whereFUNcname='EXIT_SAPMM06E_013'.***当然也可SE16:MODSAP表enhancement输入EXIT_SAPMM06E_013然后得到enhancementnameMM06E005后使用SMOD测试激活exit函数.Table:[1].TFDIR-functionmoduletable[2].MODSAP-sapenhancementtable[3].TSDIR-DynproAreasCALLCUSTOMERSUBSCREEN(屏幕增强)[4].CUATEXTS-GUIInterface:MenuTextsChanged(GUI菜单文本增强)***注意,为了确保一个出口被真正应用,必须同时激活相关程序(SE38)和出口函数(SMOD|CMOD,反正就是要保证tfdir-mandt='C',用程序也可.节5.04方法四针对BADI的增强1.BADI对象的消息存储在SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR这四个表中。2.sap程序都会调用cl_exithandler=get_instance来判断对象能否具有,并前往实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP和V_EXT_ACT)进行查询和搜索。因此可以通过SE24-CL_EXITHANDLE-方法GET_INSTANCE设置断点,获取相关的BADI。3.基于这个机理,用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。4.se18查找接口,se19实现接口就能够实现用户增强。节5.05方法五SPRO后台查找通过SPRO后台配置相关模块下的菜单查找,此处的增强组件有比较详细的说明。
本文标题:SAP-增强介绍及查找方法
链接地址:https://www.777doc.com/doc-6660690 .html