一
前言
SAPERP系統中的大部分的單據都會提供對應的BAPI函數.
通過事務代碼BAPI可以查找到標準業務的BAPI函數.但有些業務單據可能無法查找對應的BAPI函數,即使小夥伴google和bing也無法幫助你.
此時BDC就成為瞭一個必選項
本文主要介紹用BDC開發程序的步驟及註意事項
二
定義
( BDC – Batch Data Communication)
一種調用事務代碼的方式, 通過參數BDC_TAB傳遞調用過程中所有屏幕的內容及操作.
因為屏幕處理過程繁瑣且復雜,所以SAP提供瞭一個工具SHDB,用於輔助用戶在執行事務代碼時記錄處理過程.
二
記錄
TCODE: SHDB
記錄時,勾選
不是批處理會話
模擬後臺模式
這個很重要,務必勾選,減少可能的錯誤.
點擊開始記錄時,系統會執行填寫的事務代碼. 在記錄中盡量最簡化與系統的交互過程.
三
完成
完成記錄後, 系統會生成一個記錄信息.
這份信息包含瞭執行事務代碼過程中的所有輸入內容及操作過程.
可以通過點擊處理按鈕驗證記錄是否能再次成功執行
b1b881e4869a98a86917403651041e48
四
函數
通過按鈕<功能模塊>可以把記錄的信息創建一個函數. 後續改寫函數可以完成業務動作的封裝.
7f9188d1505c6cc78e1a57b2c10df894
五
問題
在SHDB中執行能成功創建單據
但是通過函數調用卻總會報錯. 特定屏幕無批輸入數據
這種問題不是一定會產生的.
問題產生的原因是標準程序在執行過程中會檢查一些系統環境變量,比如 SY-BINPT(批輸入處理活動) ,根據該環境變量,改變屏幕處理過程.
所以需要確保記錄和執行的過程中這些環境變量一致.
1579b42abe503e6b49125234a8ec57c3
六
分析
使用SHDB處理時, 勾選瞭
不是批處理會話
模擬後臺模式
但是生成的函數沒有給出這個選項.
查看CALL TRANSACTION的幫助,可以看到在OPTIONS FROM opt 子句中可以填寫這些內容
七
改造
復制include bdcrecxy-> 自定義的include 名稱,並使用
改進 CALL TRANSACTION 語句添加 options from opt 子句
添加參數 不是批處理會話, 模擬後臺處理
把BDC的返回調整成BAPIRET2的返回.
八
缺點
BDC嚴格按照記錄的順序執行.
如果因為填寫的內容或配置改變導致瞭屏幕順序的變化,或者意外的彈窗信息都會導致BDC處理失敗.
實踐中,非必要不采用BDC調用系統事務.
其實某些早期的BAPI函數內部也封裝的BDC調用. 隻是標準函數考慮瞭屏幕執行的所有過程,不會出現意外.
九
總結
盡量用標準BAPI函數,不使用BDC.
BDC處理可以處理大部分SAP標準程序,但是一些應用瞭OO對象(比如 ALV修改/顯示數據)的事務無法處理.
因為這類事務調用瞭GUI的前臺顯示類,而BDC需要後臺處理-無法和GUI交互.
BDC記錄及後臺處理時,最好設置參數 不是批處理會話 / 模擬後臺模式. 這樣才能確保記錄及處理成功.
約定
如果你對這篇文章感興趣,請幫忙點贊,在看,分享.
(如果你真的喜歡這篇文章,請記得回來打個賞,作為支持我繼續下去的動力,這是一個正反饋過程. 越多的人打賞,作者越有動力分享,讀者就能享受更多的福利.畢竟打賞的金額富不瞭我,窮不瞭你,卻能支持這個公眾號長久發文.)
請微信聯系管理員:
syjf1976
sharry_xlp
Yannick_Duan
申請進入公眾號討論群提問或者參與話題討論
上一篇
下一篇