FICO BTE (第四代增强)

 

另外还有一种出口叫BTE
相关TCODE: FIBF
Business Transaction Events (Open FI) 

SAP对FI模块真的做的非常透彻,所以称FI是SAP R/3 系统的中流砥柱啊,单就增强这块来看,之前有会计凭证的验证和替代,目前又出现了专为FI模块设计的增强方案BTE(OpenFI)。

BTE的设计思路还是比较简单,和BADI有点类似。在标准程序中留有OPEN_FI的出口(以函数OPEN_FI_PERFORM_eventid_type的形式存在),然后提供一个可配置的TABLE,可以在里面针对某个特定的Event维护自己定义的出口函数,标准程序走到这里,如果查出用户定义了出口函数,则会调用,达到增强的目的。

BTE增强有2种类型,类似于会计凭证验证和替代。

Publish and Subscribe Interface:只提供SAP数据源,可以供外部程序使用或者达到数据检查的目的。

Process Interface:是达到数据修改的目的,用来增强标准的业务流程。

 

BTE增强

1.查找BTE增强,在标准程序中查找String ‘OPEN_FI_PERFORM’,找到的函数如果最后是’_E’,则说明这是Publishand Subscribe Interface:,如果是’_P’,则是ProcessInterface。

2.TCODE: BERE for Publishand Subscribe Interface  BERP for Process Interface。选中第一步得到的EventID, 转到
Sample function module。如:’SAMPLE_INTERFACE_00001120’或者’SAMPLE_PROCESS_00001120’,拷贝为自定义的函数。如: ZINTERFACE_00001120或者ZPROCESS_00001120’。

3. BF24: 定义客户组件。并且在Active上打勾。

4. BF34或BF44:维护客户BTE函数。将第一步得到的Event ID,第二步定义的Functjion module和第三部定义的客户组件关联。

一些相关的TCODE:

FIBF  Maintenancetransaction BTE 

BERE Business EventRepository 

BERP BusinessProcesses 

BF31 Application modulesper Event 

BF32 Partner Modules perEvent 

BF34 Customer Modules perEvent 

BF41 Application Modulesper Process 

BF42 Partner Modules perProcess 

BF44 Customer Modules perProcess

***************************************

 在创建或修改客户时做最终检查,不符合条件不允许保存

●   查找合适的事件

1、运行事务码XD02,查找到对应的程序为SAPMF02D,在此程序中搜索字符串“OPEN_FI_PERFORM”,可以找到此程序中的所有用到的BTE。
2、运行事务码FIBF。由于此例只是做检查,因此要查找的是P/S型的事件,因此选择菜单“环境->信息系统(P/S)->F8运行程序”,根据事件描述和事件文档对事 件的详细描述逐个筛查,找出最符合要求的BTE事件。
3、通过筛查可以看到“00001340客户主数据:最终检查 ”比较符合要求。
●  根据样本函数创建自定义函数

 

●  创建产品

 

●  配置事件、产品和函数的对应关系

 

**********************************************

增强——BTE流程简介

  (2013-06-14 13:51:51)
标签: 

sap

 

bte

 

fibf

分类: 增强

BTEs(Business Transaction Events),是SAP的一种增强方式,它主要有两种类型的接口:

    Publish and Subscribe Interface

    Process Interface

 这样的接口,在标准程序中常常是以OPEN_FI_PERFORM_或者OUTBOUND_CALL_开头的function。

至于Publish and Subscribe Interface和Process Interface的区别,主要还是用途上的。前者,使给外部软  件提供信息的,而后者主要用于R/3流程的。不过前者也可以生成或修改一些additional data。

 BTEs主要用于总帐,应收应付和销售分销模块。

下例是个Process Interface,在billing posting的时候,把Head的text改掉。

下面,简单说一下实现流程,不涉及代码

 

 

1、 T-code: FIBF 进入BTEs的界面

 

2、 Environment->Infosystem(Processes)->运行->Process 00001120->Sample function module









3、 回到FIFB界面,Settings->Products->...of customer->New Entries加入自己的product激活







