bdc在fico模組是經常用到的,用於批量過賬程式時使用的,但是穩定性不如使用bapi的好,但是bdc可以有多種t-code進行過賬,也有不同的模式,功能也不錯,但是在寫程式或者是出現問題的時候需要考慮下面幾個問題:
1、可以在程式加入bdc的模式選擇,預設為n模式,但是可以選擇a模式,方便除錯。當然這個也可以debug進去之後進行改值。
2、loop裡面有call bdc的情況,在每一次call
transaction 之後,可以適當延時幾秒,可以防止在有些t-code過賬的時候出現profit center被鎖著的情況:
call
transaction
'f-30'
using bdcdata
mode p_mode
messages into l_bdcmsg.
wait
up to p_wait seconds.
有時候,當你直接跑,過賬失敗,而你debug跑的話就成功,也可以看看是不是鎖的問題,然後頁可以考慮下對兩次生成憑證進行延時。
3、可能會出現的a模式下過賬成功,n模式過賬不成功:
原因是:有些事你的bdc在這一屏沒有這個字段,然後會返回乙個這個欄位不存在的s型別的message,然後bdc退出了,就沒有完全成功過賬。
同乙個螢幕,不同的過賬碼+科目可能有不同的字段。所以錄屏完寫程式的時候,這個游標的問題,最好還是要有if判斷或者是基本排除游標,這個基本沒有用。在寫bdc程式的時候,最好自己要對這個t-code的不同條件下會有不一樣的螢幕顯示有一定的了解,然後寫程式的時候一定要注意使用if語句,去判斷在這個公司**下,這個螢幕有沒有這個字段。
4、loop裡面過賬完,要記得清bdcdata,和bdcmessage(這個就是低階錯誤了)
5、過賬完了,生產的message裡面,提取憑證號:
loop
at l_bdcmsg.
call
function
'message_text_build'
exporting
msgid = l_bdcmsg-msgid
msgnr = l_bdcmsg-msgnr
msgv1 = l_bdcmsg-msgv1
msgv2 = l_bdcmsg-msgv2
msgv3 = l_bdcmsg-msgv3
msgv4 = l_bdcmsg-msgv4
importing
message_text_output = wa_log-msg.
其中,l_bdcmsg
-msgv1就是返回的憑證號!
6、遇見bdc程式跑了,報錯了,最好跑a模式去檢視報錯處在哪個環節了!
7、乙個fb60的bdc程式,有些成功並返回了憑證號,有些成功生成了憑證號,但是沒有返回message。
reason:這種問題通常是一些增強導致。
方法:在s f5 312 message前面設斷點,然後跑n模式,檢視沒有返回憑證號的情況,是在前面那裡跳出了而沒有跑這個312的message。通常都是增強導致。(遇到乙個是增強裡面的更新表,然後commit work的時候直接跳出了,但是實際表已經更新成功了。因為modify是不需要commit work的。因為通過call transaction fb60的話,裡面有個選項opt,通過這個選項可以選擇執行commit work是否跳出。這也就是為什麼fb60直接跑這段,即使有commit work也沒有問題,但是通過call transaction會有問題。)
Object c block需要注意的幾點問題
摘自 date 2015 12 4 1.block定義 1 說明 a.block是oc中的一種資料型別,在ios開發中被廣泛使用 b.是block的特有標記 c.block的實現 包含在 之間 d.大多情況下,以內聯inline函式的方式被定義和使用 e.block與c語言的函式指標有些相似,但使用...
需要注意的問題
決策樹id3和c4.5的差別?各自優點?boost演算法 cart 回歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則 gbdt與隨機森林演算法的原理以及區別。優化演算法中常遇到的kkt條件?作用是?最近鄰演算法knn 分類與回歸 l1和l2函式?l1和l2正則項的比較,如何解決 l1 求導困難...
編寫shell程式 指令碼時需要注意的幾個問題
在實際工作中運用shell程式時,總結的幾個經常忽視的問題,如果不注意很可能導致一些麻煩事 判斷使用者的屬性,比如uid gid,甚至是使用者名稱 使用者互動 能不互動就不互動吧,鬼知道使用者會輸入什麼 另一方面,加強正規表示式的學習,一般用來作輸入邊界測試很好用 注意程式的可維護性,能函式化的語句...