`
JerryWang_SAP
  • 瀏覽: 527537 次
  • 性別: Icon_minigender_1
  • 來自: 西安
文章分類
社區版塊
存檔分類
最新評論

如何阻止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的原創文章,請關注公眾號"汪子熙":

0
0
分享到:
評論
Global site tag (gtag.js) - Google Analytics 开心农场种蔬菜赚钱 天天捕鱼电玩辅助 永久固定公式规律大全 欢乐捕鱼大战内测版 麻将连连看规则 熊猫棋牌app 分析股票市场走势 手机上海明星麻将怎么赢 顶尖一肖二码默认版块 篮球打气筒怎么用 600157股票行 辉煌棋牌只输不赢 内部期期公开一波中特 闲来贵州捉鸡麻将下 pk10计划 gpk钱龙捕鱼捕鱼漏洞 广东麻将推倒胡技巧