先来看一下效果图:
实现方法(估计大伙都能猜到,可能只是懒的写而已)
程序上加按钮:
WHEN "in_detail"
IF cl_chk_act_auth() THEN
LET lt_zz01 = get_program(g_tlff_1[l_ac].tlf026)
LET g_cmd = lt_zz01,' ',g_tlff_1[l_ac].tlf026
CALL cl_cmdrun_wait(g_cmd CLIPPED)
END IF
WHEN "to_detail"
IF cl_chk_act_auth() THEN
LET lt_zz01 = get_program(g_tlff_1[l_ac].tlf036)
LET g_cmd = lt_zz01,' ',g_tlff_1[l_ac].tlf036
CALL cl_cmdrun_wait(g_cmd CLIPPED)
END IF
直接下来就是查找函数了:
# Prog. Version..: '5.00.04-07.12.14(00001)' #
#
# Library name...: cl_find
# Descriptions...: 根据输入单号猜源程序
# Input parameter: 单据编号
# RETURN code....: 使用此单据编号的程序代码
# Usage .........: get_program(dan_no)
# Date & Author..: 2010-12-08 9:54:20 By hefeiyu
DATABASE ds
GLOBALS "../../config/top.global"
FUNCTION get_program(dan_no)
DEFINE dan_program LIKE zz_file.zz21
DEFINE dan_no LIKE tlf_file.tlf026
DEFINE l_smyslip LIKE smy_file.smyslip
DEFINE l_smysys LIKE smy_file.smysys
DEFINE l_smykind LIKE smy_file.smysys
DEFINE h_sfp06 LIKE sfp_file.sfp06
DEFINE h_rvu08 LIKE rvu_file.rvu08
DEFINE h_type LIKE type_file.chr1
DEFINE g_bookno LIKE aaz_file.aaz64
DEFINE lt_rvu02 LIKE rvu_file.rvu02
DEFINE g_oay RECORD LIKE oay_file.*
DEFINE g_ooy RECORD LIKE ooy_file.*
DEFINE g_apy RECORD LIKE apy_file.*
DEFINE g_nmy RECORD LIKE nmy_file.*
DEFINE g_aac RECORD LIKE aac_file.*
DEFINE g_fah RECORD LIKE fah_file.* #固定资产暂时没有
LET dan_program = NULL
LET h_type = NULL
LET g_bookno = g_aaz.aaz64
LET l_smyslip = dan_no[1,4] #hefeiyu mark 2009-8-19
SELECT smysys,smykind INTO l_smysys,l_smykind FROM smy_file
WHERE smyslip = l_smyslip
IF SQLCA.SQLCODE = 100 THEN
#出货
SELECT * INTO g_oay.* FROM oay_file WHERE oayslip=l_smyslip
IF SQLCA.SQLCODE = 100 THEN
#应收
SELECT * INTO g_ooy.* FROM ooy_file WHERE ooyslip=l_smyslip
IF SQLCA.SQLCODE = 100 THEN
#应付
SELECT * INTO g_apy.* FROM apy_file WHERE apyslip=l_smyslip
IF SQLCA.SQLCODE = 100 THEN
#票据
SELECT * INTO g_nmy.* FROM nmy_file WHERE nmyslip=l_smyslip
IF SQLCA.SQLCODE = 100 THEN
#凭证
SELECT * INTO g_aac.* FROM aac_file WHERE aac01=l_smyslip
END IF
END IF
END IF
END IF
END IF
IF cl_null(l_smysys) AND NOT cl_null(g_aac.aac01) THEN
CASE g_aac.aac11
WHEN "1"
LET dan_program="aglt110 ",g_bookno CLIPPED
WHEN "2"
LET dan_program="aglt120 ",g_bookno CLIPPED
WHEN "3"
LET dan_program="aglt130 ",g_bookno CLIPPED
WHEN "A"
LET dan_program="aglt001 ",g_bookno CLIPPED
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF cl_null(l_smysys) AND NOT cl_null(g_nmy.nmyslip) THEN
CASE g_nmy.nmykind
WHEN "1"
LET dan_program='anmt100'
WHEN "2"
LET dan_program='anmt200'
WHEN "3"
LET dan_program='anmt302'
WHEN "4"
LET dan_program='anmt710'
WHEN "5"
LET dan_program='anmt720'
WHEN "6"
LET dan_program='anmt740'
WHEN "7"
LET dan_program='anmt750'
WHEN "8"
LET dan_program='anmt600'
WHEN "9"
LET dan_program='anmt400'
WHEN "A"
LET dan_program='anmt150'
WHEN "B"
LET dan_program='anmt250'
WHEN "C"
LET dan_program='anmt610'
WHEN "D"
LET dan_program='anmt840'
WHEN "E"
LET dan_program='anmt850'
WHEN "F"
LET dan_program='anmt605'
WHEN "G"
LET dan_program='anmt100'
WHEN "H"
LET dan_program='anmt920'
WHEN "I"
SELECT nnw00 INTO h_type FROM nnw_file WHERE nnw01=dan_no
IF h_type = '1' THEN
LET dan_program='anmt930 1'
ELSE
LET dan_program='anmt930 2'
END IF
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF cl_null(l_smysys) AND NOT cl_null(g_apy.apyslip) THEN
CASE g_apy.apykind
WHEN "11"
LET dan_program='aapt110'
WHEN "12"
LET dan_program='aapt120'
WHEN "15"
LET dan_program='aapt150'
WHEN "21"
LET dan_program='aapt210'
WHEN "22"
LET dan_program='aapt220'
WHEN "23"
LET dan_program='aapt230'
WHEN "24"
LET dan_program='aapt240'
WHEN "33"
LET dan_program='aapt330'
WHEN "41"
LET dan_program='aapt900'
WHEN "13"
LET dan_program='aapt121'
WHEN "17"
LET dan_program='aapt151'
WHEN "34"
LET dan_program='aapt331'
WHEN "26"
LET dan_program='aapt260'
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF cl_null(l_smysys) AND NOT cl_null(g_ooy.ooyslip) THEN
IF g_ooy.ooytype < '30' THEN
LET dan_program='axrt300'
END IF
IF g_ooy.ooytype = '30' THEN
LET dan_program='axrt400'
END IF
IF g_ooy.ooytype > '30' THEN
LET dan_program='axrt600'
END IF
END IF
#IF l_smysys = 'aqc' THEN #质检暂时没有
IF l_smysys = 'aim' THEN
CASE
WHEN l_smykind='1'
LET dan_program='aimt301'
WHEN l_smykind='2'
LET dan_program='aimt302'
WHEN l_smykind='3'
LET dan_program='aimt303'
WHEN l_smykind='4'
LET dan_program='aimt324'
WHEN l_smykind='5'
LET dan_program='aimt820'
WHEN l_smykind='6'
LET dan_program='aimt306'
WHEN l_smykind='7'
LET dan_program='aimt310'
WHEN l_smykind='8'
SELECT * INTO g_oay.* FROM oay_file WHERE oayslip=l_smyslip
CASE
WHEN g_oay.oaytype='20'
LET dan_program='axmt400'
WHEN g_oay.oaytype='30'
SELECT oea901 INTO h_type FROM oea_file WHERE oea01=dan_no
IF h_type = 'Y' THEN
LET dan_program='axmt810'
ELSE
LET dan_program='axmt410'
END IF
WHEN g_oay.oaytype='32'
SELECT oea901 INTO h_type FROM oea_file WHERE oea01=dan_no
IF h_type = 'Y' THEN
LET dan_program='axmt810'
ELSE
LET dan_program='axmt410'
END IF
WHEN g_oay.oaytype='50'
# IF g_oay.oay24 = 'Y' THEN
# LET dan_program='axmt820'
# ELSE
SELECT oga09 INTO h_type FROM oga_file WHERE oga01=dan_no
CASE h_type
WHEN "1"
LET dan_program='axmt610'
WHEN "2"
LET dan_program='axmt620'
WHEN "3"
LET dan_program='axmt650'
WHEN "4"
LET dan_program='axmt820'
WHEN "5"
LET dan_program='axmt850'
WHEN "6"
LET dan_program='axmt821'
WHEN "8"
LET dan_program='axmt628'
WHEN "9"
LET dan_program='axmt629'
OTHERWISE
LET dan_program = 'axmt620'
END CASE
# END IF
WHEN g_oay.oaytype='60'
IF g_oay.oay24 = 'Y' THEN
LET dan_program='axmt840'
ELSE
LET dan_program='axmt700'
END IF
WHEN g_oay.oaytype='58'
LET dan_program='axmt628'
WHEN g_oay.oaytype='59'
LET dan_program='axmt629'
WHEN g_oay.oaytype='55'
LET dan_program='axmt500'
WHEN g_oay.oaytype='51'
LET dan_program='axmt640'
WHEN g_oay.oaytype='70'
LET dan_program='armt150'
WHEN g_oay.oaytype='71'
LET dan_program='armt160'
WHEN g_oay.oaytype='73'
LET dan_program='armt320'
WHEN g_oay.oaytype='75'
LET dan_program='armt230'
WHEN g_oay.oaytype='76'
LET dan_program='crmt190'
OTHERWISE
LET dan_program = NULL
END CASE
WHEN l_smykind='9'
LET dan_program='aimt720'
WHEN l_smykind='A'
LET dan_program=NULL
WHEN l_smykind='B'
LET dan_program='aimt307'
WHEN l_smykind='C'
LET dan_program='aimt309'
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF l_smysys = 'apm' THEN
SELECT rvu08 INTO h_rvu08 FROM rvu_file WHERE rvu01=dan_no
IF SQLCA.SQLCODE = 100 THEN
SELECT rva10 INTO h_rvu08 FROM rva_file WHERE rva01=dan_no
END IF
# SELECT rvu02 INTO lt_rvu02 FROM rvu_file WHERE rvu01=dan_no
SELECT rvu00,rvu02 INTO h_type,lt_rvu02 FROM rvu_file WHERE rvu01=dan_no
CASE
WHEN l_smykind='1'
LET dan_program='apmt420'
WHEN l_smykind='2'
LET dan_program='apmt540'
WHEN l_smykind='3'
CASE
WHEN h_rvu08 = 'TAP' OR h_rvu08 = 'TRI'
LET dan_program = 'apmt300'
WHEN h_rvu08 = 'SUB'
LET dan_program = 'apmt200'
OTHERWISE LET dan_program = 'apmt110'
END CASE
WHEN l_smykind='4'
CASE
WHEN h_rvu08 = 'TAP' OR h_rvu08 = 'TRI'
IF h_type = '2' THEN
LET dan_program ="apmt741 ","'' '' '",lt_rvu02 CLIPPED,"' '2'"
ELSE
LET dan_program = "apmt741 ","'' '' '",lt_rvu02 CLIPPED,"' '3'"
END IF
WHEN h_rvu08 = 'SUB'
IF h_type = '2' THEN
LET dan_program ="apmt731 ","'' '' '",lt_rvu02 CLIPPED,"' '2' 'SUB'"
ELSE
LET dan_program = 'apmt732'
END IF
# LET dan_program = 'apmt731' #没有委外仓退吗? END if
OTHERWISE
IF h_type = '2' THEN
LET dan_program ="apmt721 ","'",lt_rvu02 CLIPPED,"' '' '2'"
ELSE
LET dan_program = "apmt722 ","'",lt_rvu02 CLIPPED,"' '' '3'"
END IF
# LET dan_program = 'apmt722'
END CASE
WHEN l_smykind='5'
SELECT DISTINCT pmj12 INTO h_type FROM pmj_file WHERE pmj01=dan_no
IF h_type = '1' THEN
LET dan_program='apmi255'
ELSE
LET dan_program='apmi265'
END IF
WHEN l_smykind='6'
LET dan_program='apmi252'
WHEN l_smykind='7'
CASE
WHEN h_rvu08 = 'TAP' OR h_rvu08 = 'TRI'
LET dan_program = "apmt740 ","'' '' '",lt_rvu02 CLIPPED,"' '1'"
WHEN h_rvu08 = 'SUB'
LET dan_program = "apmt730 ","'' '' '",lt_rvu02 CLIPPED,"' '1' 'SUB'"
OTHERWISE
LET dan_program = "apmt720 ","'' '' '",lt_rvu02 CLIPPED,"' '1'"
END CASE
WHEN l_smykind='8'
LET dan_program='apmt580'
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF l_smysys = 'asf' THEN
SELECT sfp06 INTO h_sfp06 FROM sfp_file
WHERE sfp01=dan_no
CASE
WHEN l_smykind='1'
LET dan_program='asfi301'
WHEN l_smykind='2'
LET dan_program='asfi310'
WHEN l_smykind='3'
CASE
WHEN h_sfp06 = '1'
LET dan_program = 'asfi511'
WHEN h_sfp06 = '2'
LET dan_program = 'asfi512'
WHEN h_sfp06 = '3'
LET dan_program = 'asfi513'
WHEN h_sfp06 = '4'
LET dan_program = 'asfi514'
OTHERWISE
LET dan_program = 'csfi510'
END CASE
WHEN l_smykind='4'
CASE
WHEN h_sfp06 = '6'
LET dan_program = 'asfi526'
WHEN h_sfp06 = '7'
LET dan_program = 'asfi527'
WHEN h_sfp06 = '8'
LET dan_program = 'asfi528'
WHEN h_sfp06 = '9'
LET dan_program = 'asfi529'
OTHERWISE
LET dan_program = NULL
END CASE
WHEN l_smykind='7'
LET dan_program='asfi500'
WHEN l_smykind='8'
LET dan_program='asfi410'
WHEN l_smykind='9'
LET dan_program= NULL
WHEN l_smykind='A'
LET dan_program='asft620'
WHEN l_smykind='B'
LET dan_program= 'aqct410'
WHEN l_smykind='C'
LET dan_program='asft622'
WHEN l_smykind='J'
LET dan_program='asft300'
WHEN l_smykind='F'
LET dan_program='asft670'
WHEN l_smykind='H'
LET dan_program='asft310'
WHEN l_smykind='H'
LET dan_program='asft311'
WHEN l_smykind='G'
LET dan_program='asfq311'
WHEN l_smykind='L'
LET dan_program='amri506'
WHEN l_smykind='K'
LET dan_program='amri500'
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF cl_null(l_smysys) AND NOT cl_null(g_oay.oayslip) THEN
CASE
WHEN g_oay.oaytype='20'
LET dan_program='axmt400'
WHEN g_oay.oaytype='30'
SELECT oea901 INTO h_type FROM oea_file WHERE oea01=dan_no
IF h_type = 'Y' THEN
LET dan_program='axmt810'
ELSE
LET dan_program='axmt410'
END IF
WHEN g_oay.oaytype='32'
SELECT oea901 INTO h_type FROM oea_file WHERE oea01=dan_no
IF h_type = 'Y' THEN
LET dan_program='axmt810'
ELSE
LET dan_program='axmt410'
END IF
WHEN g_oay.oaytype='50'
SELECT oga09 INTO h_type FROM oga_file WHERE oga01=dan_no
CASE h_type
WHEN "1"
LET dan_program='axmt610'
WHEN "2"
LET dan_program='axmt620'
WHEN "3"
LET dan_program='axmt650'
WHEN "4"
LET dan_program='axmt820'
WHEN "5"
LET dan_program='axmt850'
WHEN "6"
LET dan_program='axmt821'
WHEN "8"
LET dan_program='axmt628'
WHEN "9"
LET dan_program='axmt629'
OTHERWISE
LET dan_program = 'axmt620'
END CASE
WHEN g_oay.oaytype='60'
IF g_oay.oay24 = 'Y' THEN
LET dan_program='axmt840'
ELSE
LET dan_program='axmt700'
END IF
WHEN g_oay.oaytype='58'
LET dan_program='axmt628'
WHEN g_oay.oaytype='59'
LET dan_program='axmt629'
WHEN g_oay.oaytype='55'
LET dan_program='axmt500'
WHEN g_oay.oaytype='51'
LET dan_program='axmt640'
WHEN g_oay.oaytype='70'
LET dan_program='armt150'
WHEN g_oay.oaytype='71'
LET dan_program='armt160'
WHEN g_oay.oaytype='73'
LET dan_program='armt320'
WHEN g_oay.oaytype='75'
LET dan_program='armt230'
WHEN g_oay.oaytype='76'
LET dan_program='crmt190'
OTHERWISE
LET dan_program = NULL
END CASE
END IF
IF l_smysys = 'abm' AND l_smykind='1' THEN
SELECT bmx06 INTO h_type FROM bmx_file WHERE bmx01=dan_no
IF h_type='2' THEN
LET dan_program ='abmi720'
ELSE
LET dan_program ='abmi710'
END IF
END IF
RETURN dan_program
END FUNCTION
转载请注明:赫非域 » TIPTOP根据单号猜源程序