《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > SAP BDT業(yè)務(wù)數(shù)據(jù)工具集的開發(fā)原理及應(yīng)用實例

SAP BDT業(yè)務(wù)數(shù)據(jù)工具集的開發(fā)原理及應(yīng)用實例

2009-06-24
作者:朱羽冰

  摘 要:介紹SAP BDT(業(yè)務(wù)數(shù)據(jù)工具集)這一集成的封裝式開發(fā)模型的原理和開發(fā)方法。該模型是在SAP CRM的集成業(yè)務(wù)伙伴的實現(xiàn)中研制出來的,在國內(nèi)SAP實施項目中才剛剛開始被使用。給出的實際案例描述了高效深入地使用BDT技術(shù)的具體步驟,集成了BDT和自己的程序。為SAP的用戶和實施伙伴進(jìn)行客戶和行業(yè)定制化開發(fā)提供指導(dǎo)作用。
  關(guān)鍵詞:業(yè)務(wù)數(shù)據(jù)工具集;業(yè)務(wù)伙伴;簡易增強(qiáng)工作臺

?

  業(yè)務(wù)數(shù)據(jù)工具集BDT(Business Data Toolset)是一套集成的封裝式的開發(fā)模型,主要用于維護(hù)復(fù)雜的主數(shù)據(jù)或簡單的事務(wù)型數(shù)據(jù)。BDT除了包含對話界面的操作,同時還支持直接數(shù)據(jù)錄入和函數(shù)操作。BDT集成了SAP的其他技術(shù)功能,如變更管理、基于字段組的輸出控制、權(quán)限控制、存檔功能[1]。BDT還集成了與BW的接口程序,BDOC類型的接口程序、XIF類型的接口函數(shù)。BDT具有一整套的配置工具和核心控制程序,然后配合具有規(guī)范接口的基于事件的函數(shù)集合,允許快速規(guī)范開發(fā)自己的整套應(yīng)用或者對現(xiàn)有的應(yīng)用進(jìn)行不同層次的配置和增強(qiáng),這些增強(qiáng)不會涉及直接更改系統(tǒng)核心源代碼,因而可以高效地利用這套模型的強(qiáng)大功能。
  BDT是在SAP CRM產(chǎn)品的集成業(yè)務(wù)伙伴對象和業(yè)務(wù)伙伴關(guān)系對象的實現(xiàn)過程中研制出來的,并完善了VCT和EEWB兩個工具??梢暬渲霉ぞ遃CT(Visual Configuration Tool)實現(xiàn)了類似所見及所得的屏幕配置。因為該工具比較簡單也有一定的局限性,本文不展開。簡易增強(qiáng)工作臺EEWB(Easy Enhancement Workbench)有增加新字段和創(chuàng)建新透明表兩種模式。通過一個向?qū)В诨卮鹜晁袉栴}后,系統(tǒng)會自動產(chǎn)生一系列的程序代碼??梢詫Ξa(chǎn)生的程序做一些變更和完善,以滿足個性化需要。
BDT代表了SAP規(guī)范化開發(fā)的一個方向。BDT成型后,在SAP內(nèi)部被一些行業(yè)解決方案和主要合作伙伴積極采用,如銀行業(yè)、保險業(yè)、房地產(chǎn)業(yè)、校園管理等領(lǐng)域的解決方案,所以應(yīng)用BDT的機(jī)會越來越多了。但是目前國內(nèi)的用戶還很少,并且大多滿足于使用其標(biāo)準(zhǔn)功能,而敢于采用BDT開發(fā)整套應(yīng)用的還沒有。
  BDT的整套封裝式模型包含大量的配置(IMG)、用戶出口、程序、函數(shù)和工具。本文以核心概念和應(yīng)用實例為主,具體的細(xì)節(jié)可以參照SAP手冊[2]。 ?????
1 基本概念
1.1 基本概念
  一個主數(shù)據(jù)由一個關(guān)鍵字來惟一地識別它。但是還有一些其他的標(biāo)準(zhǔn)來區(qū)分和約束它,這就是差異類型(Differentiation)。差異類型可以理解為一個組織架構(gòu)或者其他的決定因素。它在創(chuàng)建該主數(shù)據(jù)的初始屏幕時就要確定,決定了后續(xù)的維護(hù)界面和內(nèi)容[2-3]。
  應(yīng)用對象是一類數(shù)據(jù)的抽象名,如業(yè)務(wù)伙伴(BUPA)、業(yè)務(wù)伙伴關(guān)系(BUPR)、銀行賬號(BKKA)、合同賬號(FICA)。它被分配給差異類型。有些具體對象允許有多個差異類型實例,如業(yè)務(wù)伙伴有多個角色;有些具體對象只允許有一個差異類型實例。應(yīng)用對象的操作模式如創(chuàng)建、修改、顯示等以及其他的控制配置均和應(yīng)用對象聯(lián)系起來。需要定義應(yīng)用對象關(guān)系之間允許的差異類型和缺省的差異類型[4]。
  應(yīng)用是指某應(yīng)用對象的一種具體的操作和功能。
1.2 交互控制
1.2.1 數(shù)據(jù)結(jié)構(gòu)

  BDT的主數(shù)據(jù)可以保存在很多個有相似關(guān)鍵字的透明表(數(shù)據(jù)庫表)中。每個表都有相對應(yīng)的讀取和保存函數(shù)。同時有一批數(shù)據(jù)結(jié)構(gòu)用于接口定義和屏幕輸出。通過數(shù)據(jù)字典、檢查表和搜索幫助可以方便地實現(xiàn)在線輸入幫助和檢查。
1.2.2 屏幕控制
  屏幕顯示的基本要素是視圖(View),實際上就是子屏幕。通過調(diào)用函數(shù)BUS_PBO和BUS_PAI實現(xiàn)PBO和PAI,并規(guī)范PBO和PAI的程序。主要的流程控制、屏幕顯示以及各種檢查和缺省都在視圖的程序中。通常一個視圖內(nèi)的字段是一個字段組,通過基于字段組的輸出控制配置功能實現(xiàn)基于不同條件下的屏幕輸出控制。
  幾個視圖組成一個塊(Section), 塊內(nèi)也可以有流程控制。幾個視圖組成一個屏幕,如圖1所示。

?


  屏幕次序定義了屏幕出現(xiàn)的次序,如圖2所示。屏幕次序可以分成主屏幕次序和輔助屏幕次序。屏幕次序可以分給不同種類的對象,如不同角色的業(yè)務(wù)伙伴。


  每個屏幕和塊都有標(biāo)題,每個屏幕也對應(yīng)一個功能碼。BDT有標(biāo)準(zhǔn)的菜單,用戶也可以增加功能碼到菜單中。
1.2.3 程序邏輯
  BDT的交互控制程序定義了大量的事件函數(shù),流程圖如圖3所示,每一個事件對應(yīng)一個函數(shù),開發(fā)人員可以通過更改這些函數(shù)來控制交互過程。這些函數(shù)有明確的命名規(guī)范,為<應(yīng)用>_<應(yīng)用對象>_EVENT_<事件名>。這些函數(shù)被BDT的核心程序調(diào)用。

?


1.2.4 其他
  數(shù)據(jù)分割是BDT的一個重要概念。每一個應(yīng)用對象都包含很多可以維護(hù)的數(shù)據(jù),但并不是每一個主數(shù)據(jù)都允許顯示和維護(hù)所有的字段。數(shù)據(jù)分割就是進(jìn)行這樣的區(qū)分。業(yè)務(wù)伙伴的角色就是數(shù)據(jù)分割,不同的角色有不同的主數(shù)據(jù),同一個對象允許是多個角色。數(shù)據(jù)分割的方法是由應(yīng)用對象決定的。
  BDT中數(shù)據(jù)的保存并不是以屏幕為單位的,而是把數(shù)據(jù)保存在全局變量中,最后在DSAVE事件中保存。這樣的機(jī)制甚至允許多個有關(guān)系的應(yīng)用對象按一定的次序共同創(chuàng)建或共同取消[5]。
2 客戶項目中BDT的應(yīng)用實例
  某客需要對于業(yè)務(wù)伙伴的定義進(jìn)行增強(qiáng)。首先創(chuàng)建角色最終用戶,并進(jìn)行字段增強(qiáng)。業(yè)務(wù)伙伴字段的增強(qiáng)采用EEWB的工具產(chǎn)生BDT的各種程序和函數(shù),接著做一些簡單的修改,然后通過業(yè)務(wù)伙伴的配置把它們合理地顯示在屏幕上。
2.1 運行EEWB和后續(xù)調(diào)整??????
  運行事務(wù)代碼EEWB,進(jìn)入簡易增強(qiáng)工作臺。創(chuàng)建針對業(yè)務(wù)伙伴的增強(qiáng)項目ZFVW_BUPA_01。針對定義的每一個視圖創(chuàng)建一個子對象,運行一次向?qū)?。每一個視圖對應(yīng)一個字段集合和權(quán)限對象等,分得細(xì)有利于控制。至于屏幕的顯示可以通過配置(IMG)來調(diào)整。
  在本案例中,針對單選項或簡單輸入項,采用對表BUT000添加字段的方法。舉例客戶付款方式。在向?qū)е卸x字段名、字段類型、檢查表名、抬頭名、不需要有效期控制、需要BW集成,完成后系統(tǒng)會自動產(chǎn)生數(shù)據(jù)字典、數(shù)據(jù)結(jié)構(gòu)、檢查表、子屏幕(視圖)、子屏幕的PBO和PAI、針對于事件DLVE1、DSAVB、 ISDST、 ISSTA and XCHNG的函數(shù)、直接操作的BAPI函數(shù)、現(xiàn)有BDOC自動擴(kuò)展、在BW的數(shù)據(jù)源0BPARTNER增加字段。產(chǎn)生的程序?qū)儆谧蚤_發(fā)程序。
  EEWB結(jié)束后,首先激活檢查表的維護(hù),然后使用事務(wù)代碼SM30維護(hù)可選項。例如維護(hù)客戶付款方式:00—其他;01—分期付款;02—全款;03—租賃購買;這樣就形成了如圖4的單選項。針對復(fù)雜的運用,可能需要修改和創(chuàng)建針對特定事件的函數(shù),如擴(kuò)展性檢查等。

?


  在本案例中希望聯(lián)系方式和方便聯(lián)系時間是多選項,所以采用創(chuàng)建新透明表的方法。在向?qū)е卸x字段名、字段類型、檢查表名、抬頭名、不需要有效期、需要BW集成、需要BDOC集成,完成后系統(tǒng)會自動產(chǎn)生數(shù)據(jù)字典、數(shù)據(jù)結(jié)構(gòu)、檢查表、子屏幕(視圖)、子屏幕的PBO和PAI、針對于事件DLVE1、DLVE2、DCHK、CHGD1、CHGD4、DSAVC、DSAVE、DTAKE、FCODE、ISDAT、 ISSTA和 XCHNG的函數(shù),直接操作的BAPI函數(shù)、BDOC接口函數(shù),歸檔函數(shù)、變更記錄管理函數(shù)、在BW的數(shù)據(jù)源0BPARTNER增加字段。
  系統(tǒng)產(chǎn)生的希望聯(lián)系方式和方便聯(lián)系時間只有一列,沒有文本顯示,通常需要修改系統(tǒng)產(chǎn)生的程序以改進(jìn)顯示效果。以希望聯(lián)系方式為例說明如下。
  首先在產(chǎn)生的屏幕結(jié)構(gòu)gty_dynpstruc中增加字段TEXT like ZTB0000YQJCX0T-text。
  在產(chǎn)生的函數(shù)組的屏幕0100中增加輸出元素:ZTB0000YQJCX0T-text。這樣就調(diào)整好了子屏幕。接著在PAI中,當(dāng)用戶選擇了希望訪問方式后讀取文本。
  *希望訪問方式描述?? BEGIN---------------*
  SELECT SINGLE TEXT
  INTO GT_ZBUT0000C7J51V_D-TEXT
  FROM ZTB0000YQJCX0T
  WHERE ZZTFLDRUJ81V = GT_ZBUT0000C7J51V_D-ZZTFLDRUJ81V .
  *希望訪問方式描述?? END --------------*
  最后在函數(shù)ZZO6J_BUPA_PBO_ZO6J0100中添加類例程序。
  對于復(fù)雜的應(yīng)用,需要修改和創(chuàng)建針對特定事件的函數(shù),并且調(diào)整會比較多,例如和其他數(shù)據(jù)庫表關(guān)聯(lián)后讀取數(shù)據(jù)和保存數(shù)據(jù)。如果要使用BW和BDOC,也需要根據(jù)SAP的手冊做一些配置和激活[4]。
