增强基础 转

说明: 增强  基础  操作

 部分文字转帖:http://blog.sina.com.cn/s/blog_453deb4b0100f8p7.html

  (文章对于增强的理解深入浅出,化繁为简,比较容易理解,因此转载。)

  

首先来讲解一下什么是出口,顾名思义,就是一段程序执行到最后必经的一段程序。
     为什么会有出口呢?因为正常的业务系统不能满足实际需求,这时可以在出口中增加一些功能,来达到要求,这也就是为什么它还叫增强。我感觉它跟给操作系统打补丁差不多。
     Sap中出口就是标准程序最后要调用的一个函数或者功能模块,这个函数或功能模块的输入已经由Sap定义好。

     自己写的SAP出口程序在系统升级的时候会被保留,而如果更改标准程序在SAP系统升级的时候会被覆盖。
       下面介绍一下什么时候需要使用出口以及出口的种类:

       1:在业务检查时,比如在某个工厂发货,可以设定在某个库位的出货只能使用某种移动类型。

       2:在需要界面增强时,比如用户对某个字段要求大写,但是最终用户不按规范操作,这也可以在出口中自动转换,有些模块甚至能自定义数据库字段,并且可以在出口中增加字段输入。还有的模块能对输入数据检查,甚至实现自动替代等功能。

       3:有不规则业务时,比如按某种条件定价,可以设定从自己定义的表中按某种条件取值

       4:搜索帮助的出口,可以对Sap标准的搜索帮助做权限控制。


SAP有四种基本用户出口的类型:

1.菜单出口-Menu Exits
    定义自己的菜单
2.屏幕出口-Screen Exits
    定义自己的屏幕
3.功能模块出口-Function Module Exits
    SAP应用程序中添加功能

4.关键字出口-Keyword Exits
    在ABAP/4字典中的关键字数据元素添加文档。结果是你在使用这些数据元素的字段处按F1后会出现你自定义的说明文档


因为出口都是被Sap预先定义好的,那么怎么寻找自己需要的出口呢?
1:可以通过配置文档的帮助和SAP library 寻找业务系统的出口,sap library ‘implementation guide’中寻找出口,在配置功能执行按钮左边一般都有一个说明文档,描述相关的出口。
2:为了方便我们把所有的出口名称及其描述列在文章的后面。

下面具体介绍怎样写出口程序:
为了对出口程序的修改进行管理,sap提供了专门用来管理出口程序的事务,事务代码是CMOD


sap寻找用户出口方法

sap的用户出口总共有三代:

一、User EXIT
    这种出口据说是第一代的用户出口,它们includeSAP标准程序的源代码里,可以说他们是源代码的一部分,你改了这种出口就相当于改了SAP标准程序,是需要申请access key才能更改的,不需要建立PROJECT。很多标准程序里的ZZ或者Z结尾的包括程序里都有以user_exit_开始的子程序.
二、Customer exit
   可以把这种出口看成第二代的的出口,好像增强(ehancement)就是指这类,不知道我有没有理解正确,这种出口又包括了六种不同的类型.
   1function exit,
   2) menu exit,
   3) table exit,
   4) field exit,
   5) screen exit,
   6) keyword exit
就是function exit.这种出口是以FM的形式存在的,其开发的方式是找到相关的增强后,建立PROJECT,然后在componemt里有FM,在FM里有以Z开始INCLUDE程序,双击这个INCLUDE程序进入后就可以根据FMIMPORT/EXPORT/CHANGING/TABLE等来开发你们的需求。这些增强是不需要申请ACCESS KEY的,因为他们不属于SAP标准程序里的一部分。这种增强FM的命名方式是EXIT_programname_NNN,NNN3个数字的序号,实际上在SAP的标准程序里,会用到下面的方式调用该增强的逻辑:call customer-function 'NNN',从而来达到用户的需求。

三、BADI
   这是基于面向对像的第三代增强。自己也只做过1次,特别是自己对SAP的面向对像还搞不清楚,寒~~`一时之间说不出个所以。前面介绍的两种出口增强,都是SAP提供固定的点给用户进行开发,而BADI这种增强,则让顾问们很自由地定义需要增强的地方,据说SAP很多的行业方案就是用这种形式来扩展的。
   如果你需要找某一个出口/增强,还是回去看SPRO,每一个模块里都基本有system modificatio或者BADI的说明,这样能更快找到相关的东西。

1、关于增强的简单介绍
1.1 SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强.  
1.2 User exits (Function module exits)sap提供出口,它的命名规则如下:
EXIT_<program name><3 digit suffix>  
示例:
sdVA01事务,对应的程序是SAPMV45A ,你会在程序里查到(用CALLCUSTOMER-FUNCTION字符串)如下代码:
CALL CUSTOMER-FUNCTION '003'
  exporting
    xvbak   = vbak
    xvbuk   = vbuk
    xkomk   = tkomk
  importing
    lvf_subrc = lvf_subrc
  tables
    xvbfa = xvbfa
    xvbap = xvbap
    xvbup = xvbup.
exit calls function module的名称就是:EXIT_SAPMV45A_003


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、输入增强名如:SDVFX001
3.4、保存,并退出;

4、使用CMOD将增强项目激活,便大工告成。

转载于:https://www.cnblogs.com/johnson_yao/archive/2011/04/21/2023780.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值