此段為我所寫的自動確認程式段, tc_occb04為確認碼欄位,但我測試簽核完成後始終無法自動確認,也已經將axmi010的自動確認勾選,程式放在topprod:/u1/topprod/topcust/cxm/4gl中,想請問大哥大姊要如何處理,另外想知道這種情況要如何去跑程式段除錯,謝謝各位大神!
FUNCTION t940sub_y1(l_tc_occb)
DEFINE l_tc_occb RECORD LIKE tc_occb_file.*
DEFINE l_msg LIKE type_file.chr1000 #No.FUN-680137 VARCHAR(100)
DEFINE l_azf08 LIKE azf_file.azf08 #CHI-E60035
DEFINE l_zx01 LIKE zx_file.zx01 #FUN-E40020 add
DEFINE l_cnt LIKE type_file.num5 #FUN-E40020 add
IF l_tc_occb.tc_occb04 = 'N' AND l_tc_occb.tc_occb05 = '0' THEN
LET l_tc_occb.tc_occb05 = '1' #已核淮
END IF
#FUN-E40020 add---str---
#若為EF整合自動確認,單據確認人員應為關卡最後一關簽核人員
IF g_action_choice = "efconfirm" THEN
CALL aws_efapp_getEFLogonID() RETURNING l_zx01
SELECT count(*) INTO l_cnt
FROM zx_file
WHERE zxacti = 'Y'
AND zx01 = l_zx01
END IF
#FUN-E40020 add---end---
UPDATE tc_occb_file SET tc_occb04='Y'
WHERE tc_occb01 = l_tc_occb.tc_occb01
IF STATUS OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_occb_file",l_tc_occb.tc_occb01,"",SQLCA.sqlcode,"","upd tc_occbconf",1) #No.FUN-650108
LET g_success = 'N'
RETURN
END IF
END FUNCTION
從程式段看
FUNCTION t940sub_y1(l_tc_occb)
這段程式什麼時候被呼叫,被叫到才有可能執行
CALL aws_efapp_getEFLogonID() RETURNING l_zx01
這段看最後一人是誰簽
l_cnt>0 有人簽
但看流程下來跟EF有沒有簽,在update程式段都沒有檢查
axmi010的自動確認勾選 這應該是指打完單,TT自動確認的選項跟簽核應無關
先看看有沒有aws_efcfg or aws_efcfg2的程式,如有表示有整合段程式
IF NOT cl_null(g_argv1) THEN
CASE g_argv2
WHEN "query"
LET g_action_choice = "query"
IF cl_chk_act_auth() THEN
CALL t940_q()
END IF
WHEN "insert"
LET g_action_choice = "insert"
IF cl_chk_act_auth() THEN
CALL t940_a()
LET g_data_keyvalue = g_tc_occb.tc_occb01
END IF
WHEN "efconfirm"
LET g_action_choice = "efconfirm"
CALL t940_q()
CALL t940sub_y_chk(g_tc_occb.tc_occb01) #CALL 原確認的 check 段
IF g_success = "Y" THEN
CALL t940sub_y_upd(g_tc_occb.tc_occb01, g_action_choice) #CALL 原確認的 update 段
END IF
EXIT PROGRAM
OTHERWISE
CALL t940_q()
END CASE
END IF
這是主要程式段在呼叫efconfirm使用,g_argv1為單號,g_argv2為功能,我在想是不是根本沒回傳到g_argv2,但是我不懂要如何除錯EF到ERP的段落,但是簽核過後是能夠正確將單據改為已簽核,目前我是將程式在topprod/tiptop中,請問是要移至nwsprd/tiptop中嗎,謝謝