2.2 區(qū)域菜單BUPT內(nèi)的配置
  區(qū)域菜單BUPT包含了所有BDT業(yè)務(wù)對象中業(yè)務(wù)伙伴和業(yè)務(wù)伙伴關(guān)系的配置,所以本文的路徑都在區(qū)域菜單BUPT內(nèi)。本案例的配置不牽涉到創(chuàng)建新的應(yīng)用對象、應(yīng)用和分割,但是所有配置菜單都在BUPT內(nèi)。首先是配置屏幕的輸出效果、參考和復(fù)制屏幕次序BUP001及其屏幕,創(chuàng)建自己的屏幕次序,如圖5所示,其中包含系統(tǒng)標(biāo)準(zhǔn)的屏幕和自定義及修改后的屏幕。SAP菜單路徑為業(yè)務(wù)合作伙伴→控制→屏幕布局→部分,業(yè)務(wù)合作伙伴→控制→屏幕布局→屏幕,業(yè)務(wù)合作伙伴→控制→屏幕順序。

?


  定義業(yè)務(wù)伙伴視圖:最終用戶。其中定義了數(shù)據(jù)集和屏幕次序。SAP菜單路徑為業(yè)務(wù)合作伙伴→控制→可分割→業(yè)務(wù)伙伴視圖。
  定義角色的基于字段組的輸出控制。SAP菜單路徑為IMG→交叉應(yīng)用組件→SAP 業(yè)務(wù)伙伴 →業(yè)務(wù)合作伙伴→基本設(shè)置→字段分組→配置每個商業(yè)伙伴角色的字段屬性。
  定義角色最終用戶的專用事務(wù)代碼。這樣可以提高最終用戶的創(chuàng)建、修改、顯示的速度。SAP菜單路徑為業(yè)務(wù)合作伙伴→控制→應(yīng)用程序事務(wù)。
3 校園管理解決方案中BDT應(yīng)用實例
  在校園管理的解決方案中,學(xué)生主數(shù)據(jù)也是一種業(yè)務(wù)伙伴。采取案例1中的方法產(chǎn)生和配置好業(yè)務(wù)伙伴學(xué)生后,根據(jù)行業(yè)特點做一些較深入的開發(fā)。
3.1 更改初始化屏幕
  業(yè)務(wù)伙伴創(chuàng)建時需要指定角色、種類、組、類型[4]。但是對于學(xué)生主數(shù)據(jù)來說,這些概念有一定的擴(kuò)展和轉(zhuǎn)換。需要根據(jù)其他的一些要素來自動決定上述關(guān)鍵信息。于是需要定義一些配置表,開發(fā)函數(shù)PMIQ_BUPA_CREATE_STUDENT_BUF在BDT運行開始時被調(diào)用。屏幕次序中的初始化屏幕也需要改變。該函數(shù)的定義如下:
  輸入條件:學(xué)生的ID,操作類型(創(chuàng)建、修改、顯示),有效期。
  程序運行的結(jié)果是BDT的實例被創(chuàng)建,開始進(jìn)入后續(xù)界面。
  程序流程:
  * BDT_CLASS_INIT? 初始化BDT的分類
  * BDT_INSTANCE_CREATE ?創(chuàng)建BDT的實例
  * BDT_INSTANCE_ATTRIBUTES_SET? 定義操作類型和顯示控制參數(shù)
  * BDT_HEADER_CHECK 根據(jù)自定義的配置表和其他約束條件,推導(dǎo)出業(yè)務(wù)伙伴的角色、種類、組、類型
  * BUS_VALDT_SET 進(jìn)行有效期控制。創(chuàng)建時一定是當(dāng)前日期,修改時可以定義當(dāng)前日期或未來的日期,顯示時任何日期都允許
  * BDT_DATA_READ ?讀出相關(guān)的數(shù)據(jù)。在創(chuàng)建時作為缺省數(shù)據(jù)。在修改和顯示時,是系統(tǒng)內(nèi)一致的數(shù)據(jù)。
