AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable
Sent: 2017年1月19日 13:28
Transaction的status profile上可以配這么一個東西: 但是我們現在的ZSRV上沒有配任何status profile… 這個to be distributed即使設成Forbidden一樣會發, 下圖是我測試的status profile,配在AG9的ZSRV上。代碼里寫的是如果status是for postprocessing I1143就不發,我沒有在代碼里看到檢測 to be distributed 的地方。
如果你們可以成功重現不讓One order通過middleware 往outbound queue發數據,麻煩告訴我詳細操作步驟。
iv_no_bdoc_send
lv_send_bdoc
現在差異就是:
- 配了status profile,訂單能編輯
- Status profile為空,則不能編輯
Status profile為空,點Edit后Error message 是在這個IF里拋得。只要order的狀態帶有transferring,則報error message
配了status profile時,order save后狀態是I 1002, E 0001, 不含transferring狀態,所以不報錯。
沒配PROFILE, 則save后狀態如下,包含I1054 transferring,所以報錯。
所以問題根源就是搞清楚報錯order時,這個status遷移是怎么實現的。
Service order transaction type若不維護任何status profile,則save之后無法編輯,點edit 時報error message
One order在edit button點擊時會check order是否含有transferring狀態,如果有,報error message
n 兩種情況下,save order時系統都會試圖去給order設置transferring狀態,但是只有第一種情況會設置成功。
第二種情況,因為status profile里forbidden flag(后臺value:3)的存在,
檢測程序里檢測到這個3,就會拒絕修改,所以order狀態不會變成transferring,所以UI能edit
有兩種solution disable這個行為:(1) CRM_ORDER_SAVE call line 56行的CRM_ORDER_SAVE_OW時,IV_NO_BDOC_SEND沒有指定value,所以傳進來的是默認值ABAP_FALSE,
這里我們強制改成TRUE, 就會破壞要上傳的那三個條件的第一個,導致不會進入上傳的分支。
(2) 如果只是想disable 某種特定transaction type的document,call這個function module:
CRM_ORDER_SET_NO_BDOC_SEND_OW, 輸入order的guid,會添加一行entry到GT_NO_BDOC_SEND里,
這樣會破壞IF判斷里中間那個條件,也能實現不上傳的目的。
條件2少截一張圖:
條件2: LV_SEND_BDOC = TRUE
讀這個global的internal table,如果讀不到,置為TRUE,AG9上讀不到,所以為true,這個條件也滿足了。
line 325的function module會負責通過outbound queue往外發,
只有當line 321的IF里的三個條件同時滿足才會進入:
條件1: IV_NO_BDOC_SEND = FALSE, AG9上這個參數用的默認參數false,滿足
條件2: LV_SEND_BDOC = TRUE
讀這個global的internal table,如果讀不到,置為TRUE,AG9上讀不到,所以為true,這個條件也滿足了。
條件3: LV_SKIP_ASYNCRONOUS_FUNCTION = INITIAL
如果該order的狀態置為POST PROCESSING, 則該變量值為true,但是AG9上我們的status是open,所以這個條件也滿足
三個條件同時滿足,所以通過middleware里往outbound queue發數據。
如何避免這個行為?根據代碼分析,破壞IF里三個條件任意一個即可。通過debug可知破壞第二個條件最容易。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯 QQ Windows 全新架构版
- 下一篇: 协作机器人的特点是什么