日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable

發(fā)布時(shí)間:2023/12/19 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Sent: 2017年1月19日 13:28

Transaction的status profile上可以配這么一個(gè)東西: 但是我們現(xiàn)在的ZSRV上沒有配任何status profile… 這個(gè)to be distributed即使設(shè)成Forbidden一樣會(huì)發(fā), 下圖是我測試的status profile,配在AG9的ZSRV上。

代碼里寫的是如果status是for postprocessing I1143就不發(fā),我沒有在代碼里看到檢測 to be distributed 的地方。

如果你們可以成功重現(xiàn)不讓One order通過middleware 往outbound queue發(fā)數(shù)據(jù),麻煩告訴我詳細(xì)操作步驟。
iv_no_bdoc_send
lv_send_bdoc

現(xiàn)在差異就是:

  • 配了status profile,訂單能編輯
  • Status profile為空,則不能編輯
    Status profile為空,點(diǎn)Edit后Error message 是在這個(gè)IF里拋得。只要order的狀態(tài)帶有transferring,則報(bào)error message

配了status profile時(shí),order save后狀態(tài)是I 1002, E 0001, 不含transferring狀態(tài),所以不報(bào)錯(cuò)。

沒配PROFILE, 則save后狀態(tài)如下,包含I1054 transferring,所以報(bào)錯(cuò)。

所以問題根源就是搞清楚報(bào)錯(cuò)order時(shí),這個(gè)status遷移是怎么實(shí)現(xiàn)的。

Service order transaction type若不維護(hù)任何status profile,則save之后無法編輯,點(diǎn)edit 時(shí)報(bào)error message

  • 如果維護(hù)了status profile,能夠編輯
  • One order在edit button點(diǎn)擊時(shí)會(huì)check order是否含有transferring狀態(tài),如果有,報(bào)error message

    n 兩種情況下,save order時(shí)系統(tǒng)都會(huì)試圖去給order設(shè)置transferring狀態(tài),但是只有第一種情況會(huì)設(shè)置成功。
    第二種情況,因?yàn)閟tatus profile里forbidden flag(后臺(tái)value:3)的存在,

    檢測程序里檢測到這個(gè)3,就會(huì)拒絕修改,所以order狀態(tài)不會(huì)變成transferring,所以UI能edit

    有兩種solution disable這個(gè)行為:

    (1) CRM_ORDER_SAVE call line 56行的CRM_ORDER_SAVE_OW時(shí),IV_NO_BDOC_SEND沒有指定value,所以傳進(jìn)來的是默認(rèn)值A(chǔ)BAP_FALSE,
    這里我們強(qiáng)制改成TRUE, 就會(huì)破壞要上傳的那三個(gè)條件的第一個(gè),導(dǎo)致不會(huì)進(jìn)入上傳的分支。

    (2) 如果只是想disable 某種特定transaction type的document,call這個(gè)function module:
    CRM_ORDER_SET_NO_BDOC_SEND_OW, 輸入order的guid,會(huì)添加一行entry到GT_NO_BDOC_SEND里,
    這樣會(huì)破壞IF判斷里中間那個(gè)條件,也能實(shí)現(xiàn)不上傳的目的。

    條件2少截一張圖:

    條件2: LV_SEND_BDOC = TRUE
    讀這個(gè)global的internal table,如果讀不到,置為TRUE,AG9上讀不到,所以為true,這個(gè)條件也滿足了。

    line 325的function module會(huì)負(fù)責(zé)通過outbound queue往外發(fā),

    只有當(dāng)line 321的IF里的三個(gè)條件同時(shí)滿足才會(huì)進(jìn)入:

    條件1: IV_NO_BDOC_SEND = FALSE, AG9上這個(gè)參數(shù)用的默認(rèn)參數(shù)false,滿足

    條件2: LV_SEND_BDOC = TRUE
    讀這個(gè)global的internal table,如果讀不到,置為TRUE,AG9上讀不到,所以為true,這個(gè)條件也滿足了。

    條件3: LV_SKIP_ASYNCRONOUS_FUNCTION = INITIAL
    如果該order的狀態(tài)置為POST PROCESSING, 則該變量值為true,但是AG9上我們的status是open,所以這個(gè)條件也滿足

    三個(gè)條件同時(shí)滿足,所以通過middleware里往outbound queue發(fā)數(shù)據(jù)。

    如何避免這個(gè)行為?根據(jù)代碼分析,破壞IF里三個(gè)條件任意一個(gè)即可。通過debug可知破壞第二個(gè)條件最容易。
    要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":

    總結(jié)

    以上是生活随笔為你收集整理的AG9 Service order创建好之后,要自动通过middleware传其他系统去 disable的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。