天天看點

SAP 業務交易事件BTE(Business Transaction Event)

業務交易事件BTE

BTE是什麼,當然不是BT的ERP, E文全稱Business Transaction Event,業務交易事件,我們知道一般的增強(Tcode:SMOD|CMOD)依舊使用ABAP,BTE則可提供了RFC調用其它産品的可能(Tcode:FIBF),舉一個檢查物料主資料的執行個體說明BTE用法,簡化為三個步驟.

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

SAP 業務交易事件BTE(Business Transaction Event)

圖1,建立産品ZMM01-2,選圖1-[2]表示激活.

第一步:連接配接事件到産品(Tcode:BF34).

SAP 業務交易事件BTE(Business Transaction Event)

系統預定義了很多事件,00001250是儲存物料主資料的事件,系統似乎并沒有為物料主資料的維護設定增強而是留下了這個BTE,輸入函數ZMM01_2_CHECK.

第三步:建立檢查函數(Tcode:SE37).

SAP 業務交易事件BTE(Business Transaction Event)

你可以輸入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可自定義和檢視系統的消息,

SAP 業務交易事件BTE(Business Transaction Event)

圖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:哪個使用者最後更改了消息,從此表能找到.

SAP 業務交易事件BTE(Business Transaction Event)

設定可配置消息

圖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

SAP 業務交易事件BTE(Business Transaction Event)

圖3是OMRM配置後勤發票校驗的消息的,可以在供應商主設計設定其發票校驗是” 基于收貨的發票驗證”->自動帶到PO->設定M8 504|M8081為錯誤消息,這樣如果不企業未收到貨三單不比對将不能進行發票校驗确定應付.

繼續閱讀