最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

TIPTOP根据单号猜源程序

开发相关 bron1984 2949浏览

先来看一下效果图:

实现方法(估计大伙都能猜到,可能只是懒的写而已)

程序上加按钮:

        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根据单号猜源程序