`
blueoxygen
  • 浏览: 1174051 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

BC425(Enhancements and Modifications)总结

    博客分类:
  • SAP
阅读更多

BC425读过有年头了,不过一直没有总结出来。今天上午把大概比较重要的知识点总结出来,有很多是即使做过enhancement的人也不是很清楚的。具体图片请参考附件

 

Table Enhancement

l  Append Structure

l  Append structures are created for use with a specific table

l  Multiple append structures can be used with a single table

l  Append structures can be used just like any other structure

 

一个structure只能append给一个table,但是一个table可以append很多structure.

如果copy一个有append structuretable,那么append structure里的字段都将成为新表中的普通字段。

可以对poolclusterappend structure,但是如果表中有LCHR LRAW字段则不行。

Structurefield的名字用customer namespace(ZZ YY)防止SAP系统升级时产生冲突,SAP系统升级时,会自动保留append structure

 

l  Customizing include

n  Must be specified by the SAP developer

n  Is created by the customer

 

Include可以同时插入到很多表中。命名规约为以CI_开头,确保不与SAP标准冲突。Include中的字段名字以ZZ YY开头。

 

 

Text Enhancements

l  Data Element Keywords

l  Documentation

 

Customer Exit

TCODE: CMOD SMOD(参考Tim的讲解)

l  Function Module Exit

SAP标准程序用,用CALL CUSTOMER-FUNCTION来调用,而且后面只是一个号码,比如001.

系统自动调用EXIT_<Programe_name>_001这个函数。其中program name便是拥有function module exitSAP标准程序名。另外,这些function都是存在于X开头的function group中。Function中都有一个zx开头的include语句,为客户开发预留。

 

对于X function groupSAP也有一些规定:如果function group的程序名为SAPLXAAA,则全局数据存储在LXAAATOP中,所有的function module存储在LXAAAUXX中,每一个function module对应存储在LXAAAU01…XX中。Subroutine存储在LXAAAF01…LXAAAFXX中。Group中的include要么以LX开头,要么以ZX开头,我们只能编辑以ZX开头的。比如自己定义的TOP include ZXAAATOP用来保存全局数据。自己创建的其他Object:ZXAAAO01(PBO) ZXAAAI01(PAI)ZXAAAE01(ABAP Events)

l  Menu Exit

Menu Exit允许将自定义的功能附着在SAP菜单之上。这些为客户预留的menu exitSAP中,FCode以‘+’开头,在激活project之前不会显示。Menu Exit一般都会有预留的function module exit与之配合一起工作。

 

l  Screen Exit

Screen Exit允许我们在SAP预留的screen area中定义自己的subscreen。在系统程序中,调用screen exit的方法为:
PBO  CALL CUSTOMER-SUBSCREEN <area> INCLUDING <X-function-pool> <screen_number>

PAI   CALL CUSTOMER-SUBSCREEN <area>

我们要在相应的function group中创建PBO PAI相应的module.而系统程序主屏幕与subscreen调用顺序如下:

 

而使用screen exit的一个最大问题在于数据的交换。因为标准系统程序并不会知道用户自定义屏幕中会有什么字段,所以不会预定义全局变量给它。需要在PBO系统预留的function module exit中讲subscreen可能需要的当前数据传输给子屏幕。而子屏幕经过处理再通过在系统程序PAI中预留的function module exit传输回来。具体过程如下图:

 

l  BTE

Business Transaction Events (BTE) are enhancements that were developed for the Financial Accounting (FI) component of R/3.

BTE是专门为FI准备的,在执行某些动作是触发。我应用不是特别多,有时间再仔细研究一下,写出来细节。

BTE调用的细节图如下:

 

BTE的一个特点就是可以有多个实现。多个被激活的实现在执行中被逐一调用

 

在程序找到一个BTE的方法为:在程序中搜索 OPEN_FI_PERFORM 以及在IMGFI下找到Use business transaction events子菜单。

BTEcustomer exit相比有如下不同:

BTE只提供源代码级别的exit,没有menu screenBTE可以重用,不是跨client的,并且可以过滤。

l  BAdIs(Business Add-Ins)

关于BAdI tim有过不错的介绍。可以简单的认为是一个OO版本的enhancement,但是它有很多新的特性。比如BAdl可以指定过滤条件,可以重用,只有被筛选出来的BAdl才会被执行。

BAdl的执行序列如下图


 

 

BAdl的命名规约为:BAdlinterface IF_EX_<badi> ZIF_EX_<baid>或者自定义namespace/IF_EX_<badi>

实现的类为CL_IM_<badi> ZCL_IM_<baid>或者自定义namespace/CL_IM_<badi>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics