1. 分錄底稿部份
- May 07 Mon 2012 13:09
-
已跨月傳票,金額需要修改。(MIS)
起因 : 2012/05 發現 2012/03 傳票金額有小數點,因傳票與分錄底稿均有錯誤,故需要分二個部份來處理 :
1. 分錄底稿部份
1. 分錄底稿部份
- May 05 Sat 2012 17:27
-
找尋特定單別最近一次入庫日期與數量 (利用 FETCH FIRST )
# 要找到HAC7單別最近一次入庫日期和數量
# SELECT MAX(tlf026) INTO l_1no FROM tlf_file
# WHERE tlf01 = sr.imn03 AND tlf902= 'HS24' AND tlf904 = sr.imn17
# AND tlf026 LIKE 'HAC7%'
# 上面的寫法只會找到最大的號碼,並不是最近一次的入庫
# 用 FETCH FIRST 來找,CURSOR 需要先 OPEN ,並且需要設為 SCROLL CURSOR
# 先找出那張入庫單
DECLARE r512_x_cur SCROLL CURSOR FOR
SELECT tlf026 FROM tlf_file
WHERE tlf01 = sr.imn03 AND tlf902= 'HS24' AND tlf904 = sr.imn17
AND tlf026 LIKE 'HAC7%' ORDER BY tlf06 DESC
OPEN r512_x_cur
FETCH FIRST r512_x_cur INTO l_1no
IF NOT cl_null(l_1no) THEN
SELECT tlf06, tlf10 INTO l_1d, l_1q FROM tlf_file WHERE tlf026 = l_1no
END
# tlf026為單據編號
# tlf06 為入庫日期
# tlf10 為入庫數量
# SELECT MAX(tlf026) INTO l_1no FROM tlf_file
# WHERE tlf01 = sr.imn03 AND tlf902= 'HS24' AND tlf904 = sr.imn17
# AND tlf026 LIKE 'HAC7%'
# 上面的寫法只會找到最大的號碼,並不是最近一次的入庫
# 用 FETCH FIRST 來找,CURSOR 需要先 OPEN ,並且需要設為 SCROLL CURSOR
# 先找出那張入庫單
DECLARE r512_x_cur SCROLL CURSOR FOR
SELECT tlf026 FROM tlf_file
WHERE tlf01 = sr.imn03 AND tlf902= 'HS24' AND tlf904 = sr.imn17
AND tlf026 LIKE 'HAC7%' ORDER BY tlf06 DESC
OPEN r512_x_cur
FETCH FIRST r512_x_cur INTO l_1no
IF NOT cl_null(l_1no) THEN
SELECT tlf06, tlf10 INTO l_1d, l_1q FROM tlf_file WHERE tlf026 = l_1no
END
# tlf026為單據編號
# tlf06 為入庫日期
# tlf10 為入庫數量
- May 02 Wed 2012 13:35
-
DISPLAY BY NAME 的使用時機
INPUT g_file,g_disk,g_check,g_date,g_vender,g_meno,g_currency
WITHOUT DEFAULTS FROM FORMONLY.n1,FORMONLY.b,FORMONLY.c,FORMONLY.d1,FORMONLY.v1,FORMONLY.m1,FORMONLY.c1
AFTER FIELD v1
SELECT pmc22 INTO l_pmc22 FROM pmc_file WHERE pmcacti = 'Y' and pmc05 = '1' and pmc01 = g_vender
IF SQLCA.sqlcode = 100 THEN
CALL cl_err('','aap-000',1)
NEXT FIELD v1
ELSE
LET g_currency = l_pmc22
# DISPLAY BY NAME g_currency
# 使用 DISPLAY BY NAME 變數 g_currency 需與畫面檔欄位名稱 FORMONLY.c1 相同
DISPLAY g_currency TO FORMONLY.c1
END IF
END INPUT
WITHOUT DEFAULTS FROM FORMONLY.n1,FORMONLY.b,FORMONLY.c,FORMONLY.d1,FORMONLY.v1,FORMONLY.m1,FORMONLY.c1
AFTER FIELD v1
SELECT pmc22 INTO l_pmc22 FROM pmc_file WHERE pmcacti = 'Y' and pmc05 = '1' and pmc01 = g_vender
IF SQLCA.sqlcode = 100 THEN
CALL cl_err('','aap-000',1)
NEXT FIELD v1
ELSE
LET g_currency = l_pmc22
# DISPLAY BY NAME g_currency
# 使用 DISPLAY BY NAME 變數 g_currency 需與畫面檔欄位名稱 FORMONLY.c1 相同
DISPLAY g_currency TO FORMONLY.c1
END IF
END INPUT
- May 01 Tue 2012 13:22
-
STATUS 與 SQLCA.sqlcode 的差別
IF STATUS THEN
CALL cl_err("Show Errot Message",status,1)
LET g_success = 'N'
RETURN
END IF
IF SQLCA.sqlcode != 0 THEN
CALL cl_err("Show Errot Message",SQLCA.sqlcode,1)
LET g_success = 'N'
RETURN
END IF
-----------------------------------------------------------------------------------
STATUS 與 SQLCA.sqlcode 二者差別在於,
CALL cl_err("Show Errot Message",status,1)
LET g_success = 'N'
RETURN
END IF
IF SQLCA.sqlcode != 0 THEN
CALL cl_err("Show Errot Message",SQLCA.sqlcode,1)
LET g_success = 'N'
RETURN
END IF
-----------------------------------------------------------------------------------
STATUS 與 SQLCA.sqlcode 二者差別在於,
- May 01 Tue 2012 00:05
-
在 INSERT 之後,放一個執行成功與否的檢核。
INSERT INTO pmi_file (pmi01,pmi02,pmi03,pmi04,pmi05,pmi06,pmi07,pmiconf,pmiacti,pmiuser,pmigrup,pmimodu,pmidate,pmi08,pmi081,pmi09)
VALUES(g_pmi01,g_date,'U06','','N','1','N','Y','Y',g_user,'UAI','',g_date,'I043','0',g_user)
# INSERT 之後,放一個執行成功與否的檢核。
# 如果 STATUS = 0 表示執行成功 ,則不會進入下方 IF 錯誤程式
IF STATUS THEN
CALL cl_err("insert_prep:",status,1)
LET g_success = 'N'
RETURN
END IF
VALUES(g_pmi01,g_date,'U06','','N','1','N','Y','Y',g_user,'UAI','',g_date,'I043','0',g_user)
# INSERT 之後,放一個執行成功與否的檢核。
# 如果 STATUS = 0 表示執行成功 ,則不會進入下方 IF 錯誤程式
IF STATUS THEN
CALL cl_err("insert_prep:",status,1)
LET g_success = 'N'
RETURN
END IF