3.2 創(chuàng)建自己的輔助屏幕次序
  需要根據(jù)一批已經(jīng)創(chuàng)建完成的屏幕組成一個輔助屏幕次序,這些屏幕采用制表頁的形式出現(xiàn),并增加了一些自己的邏輯,所以采用自編程序調(diào)用BDT的程序的方法。函數(shù)PMIQ_BUPA_BDT_SCREEN_NAVIGATE用來控制屏幕的切換。這個函數(shù)調(diào)用了函數(shù)BDT_FUNCTION_NAVIGATE:它指定了屏幕號、屏幕類型、光標(biāo)位置。BDT_SCREEN_ATTRIBUTES_GET:使用它激活了一些按鈕等。這個函數(shù)用于屏幕的PBO。
  創(chuàng)建函數(shù)PMIQ_BUPA_BDT_SCREEN_PBO來控制PBO,該函數(shù)調(diào)用了函數(shù)BDT_SCREEN_PBO_PROCESS。
  創(chuàng)建函數(shù)PMIQ_BUPA_BDT_SCREEN_SEL_PBO,在PBO中它調(diào)用函數(shù)BDT_SCREEN_SELECT_PBO得到BDT子屏幕號,然后再調(diào)用函數(shù)組BUSS中對應(yīng)屏幕的PBO函數(shù)。
  創(chuàng)建函數(shù)PMIQ_BUPA_OK_CODE_SET,由這個函數(shù)把OK_CODE傳遞給BDT。
  創(chuàng)建函數(shù)PMIQ_BUPA_BDT_SCREEN_SEL_PAI,在PAI中調(diào)用函數(shù)BDT_SCREEN_SELECT_PAI得到BDT子屏幕號,然后再調(diào)用函數(shù)組BUSS中對應(yīng)屏幕的PAI函數(shù)。
3.3 函數(shù)PMIQ_BUPA_BDT_SUBSCREEN_PAI
  這是主要的PAI函數(shù)。它首先得到了光標(biāo)的位置,處理完BDT的PAI函數(shù)后處理其他的功能碼。用戶退出BDT時,停止BDT實例。
3.4 主數(shù)據(jù)保存
  因為在學(xué)生主數(shù)據(jù)保存的同時,需要創(chuàng)建學(xué)生財務(wù)賬號。所以在BDT事件DSAVB、DSAVC、DSAVE完成后,再調(diào)用一個函數(shù)去創(chuàng)建學(xué)生財務(wù)賬號。
  BDT是一個封裝式的應(yīng)用開發(fā)模型。它包含大量的配置(IMG)、用戶出口、程序、函數(shù)和工具,并且單純的開發(fā)可能看不到效果或者對其他邏輯產(chǎn)生影響,BDT確實是一個有效的、復(fù)雜的工具。從SAP正在開發(fā)和完善的行業(yè)解決方案中大量采用BDT可見一斑。有些企業(yè)和SAP合作伙伴采用SAP 系統(tǒng)平臺開發(fā)自己特有的局部解決方案,BDT是一個可以考慮的工具。對于其他應(yīng)用開發(fā)平臺供應(yīng)商而言,它也是一個可以借鑒的開發(fā)模型。


參考文獻(xiàn)
[1]?托馬斯·H·達(dá)文波特,ERP必備指南.北京:北京機(jī)械工業(yè)出版社,2003.
[2] ?SAP AG. 在線幫助CRM5.0 BDT部分.CRM5.0 Online help BDT part.
[3]?SAP AG. CRM培訓(xùn)教材CR590[A].CRM training material CR590 BDT.
[4]?關(guān)宇平. SAP R3系統(tǒng)客戶接口程序的開發(fā)方法及實現(xiàn)[J].計算機(jī)系統(tǒng)應(yīng)用,2007,13(2):47-50.
[5]?施權(quán). 利用SAP ABAP語言解決客戶特制要求的方法[J].計算機(jī)工程,2004,30(S1):84-86.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。