SAP-增强(源代码-user-exit-badi-Enhancement-Spot-)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ABAP基础课程第六周本课内容概要:(使用SAP的增强,建议系统学习一下SAP标准教材BC425和BC427)1:什么是增强(Enhancement),为什么我们做增强(Enhancement)?2:SAP四代增强分别是什么?User-Exit简介。3:第一代增强简介,查找方法,增强Demo介绍;4:第二代增强User-exit简介,与第一代增强对比;SAP有四种基本用户出口的类型;5:如何找到第二代增强,如何使用?SMOD与CMOD使用与Demo介绍。6:以常用的功能用户出口为例,出口命名规则,几张重要的出口激活情况查看检查表;7:查找出口的几个重要的functionmodule含义及使用;8:以MB02修改物料凭证为例,查找出口;使用调试查找有用的出口;9:介绍什么是accesskey,如何去申请我们需要的accesskey?T-codeslicense。10:增强STEPBYSTEP简介;11:本节课作业,我们先要修改物料主数据增强,找到你需要的EXIT.ABAP基础课程第六周增强(Enhancement):增强(enhancement)的概念其实很广,SAP标准系统之上的所有二次开发,我们都可以理解为增强,做增强的目的就是标准的sap正常的业务系统不能满足实际需求,所以我们在标准的系统基础进行增加不同的功能来达到不同企业的要求,换句话说我们今天开发过程中所有的ADD-ON都可以说是增强开发。但作为开发人员所说的增强主要是标准系统事先预留好的接口,根据不同业务需求,进行开发,我们称为增强,又叫用户出口。ABAP基础课程第六周SAP四代增强:第一代(基于源代码的增强)是sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求;第二代增强(基于函数模块的增强),用SMOD和CMOD维护;在SAP发布的版本中,使用Callcustomer-function‘xxx’调用函数模块的,所以你可以通过在程序中收cusomer-function来查找第二代增强;第三代增强(基于面向对象概念的增强BADI(businessadd-in)),源代码发布以接口的方式,通过接口的方法调用来实现使用的;第四代其实是第三代的加强switchFramework,当sap进入newweaver7.0以后推出的新增强体系,将BADI进行了改进,叫新BADI了。还新增EnhancementSpot和EnhancementSection以及隐式增强点的概念;ABAP基础课程第六周第一代增强demo:由于第一代增强这类增强需要修改sap的标准代码。用户增强时,应首先到servicemarketplace申请对象键(又称为accesskey),然后才能修改这些子程序,这些子程序可以使用程序中所有的全局数据.早就废弃不用,SAP已经不再建议使用。出口查找方法一):案例:SAPMV45ASubroutines出口查找方法二):SPRO-SAPReferenceIMG,按,SearchTerm中填入’USEREXIT’就可以查到每个模块相应的出口了,每个出口SAP都会有相应的使用说明。ABAP基础课程第六周第二代增强简介,第二代与第一代增强的不同对比。UserExits是SAP第二代增强技术,其技术原理就是在程序中预先置放一个Form...EndForm的子程序,并在事物运行时使用CALLCUSTOMER-FUNCTION调用这些函数模块。当然,如果这个Form是空的,那么不执行任何操作,反之,执行相应的动作。与修改标程的区别在于,在SAP做升级的时候,UserExits会自动保留,标程的修改如果不做特殊处理,就会被覆盖。SAP有四种基本用户出口的类型:菜单出口-MenuExits,定义自己的菜单;屏幕出口-ScreenExits,定义自己的屏幕;功能模块出口-FunctionModuleExits,在SAP应用程序中添加功能;关键字出口-KeywordExits,在ABAP/4字典中的关键字数据元素添加文档。结果是你在使用这些数据元素的字段处按F1后会出现你自定义的说明文档。ABAP基础课程第六周TcodeSMOD与CMOD:增强通过事务码SMOD进行维护激活,CMOD进行实现。SMOD中的一个增强可以包含源代码、屏幕和表结构增强,按照较容易理解的逻辑结构来管理这些增强,使用相对更加便利。CMOD是为了对出口程序的修改进行管理,sap提供专门的用来管理出口程序的事务;本节课以最常用的用户出口,功能模块出口-FunctionModuleExits为例来进行讲解:Userexits(Functionmoduleexits)是sap提供出口,它的命名规则如下:EXIT_programname3digitsuffix几张重要的表:MODSAP:sapenhancementtableTFDIR:functionmoduletable,包括出口函数在内的所有函数表字段MAND(值为C表示此出口函数被激活).(E类)CUATEXTS:修改GUI界面,界面:菜单文本被客户(C类)TSDIR:动态程序区CALLCUSTOMERSUBSCREEN(S类)ABAP基础课程第六周相关增强检查函数:MODX_FUNCTION_ACTIVE_CHECK:(E类)检查功能出口类用户出口是否被激活。MODX_MENUENTRY_ACTIVE_CHECK:(C类)检查菜单关键字类增强激活状况MODX_SUBSCREEN_ACTIVE_CHECK:(S类)检查屏幕累增强激活状况SAP的各模块的任何一个事务码(Tcode)对应的标准程序都留下了大量的用户出口,正是SAP灵活的配置功能和强大的用户出口才使其产品轻松应对各种复杂需求成为可能,系统还为能快速找到和激活这些增强进行了有效组织,各类增强被记录在table中并且提供了相关检查函数,从而更方便企业用户。ABAP基础课程第六周DEMO举例:案例以MB02,修改物料凭证为例检查凭证抬头文本(Doc.headertext)ABAP基础课程第六周找到相应程序的名称:出口都没有激活,没使用,好多出口,哪个才是我们真是需要的,好用的出口呢?ABAP基础课程第六周DEMO举例:案例以MB02,修改物料凭证为例功能模块MODX_FUNCTION_ACTIVE_CHECK设置断点重要的两个字段的含义:如果强函数TFDIR-MAND=‘C’则表示该增强是激活的,于是系统赋予一个标志active=‘X’;字段l_funcname即为目前正在经过的出口;ABAP基础课程第六周ABAP基础课程第六周COMPONENTSAccesskeyTcodeslicenseorkeygeneratorABAP基础课程第六周增强步骤:2、先使用SMOD激活一个SAP增强2.1、选择一个增强,如:SDVFX001,点击修改,进入sap增强维护屏幕;2.2、点击组件按钮,进入组件维护屏;2.3、将光标移到功能模块名,输入模块名,如:EXIT_SAPLV60B_001;2.4、选择代码修改按钮进入函数模块;2.5、双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存;3、使用CMOD建立增强项目3.1、输入自定义的项目名,点击创建;3.2、进入增强项目,选择配置增强,进入增强配置屏幕;3.3、输入增强名如:SDVFX0013.4、保存,并退出;4、使用CMOD将增强项目激活,便大工告成。ABAP基础课程第七周本课内容概要:(使用SAP的增强,建议系统学习一下SAP标准教材BC425和BC427)1:ABAPObject面向对象语言简介;声明Definition和实现implementation的分别定义;ABAP对象中,三种可见性简介;代码实例简介;2:TheSAPEnhancementFramework简介;3:BADI概念简介;Enhancementspot概念简介;如何创建Enhancementspot如何创建BADI及BADI各组件简介;创建method及parameter;程序中调用BADI的小语句;4:如何创建BADI定义Definition;如何创建BADI实现Implementation;5:Enhancement-POINT简介;使用DEMO简介及日常用法;Enhancement-POINT和BADI的区别联系简介;ABAP基础课程第七周ABAP基础课程第七周ABAP基础课程第七周程序实例详见:Z_BADI_CALLABAP基础课程第七周程序实例:Z_BADI_CALLREPORTz_badi_call.*----------------------------------------------------------------------**----------------------------------------------------------------------**CLASSVECHICLEIMPLIMENTION*CLASSVEHICLEDEFINITION*----------------------------------------------------------------------**----------------------------------------------------------------------****----------------------------------------------------------------------**----------------------------------------------------------------------*CLASSvehicleIMPLEMENTATION.CLASSvehicleDEFINITION.METHODaccelerate.PUBLICSECTION.speed=speed+rate.METHODS:accelerateIMPORTINGrateTYPEi,ENDMETHOD.ACCELERATEconstructorIMPORTINGi_speedTYPEi,METHODshow_speed.show_speed.WRITE:/'SPEED:',speed.PRIVATESECTION.ENDMETHOD.SHOW_SPEEDDATAspeedTYPEiVALUE0.METHODconstructor.ENDCLASS.VEHICLEDEFINITIONspeed=i_speed.ENDMETHOD.constructorENDCLASS.VECHICLEIMPLIMENTIONDATAo_vTYPEREFTOvehicle.START-OF-SELECTION.CREATEOBJECTo_vEXPORTINGi_speed=4.CALLMETHODo_v-accelerateEXPORTINGrate=2.CALLMETHODo_v-accelerateEXPORTINGrate=2.CALLMETHODo_v-show_speed.ABAP基础课程第七周TheSAPEnhancementFrameworkSAPERP提供了大量的标准功能,但是用户的需求是多种多样的,如何是SAP的标准功能适应用户的需求就变得非常重要。SAPenhancement技术允许我们对SAP的标准功能进行扩展,以满足用户的个性化需求修改后台配置修改BAPI创建BAPI增强功能ABAP基础课程第七周BADI:BusinessAdd-Ins:BADI是基于SAP面向对象的的SAP增强技术;SAP预定义了Interface,由客户来实例化相应的接口,应用程序通过调用来获得用户所定义class的instance;BADI对象的信息存储在SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR这四个表;使用se18,se19查询badiSe18:定义接口功能Se1

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功