4、 回到FIFB界面,Settings->Process Modules->... of customer->新建主键是 00001120的Process,并将刚才建立的function module和product写到相应栏位



 

之后,运行相应的过账程序,诸如T-CODE VF01或是FB01,生成财务凭证,察看凭证的HEAD TEXT是否被修改。

具体函数内实现逻辑不做介绍

 
 
 
 
 
 

BTE的理解和开发

标签: BTE
 分类:

1、BTE的理解和查看:(财务替代出口会在部分BTE前面跑)

http://blog.csdn.net/wbin9752/article/details/7954663

      

 

      查看系统的BTE,以及相关的模板FM:

      其中,P/S为检查用的BTE,Processes是修改用的。

      

 

      

 

 

2、BTE的开发步骤(例子):

       可以参考的例子:http://blog.csdn.net/trassion/article/details/7572923

                                       http://blog.csdn.net/wbin9752/article/details/7954922

 

 

 

3、BTE相关的T-CODE和表:

      

      1)、BTE对应的Package
            BBTE  Business Transaction Events (Open FI)
      2)、BTE存储的表
            TBE01     Library of the Publish&Subscribe Business Transaction Events
            TBE01T   P&S BTE: Language-Specific Descriptions
      3)、调用BTE的相关函数
             BF_FUNCTIONS_FIND
             PC_FUNCTION_FIND

      4)、相关TCODE
             FIBF Maintenance transaction BTE
             BERE Business Event Repository
             BERP Business Processes
             BF31 Application modules per Event
             BF32 Partner Modules per Event
             BF34 Customer Modules per Event
             BF41 Application Modules per Process
             BF42 Partner Modules per Process
             BF44 Customer Modules per Process
             SAP Reference IMG -> Financial Accounting -> Financial Accounting Global Settings -> Business Transaction Events

 

4、BTE事件与相关触发t-code

      F-02  :

      VF01 :00001025    00001050

      FB70 :

      FB01 :00001110   

 

5、BTE开发的注意事项:

 

 

 

6、BTE技巧:

      1)在FM:BF_FUNCTIONS_FIND,设断点,然后查看CALL FUNCTION 'BF_FUNCTIONS_READ'里面的变量,可以查看这个流程,会触发那些event,以及那些customerFM,这样就可以在相应的EVENT开发ZFM。

 

      2)查找对应合适的BTE:运行事务码XD02,查找到对应的程序为SAPMF02D,在此程序中搜索字符串“OPEN_FI_PERFORM”,可以找到此程序中的所有用到的BTE。

 

      **********************

SAP 业务交易事件BTE(Business Transaction Event)

原创 2012年05月16日 15:50:32

业务交易事件BTE

BTE是什么,当然不是BT的ERP, E文全称Business Transaction Event,业务交易事件,我们知道一般的增强(Tcode:SMOD|CMOD)依旧使用ABAP,BTE则可提供了RFC调用其它产品的可能(Tcode:FIBF),举一个检查物料主数据的实例说明BTE用法,简化为三个步骤.

第一步:建立附加产品(Tcode:BF24)

图1,建立产品ZMM01-2,选图1-[2]表示激活.

第一步:连接事件到产品(Tcode:BF34).

 

系统预定义了很多事件,00001250是保存物料主数据的事件,系统似乎并没有为物料主数据的维护设置增强而是留下了这个BTE,输入函数ZMM01_2_CHECK.

第三步:建立检查函数(Tcode:SE37).

 

你可以输入00001250*快速找到类似SAMPLE_INTERFACE+EVENT号的函数,Copy一个出来,如图3.

下面是一个限制某工厂只能输入某利润中心和不允许用户修改利润中心的参考代码.

DATA:

      I_MSG1(60) TYPE C,

      I_MSG2(50) TYPE C.

*   Never let user change profit center of material  .

