如何阻止SAP CRM订单创建好之后,自动被置为传输状态这一行为
AG9 Service order創建好之后,要自動通過middleware傳其他系統去,這個behavior我們現在記錄下來了么?知道怎么disable不?
Transaction的status profile上可以配這么一個東西:
但是我們現在的ZSRV上沒有配任何status profile…
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可知破壞第二個條件最容易,我正在看相關的配置。
條件2少截一張圖:
條件2: LV_SEND_BDOC = TRUE
讀這個global的internal table,如果讀不到,置為TRUE,AG9上讀不到,所以為true,這個條件也滿足了。
有兩種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判斷里中間那個條件,也能實現不上傳的目的。
這兩種技術上都行。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的如何阻止SAP CRM订单创建好之后,自动被置为传输状态这一行为的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下日志自动清理(find删除3
- 下一篇: 果壳CEO姬十三成立未来光锥前沿科技基金