業務數據工具集BDT(Business Data Toolset)是一套集成的封裝式的開發模型,主要用于維護復雜的主數據或簡單的事務型數據。BDT除了包含對話界面的操作,同時還支持直接數據錄入和函數操作。BDT集成了SAP的其他技術功能,如變更管理、基于字段組的輸出控制、權限控制、存檔功能。BDT還集成了與BW的接口程序,BDOC類型的接口程序、XIF類型的接口函數。BDT具有一整套的配置工具和核心控制程序,然后配合具有規范接口的基于事件的函數集合,允許快速規范開發自己的整套應用或者對現有的應用進行不同層次的配置和增強.這些增強不會涉及直接更改系統核心源代碼,因而可以高效地利用這套模型的強大功能。BDT是在SAP CRM產品的集成業務伙伴對象和業務伙伴關系對象的實現過程中研制出來的,并完善了VET和EEWB兩個工具。可視化配置工具VCTOfisual Configu—ration T001)實現了類似所見及所得的屏幕配置。因為該工具比較簡單也有一定的局限性,本文不展開。簡易增強工作臺EEWB(Easy Enhancement Workbench)有增加新字段和創建新透明表兩種模式。通過一個向導,在回答完所有問題后,系統會自動產生一系列的程序代碼。可以對產生的程序做一些變更和完善,以滿足個性化需要。
BDT代表了SAP ERP規范化開發的一個方向。BDT成型后。在SAP內部被一些行業解決方案和主要合作伙伴積極采用,如銀行業、保險業、房地產業、校園管理等領域的解決方案,所以應用BDT的機會越來越多了。但是目前國內的用戶還很少,并且大多滿足于使用其標準功能,而敢于采用BDT開發整套應用的還沒有。
BIY的整套封裝式模型包含大量的配置(IMG)、用戶出口、程序、函數和工具。本文以核心概念和應用實例為主,具體的細節可以參照SAP ERP手冊。
1 基本概念
1.1 基本概念
一個主數據由一個關鍵字來惟一地識別它。但是還有一些其他的標準來區分和約束它,這就是差異類型(Differentiation)。差異類型可以理解為一個組織架構或者其他的決定因素。它在創建該主數據的初始屏幕時就要確定,決定了后續的維護界面和內容。
應用對象是一類數據的抽象名,如業務伙伴(BUPA)、業務伙伴關系(BUPR)、銀行賬號(BKKA)、合同賬號(FICA)。它被分配給差異類型。有些具體對象允許有多個差異類型實例,如業務伙伴有多個角色;有些具體對象只允許有一個差異類型實例。應用對象的操作模式如創建、修改、顯示等以及其他的控制配置均和應用對象聯系起來。需要定義應用對象關系之間允許的差異類型和缺省的差異類型。
1.2 交互控制
1.2.1 數據結構
BDT的主數據可以保存在很多個有相似關鍵字的透明表(數據庫表)中。每個表都有相對應的讀取和保存函數。同時有一批數據結構用于接口定義和屏幕輸出。通過數據字典、檢查表和搜索幫助可以方便地實現在線輸入幫助和檢查。
1.2.2 屏幕控制
屏幕顯示的基本要素是視圖(View),實際上就是子屏幕。通過調用函數BUS_PBO和BUS_PAI實現PBO和PAl,并規范PBO和PAI的程序。主要的流程控制、屏幕顯示以及各種檢查和缺省都在視圖的程序中。通常一個視圖內的字段是一個字段組.通過基于字段組的輸出控制配置功能實現基于不同條件下的屏幕輸出控制。
幾個視圖組成一個塊(Section)’塊內也可以有流程控制。幾個視圖組成一個屏幕,如圖l所示。
圖1 視圖結構
屏幕次序定義了屏幕出現的次序,如圖2所示。屏幕次序可以分成主屏幕次序和輔助屏幕次序。屏幕次序可以分給不同種類的對象,如不同角色的業務伙伴。每個屏幕和塊都有標題,每個屏幕也對應一個功能碼。BDT有標準的菜單,用戶也可以增加功能碼到菜單中。
圖2 屏幕次序
1.2.3 程序邏輯
BDT的交互控制程序定義了大量的事件函數,流程圖如圖3所示,每一個事件對應一個函數,開發人員可以通過更改這些函數來控制交互過程。這些函數有明確的命名規范,為<應用>一<應用對象>_EVENT一<事件名>。這些函數被BDT的核心程序調用。
1.2.4 其他
數據分割是BDT的一個重要概念。每一個應用對象都包含很多可以維護的數據,但并不是每一個主數據都允許顯示和維護所有的字段。數據分割就是進行這樣的區分。業務伙伴的角色就是數據分割,不同的角色有不同的主數據,同一個對象允許是多個角色。數據分割的方法是由應用對象決定的。
BDT中數據的保存并不是以屏幕為單位的。而是把數據保存在全局變量中,最后在DSAVE事件中保存。這樣的機制甚至允許多個有關系的應用對象按一定的次序共同創建或共同取消。
2 客戶項目中BDT的應用實例
某客需要對于業務伙伴的定義進行增強。首先創建角色最終用戶,并進行字段增強。業務伙伴字段的增強采用EEWB的工具產生BDT的各種程序和函數,接著做一些簡單的修改,然后通過業務伙伴的配置把它們合理地顯示在屏幕上。
2.1 運行EEWB和后續調整
運行事務代碼EEWB,進入簡易增強工作臺。創建針對業務伙伴的增強項目ZFVW—BUPA一01。針對定義的每一個視圖創建一個子對象,運行一次向導。每一個視圖對應一個字段集合和權限對象等,分得細有利于控制。至于屏幕的顯示可以通過配置(IMG)來調整。
圖3 流程圖
在本案例中,針對單選項或簡單輸入項,采用對表BUT000添加字段的方法。舉例客戶付款方式。在向導中定義字段名、字段類型、檢查表名、抬頭名、不需要有效期控制、需要BW集成,完成后系統會自動產生數據字典、數據結構、檢查表、子屏幕(視圖)、子屏幕的PBO和PAJ、針對于事件DLVEl、DSAVB、ISDST、ISSl.A andXCHNG的函數、直接操作的BAPI函數、現有BDOC自動擴展、在BW的數據源0BPARTNER增加字段。產生的程序屬于自開發程序。
EEWB結束后,首先激活檢查表的維護,然后使用事務代碼SM30維護可選項。例如維護客戶付款方式:00一其他;Ol一分期付款;02一全款;03一租賃購買;這樣就形成了如圖4的單選項。針對復雜的運用,可能需要修改和創建針對特定事件的函數,如擴展性檢查等。
圖4 客戶付款方式選擇界面
在本案例中希望聯系方式和方便聯系時間是多選項。所以采用創建新透明表的方法。在向導中定義字段名、字段類型、檢查表名、抬頭名、不需要有效期、需要BW集成、需要BDOC集成,完成后系統會自動產生數據字典、數據結構、檢查表、子屏幕(視圖)、子屏幕的PBO和PAI、針對于事件DLVEl、DLVE2、DCHK、CHGDl、CHGIM、DSAVC、DSAVE、DTAKE、FCODE、ISDAT、ISSTA和XCHNG的函數,直接操作的BAPI函數、BDOC接口函數,歸檔函數、變更記錄管理函數、在BW的數據源0BPARTNER增加字段。
系統產生的希望聯系方式和方便聯系時間只有一列,沒有文本顯示,通常需要修改系統產生的程序以改進顯示效果。以希望聯系方式為例說明如下。首先在產生的屏幕結構gty—dynpstruc中增加字段TEXT like ZTB0000YQJCXOT—text。
在產生的函數組的屏幕0100中增加輸出元素:ZTBOOOOYQJCXOT—text。這樣就調整好了子屏幕。接著在PAl中,當用戶選擇了希望訪問方式后讀取文本。
最后在函數ZZ06J—BUPA—PBO—Z06J0100中添加類例程序。
對于復雜的應用,需要修改和創建針對特定事件的函數,并且調整會比較多,例如和其他數據庫表關聯后讀取數據和保存數據。如果要使用BW和BDOC,也需要根據SAP的手冊傲一些配置和激活。
2.2 區域菜單BUPT內的配置
區域菜單BUPT包含了所有BDT業務對象中業務伙伴和業務伙伴關系的配置,所以本文的路徑都在區域菜單BUPT內。本案例的配置不牽涉到創建新的應用對象、應用和分割,但是所有配置菜單都在BUPT內。首先是配置屏幕的輸出效果、參考和復制屏幕次序BUP001及其屏幕,創建自己的屏幕次序,如圖5所示,
圖5 屏幕配置
其中包含系統標準的屏幕和自定義及修改后的屏幕。SAP菜單路徑為業務合作伙伴一控制一屏幕布局一部分,業務合作伙伴一控制一屏幕布局一屏幕,業務合作伙伴一控制一屏幕順序。
定義業務伙伴視圖:最終用戶。其中定義了數據集和屏幕次序。SAP菜單路徑為業務合作伙伴一控制一可分割一業務伙伴視圖。
定義角色的基于字段組的輸出控制。SAP菜單路徑為IMG一交叉應用組件一SAP業務伙伴一業務合作伙伴一基本設置一字段分組一配置每個商業伙伴角色的字段屬性。
定義角色最終用戶的專用事務代碼。這樣可以提高最終用戶的創建、修改、顯示的速度。SAP菜單路徑為業務合作伙伴一控制一應用程序事務。
3 校園管理解決方案中BDT應用實例
在校園管理的解決方案中,學生主數據也是一種業務伙伴。采取案例1中的方法產生和配置好業務伙伴學生后,根據行業特點做一些較深入的開發。
3.1 更改初始化屏幕
業務伙伴創建時需要指定角色、種類、組、類型。但是對于學生主數據來說,這些概念有一定的擴展和轉換。需要根據其他的一些要素來自動決定上述關鍵信息。于是需要定義一些配置表,開發函數PMIQ—BUPA—CREATE—STUDENT_BUF在BDT運行開始時被調用。屏幕次序中的初始化屏幕也需要改變。該函數的定義如下:
輸入條件:學生的ID,操作類型(創建、修改、顯示),有效期。
程序運行的結果是BDT的實例被創建,開始進入后續界面。
程序流程:
BDT_CLASS_INIT初始化BDT的分類
BDT_INSTANCE—CREATE創建BDT的實例
BDT_INSTANCE_ATTRIBUTES—SET定義操作類型和顯示控制參數
BDT—HEADER—CHECK根據自定義的配置表和其他約束條件,推導出業務伙伴的角色、種類、組、類型
BUS—VALDT—SET進行有效期控制。創建時一定是當前日期。修改時可以定義當前日期或未來的日期,顯示時任何日期都允許
BDT_DATA—READ讀出相關的數據。在創建時作為缺省數據。在修改和顯示時,是系統內一致的數據。
3.2 創建自己的輔助屏幕次序
需要根據一批已經創建完成的屏幕組成一個輔助屏幕次序,這些屏幕采用制表頁的形式出現,并增加了一些自己的邏輯,所以采用自編程序調用BDT的程序的方法。函數PMIQ—BUPA—BDT_SCREEN—NAVIGATE用來控制屏幕的切換。這個函數調用了函數BDT_FUNCTION—NAVIGATE:它指定了屏幕號、屏幕類型、光標位置。BDT_SCREEN—ATIRIBUTES—GET:使用它激活了一些按鈕等。這個函數用于屏幕的PBO。創建函數PMIQ—BUPA—BDT—SCREEN—PBO來控制PBO,該函數調用了函數BDT_SCREEN—PBO—PROCESS。創建函數PMIQ—BUPA—BDT_SCREEN_SEL_PBO,在PBO中它調用函數BDT_SCKEEN_SELECT_PBO得到BIYI"子屏幕號,然后再調用函數組BUSS中對應屏幕的PBO函數。創建函數PMIQ—BUPA—OK_CODE_SET,由這個函數把OK—CODE傳遞給BDT。
創建函數PMIQ—BUPA—BDT—SCREEN—SEL_PAI,在PAI中調用函數BDT_SCREEN_S;ELECT_PAl得到BDT子屏幕號,然后再調用函數組BUSS中對應屏幕的PAI函數。
3.3 函數PMIQ—BUPA—BDT—SUBSCREEN—PAl
這是主要的PAI函數。它首先得到了光標的位置,處理完BDT的PAl函數后處理其他的功能碼。用戶退出BDT時,停止BDT實例。
3.4 主數據保存
因為在學生主數據保存的同時。需要創建學生財務賬號。所以在BDT事件DSAVB、DSAVC、DSAVE完成后,再調用一個函數去創建學生財務賬號。
BDT是一個封裝式的應用開發模型。它包含大量的配置(IMG)、用戶出口、程序、函數和工具,并且單純的開發可能看不到效果或者對其他邏輯產生影響,BDT確實是一個有效的、復雜的工具。從SAP正在開發和完善的行業解決方案中大量采用BDT可見一斑。有些企業和SAP合作伙伴采用SAP系統平臺開發自己特有的局部解決方案,BDT是一個可以考慮的工具。對于其他應用開發平臺供應商而言,它也是一個可以借鑒的開發模型。、
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/