if ( I_MARC_NEW-PRCTR  <> I_MARC_OLD-PRCTR ) and  ( I_MARC_OLD-PRCTR <>  '' ) .

   CALL FUNCTION 'READ_CUSTOMIZED_MESSAGE'

        EXPORTING

          I_ARBGB = 'ZFI'

          I_DTYPE = ''

          I_MSGNR = '003'

        IMPORTING

          E_MSGTY = SY-MSGTY.

 CHECK E_MSGTY <> '-' .

 MESSAGE ID ' ZFI ' TYPE SY-MSGTY NUMBER '003'  with  'Change Material profit center not allowed!' .

ENDIF.

IF ( I_MBEW_NEW-BWKEY = 'FRA1' AND  I_MARC_NEW-PRCTR <> '9233110000' ).

   CALL FUNCTION 'READ_CUSTOMIZED_MESSAGE'

        EXPORTING

          I_ARBGB = 'ZFI'

          I_DTYPE = ''

          I_MSGNR = '002'

        IMPORTING

          E_MSGTY = SY-MSGTY.

CHECK E_MSGTY <> '-' .

I_MSG1 = 'FRA1 profit center should be 9233110000!'.

  CONCATENATE 'However,Your input is :'  I_MBEW_NEW-BWKEY '&'  I_MARC_NEW-PRCTR

      into  I_MSG2 .

 MESSAGE ID ' ZFI ' TYPE SY-MSGTY NUMBER '002'  with I_MSG1 I_MSG2.

ENDIF.

注:此处代码仅供参考。如果涉及多个工厂,可以使用case语分工厂一一检查业务范围和利润中心是否一致,消息号设置成可配置型的。

关于消息请参考如下:

关于消息,请看下一个小技巧-消息,介绍如何使用参考代码中使用到的消息类”ZFI”.

小技巧-消息

消息这词还用在比如PO,SO打印传真等所谓的output message,但是这节的消息则是指程序逻辑出现异常抛出的消息,有点类似其他开发工具的try..catch..finally 语句.

为了说明消息的意思,我也分几个部分阐述.

第一部分:定义和查看消息(Tcode:SE91).

使用Tcode SE91可自定义和查看系统的消息,

 

图1中建立了消息类ZFI,消息类相当于一个应用区域,如果消息使用了&符号,表示是在程序调用时可使用文本变量替代这符号.

第二部分:调用消息(Tcode:SE38).

调用消息的方法.

(1).可在程序Title中使用MESSAGE-ID加入消息类.

REPORTZMSGTEST1 MESSAGE-ID ZFI .

MESSAGE I001.

(2).在代码中指定消息类.

REPORTZMSGTEST2 .

MESSAGE I001(ZFI).

(3). 在消息类传输文本.

REPORT ZMSGTEST3 .

MESSAGE I002(ZFI) with ‘文本1’‘文本2’ .

或者

MESSAGEID ' ZFI ' TYPE 'I' NUMBER '002'  with‘文本1’ ‘文本2’ .

消息的类型一般有以下几种

I:信息窗口 W:警告 E:错误 S:成功 A:终止程序.

(4).将消息设成为配置消息

PROGRAM ZMSGTEST4   .

CALL FUNCTION 'READ_CUSTOMIZED_MESSAGE'

        EXPORTING

          I_ARBGB ='ZFI'

          I_DTYPE = ''

          I_MSGNR = '0002'

        IMPORTING

          E_MSGTY =SY-MSGTY.

CHECK E_MSGTY <> '-' .

MESSAGE ID ' ZFI ' TYPE SY-MSGTY NUMBER '002' with ‘文本1’‘文本2’ .

 

3常用消息表格和各模块常用消息配置Tcode.

 在消息配置中,Application Area和SE91的Message Class实际上是同一概念.

第三部分:配置消息(Tcode:OBA5|OMRM等).

(1).消息相关表格.

Table蕴藏着丰富的信息,看看消息相关表格

T100:系统能用到的消息都应该在此表中找到.

T160M :MM模块相关消息表,此表可完全直接维护.就是说只要记住它,MM的消息配置直接使用SE16就可以.

T100C: FI模块中用户自定义的消息,比如使用OBA5, OFMG等自定义的消息会写入此表,CO配置消息不在此表.

T100S:此表保存着允许用户更改的应用区域和消息号,一个简单实例,假设你删除了KI 005则在Tcode:OBA5中将再不能配置此消息.

此表也可直接维护.和T160M不同的是,你必须在SE16输入T100S按新建按钮       才可维护,这表是跨Client的.

T100U:哪个用户最后更改了消息,从此表能找到.

设置可配置消息

图2是一个合成图,现在要将自定义的消息类ZFI的几个消息设置成可配置的,输入表T100S,然后点击图2-[1]的新建按纽,也就是说设置可配置消息首先需要在T100S折腾一番。

图2-[3]表示ZFI-002|003消息允许配置的消息类型,选上图2-[4]”关闭”标志表示该消息能被关闭.

现在你就可以使用Tcode:OBA5设置消息ZFI 002和ZFI 003是错误警告还是关闭等,而函数READ_CUSTOMIZED_MESSAGE正是根据配置决定消息类型的.

(2).各模块常用消息相关Tcode

FI: OBA5|OFMG|OFPM

MM: OMRM|OKZZ|OMT4|OMCQ |O04C|

SD: OVAH

CO: OPR4_ACT|OPR4_CK|OPR4_CKML|OPR4_CKPF|OPR4_KKA|OPR4_KKP|OPR4_KKS|

OPR4_KKS1|OPR4_PPCOPP

其它:

OPR5|OPR1|OPR3|OPR6|OPR7|OPR8|OPR9|OPRCMFE|MSW1|MSW2

图3是OMRM配置后勤发票校验的消息的,可以在供应商主设计设置其发票校验是” 基于收货的发票验证”->自动带到PO->设置M8 504|M8081为错误消息,这样如果不企业未收到货三单不匹配将不能进行发票校验确定应付.

***********************************************************************************

1.1    业务交易事件BTE(加作者微信索取无水印PDF完整版)

BTE全称Business Transaction Event,是由SAP在标准程序中预设的一些事件(或称为锚点),用户可以为该事件指定各自的实现逻辑。

BTE包含发布&订阅接口和处理接口,发布&订阅接口(Publish and Subscribe Interface)用于告诉外部程序在标准程序中触发了哪些事件,并且把相关的数据提供给外部,外部程序不能返回任何数据给SAP,处理接口(Process Interface)会将外部程序处理后的数据返回给标准程序,可能对标准程序中后续的处理逻辑产生影响。

BTE分为三种级别,内部事件、合作伙伴的事件和客户的事件,内部事件由SAP发布,合作伙伴事件由SAP软件开发伙伴提供,客户事件由实施顾问配置开发用于实现企业内部的特殊需求。

图 12‑23 展示了BTE的实现原理,SAP在标准程序中预设事件,通过事务码FIBF配置该事件的实现函数,在实现函数中编写增强代码即可。

FI系统增强介绍【05业务交易事件BTE】

图 12 ‑ 23

BTE可用于会计凭证过账时的数据校验、更新Addon表或自动打印凭证等场景,下例模拟在供应商发票过账时,通过BTE实现对供应商主数据的完整性检查。

IMGà财务会计(新)à财务会计全局设置(新)à工具à客户增强àFIBF - 业务事务事件

点击菜单“设置à产品à客户的”进入产品标识维护画面。

FI系统增强介绍【05业务交易事件BTE】

图 12 ‑24

返回BTE配置初始画面后,点击菜单“设置à发布&订阅模块”,进入BTE配置画面。

FI系统增强介绍【05业务交易事件BTE】

图 12 ‑25

执行事务码SE37编写增强函数的代码。

FI系统增强介绍【05业务交易事件BTE】

图 12 ‑26

执行事务码F-02过账供应商发票,检查BTE效果。

FI系统增强介绍【05业务交易事件BTE】

图 12 ‑27

*************************************************

 

posted @ 2017-11-29 16:52  以成Ronny  阅读(8114)  评论(0编辑  收藏  举报