美文网首页ERP
4gl操作Excel

4gl操作Excel

作者: jiandanyaobai | 来源:发表于2018-06-01 21:35 被阅读0次

    一、业务场景说明
    针对部分料件无法在BOM中进行搭建、用量不确定,组成无法事先搭配。只有在实际生成过程中,才会得到具体的用量和组成。比如说:针对一些注塑行业、印刷行业等等。但是,对于成本精细化管理的角度来讲。这一部分成本也是要从实际生产中体现出来。那如何处理呢?
    二、4gl实际应用
    通过在日常生产中记录用量,事后导入到系统中去。具体操作:读取excel,生成工单备料、生成发料单
    这里有几个问题要注意:
    1.用临时表,如果excel中的笔数较多。如果用很多循环的话就会很慢。考虑效能。
    2.用merge的语法,比较快速的更新工单备料。

     PRIVATE FUNCTION csfp200_insert_excel_data_1(p_excelname)
       DEFINE l_sfda RECORD  #發退料單頭檔
           sfdaent LIKE sfda_t.sfdaent, #企業編號
           sfdasite LIKE sfda_t.sfdasite, #營運據點
           sfdadocno LIKE sfda_t.sfdadocno, #發退料單號
           sfdadocdt LIKE sfda_t.sfdadocdt, #單據日期
           sfda001 LIKE sfda_t.sfda001, #過帳日期
           sfda002 LIKE sfda_t.sfda002, #發退料類別
           sfda003 LIKE sfda_t.sfda003, #生產部門
           sfda004 LIKE sfda_t.sfda004, #申請人
           sfda005 LIKE sfda_t.sfda005, #PBI編號
           sfda006 LIKE sfda_t.sfda006, #生產料號
           sfda007 LIKE sfda_t.sfda007, #BOM特性
           sfda008 LIKE sfda_t.sfda008, #產品特徵
           sfda009 LIKE sfda_t.sfda009, #生產控制組
           sfda010 LIKE sfda_t.sfda010, #作業編號
           sfda011 LIKE sfda_t.sfda011, #作業序
           sfda012 LIKE sfda_t.sfda012, #庫位
           sfda013 LIKE sfda_t.sfda013, #套數
           sfda014 LIKE sfda_t.sfda014, #來源單號
           sfda015 LIKE sfda_t.sfda015, #來源類型
           sfdaownid LIKE sfda_t.sfdaownid, #資料所有者
           sfdaowndp LIKE sfda_t.sfdaowndp, #資料所屬部門
           sfdacrtid LIKE sfda_t.sfdacrtid, #資料建立者
           sfdacrtdp LIKE sfda_t.sfdacrtdp, #資料建立部門
           sfdacrtdt LIKE sfda_t.sfdacrtdt, #資料創建日
           sfdamodid LIKE sfda_t.sfdamodid, #資料修改者
           sfdamoddt LIKE sfda_t.sfdamoddt, #最近修改日
           sfdacnfid LIKE sfda_t.sfdacnfid, #資料確認者
           sfdacnfdt LIKE sfda_t.sfdacnfdt, #資料確認日
           sfdapstid LIKE sfda_t.sfdapstid, #資料過帳者
           sfdapstdt LIKE sfda_t.sfdapstdt, #資料過帳日
           sfdastus LIKE sfda_t.sfdastus, #狀態碼
           sfdaud001 LIKE sfda_t.sfdaud001, #自定義欄位(文字)001
           sfdaud002 LIKE sfda_t.sfdaud002, #自定義欄位(文字)002
           sfdaud003 LIKE sfda_t.sfdaud003, #自定義欄位(文字)003
           sfdaud004 LIKE sfda_t.sfdaud004, #自定義欄位(文字)004
           sfdaud005 LIKE sfda_t.sfdaud005, #自定義欄位(文字)005
           sfdaud006 LIKE sfda_t.sfdaud006, #自定義欄位(文字)006
           sfdaud007 LIKE sfda_t.sfdaud007, #自定義欄位(文字)007
           sfdaud008 LIKE sfda_t.sfdaud008, #自定義欄位(文字)008
           sfdaud009 LIKE sfda_t.sfdaud009, #自定義欄位(文字)009
           sfdaud010 LIKE sfda_t.sfdaud010, #自定義欄位(文字)010
           sfdaud011 LIKE sfda_t.sfdaud011, #自定義欄位(數字)011
           sfdaud012 LIKE sfda_t.sfdaud012, #自定義欄位(數字)012
           sfdaud013 LIKE sfda_t.sfdaud013, #自定義欄位(數字)013
           sfdaud014 LIKE sfda_t.sfdaud014, #自定義欄位(數字)014
           sfdaud015 LIKE sfda_t.sfdaud015, #自定義欄位(數字)015
           sfdaud016 LIKE sfda_t.sfdaud016, #自定義欄位(數字)016
           sfdaud017 LIKE sfda_t.sfdaud017, #自定義欄位(數字)017
           sfdaud018 LIKE sfda_t.sfdaud018, #自定義欄位(數字)018
           sfdaud019 LIKE sfda_t.sfdaud019, #自定義欄位(數字)019
           sfdaud020 LIKE sfda_t.sfdaud020, #自定義欄位(數字)020
           sfdaud021 LIKE sfda_t.sfdaud021, #自定義欄位(日期時間)021
           sfdaud022 LIKE sfda_t.sfdaud022, #自定義欄位(日期時間)022
           sfdaud023 LIKE sfda_t.sfdaud023, #自定義欄位(日期時間)023
           sfdaud024 LIKE sfda_t.sfdaud024, #自定義欄位(日期時間)024
           sfdaud025 LIKE sfda_t.sfdaud025, #自定義欄位(日期時間)025
           sfdaud026 LIKE sfda_t.sfdaud026, #自定義欄位(日期時間)026
           sfdaud027 LIKE sfda_t.sfdaud027, #自定義欄位(日期時間)027
           sfdaud028 LIKE sfda_t.sfdaud028, #自定義欄位(日期時間)028
           sfdaud029 LIKE sfda_t.sfdaud029, #自定義欄位(日期時間)029
           sfdaud030 LIKE sfda_t.sfdaud030  #自定義欄位(日期時間)030
       END RECORD
       DEFINE l_sfdc RECORD  #發退料需求檔
           sfdcent LIKE sfdc_t.sfdcent, #企業編號
           sfdcsite LIKE sfdc_t.sfdcsite, #營運據點
           sfdcdocno LIKE sfdc_t.sfdcdocno, #發退料單號
           sfdcseq LIKE sfdc_t.sfdcseq, #項次
           sfdc001 LIKE sfdc_t.sfdc001, #工單單號
           sfdc002 LIKE sfdc_t.sfdc002, #工單項次
           sfdc003 LIKE sfdc_t.sfdc003, #工單項序
           sfdc004 LIKE sfdc_t.sfdc004, #需求料號
           sfdc005 LIKE sfdc_t.sfdc005, #產品特徵
           sfdc006 LIKE sfdc_t.sfdc006, #單位
           sfdc007 LIKE sfdc_t.sfdc007, #申請數量
           sfdc008 LIKE sfdc_t.sfdc008, #實際數量
           sfdc009 LIKE sfdc_t.sfdc009, #參考單位
           sfdc010 LIKE sfdc_t.sfdc010, #參考單位需求數量
           sfdc011 LIKE sfdc_t.sfdc011, #參考單位實際數量
           sfdc012 LIKE sfdc_t.sfdc012, #指定庫位
           sfdc013 LIKE sfdc_t.sfdc013, #指定儲位
           sfdc014 LIKE sfdc_t.sfdc014, #指定批號
           sfdc015 LIKE sfdc_t.sfdc015, #理由碼
           sfdc016 LIKE sfdc_t.sfdc016, #庫存管理特徴
           sfdc017 LIKE sfdc_t.sfdc017, #正負
           sfdcud001 LIKE sfdc_t.sfdcud001, #自定義欄位(文字)001
           sfdcud002 LIKE sfdc_t.sfdcud002, #自定義欄位(文字)002
           sfdcud003 LIKE sfdc_t.sfdcud003, #自定義欄位(文字)003
           sfdcud004 LIKE sfdc_t.sfdcud004, #自定義欄位(文字)004
           sfdcud005 LIKE sfdc_t.sfdcud005, #自定義欄位(文字)005
           sfdcud006 LIKE sfdc_t.sfdcud006, #自定義欄位(文字)006
           sfdcud007 LIKE sfdc_t.sfdcud007, #自定義欄位(文字)007
           sfdcud008 LIKE sfdc_t.sfdcud008, #自定義欄位(文字)008
           sfdcud009 LIKE sfdc_t.sfdcud009, #自定義欄位(文字)009
           sfdcud010 LIKE sfdc_t.sfdcud010, #自定義欄位(文字)010
           sfdcud011 LIKE sfdc_t.sfdcud011, #自定義欄位(數字)011
           sfdcud012 LIKE sfdc_t.sfdcud012, #自定義欄位(數字)012
           sfdcud013 LIKE sfdc_t.sfdcud013, #自定義欄位(數字)013
           sfdcud014 LIKE sfdc_t.sfdcud014, #自定義欄位(數字)014
           sfdcud015 LIKE sfdc_t.sfdcud015, #自定義欄位(數字)015
           sfdcud016 LIKE sfdc_t.sfdcud016, #自定義欄位(數字)016
           sfdcud017 LIKE sfdc_t.sfdcud017, #自定義欄位(數字)017
           sfdcud018 LIKE sfdc_t.sfdcud018, #自定義欄位(數字)018
           sfdcud019 LIKE sfdc_t.sfdcud019, #自定義欄位(數字)019
           sfdcud020 LIKE sfdc_t.sfdcud020, #自定義欄位(數字)020
           sfdcud021 LIKE sfdc_t.sfdcud021, #自定義欄位(日期時間)021
           sfdcud022 LIKE sfdc_t.sfdcud022, #自定義欄位(日期時間)022
           sfdcud023 LIKE sfdc_t.sfdcud023, #自定義欄位(日期時間)023
           sfdcud024 LIKE sfdc_t.sfdcud024, #自定義欄位(日期時間)024
           sfdcud025 LIKE sfdc_t.sfdcud025, #自定義欄位(日期時間)025
           sfdcud026 LIKE sfdc_t.sfdcud026, #自定義欄位(日期時間)026
           sfdcud027 LIKE sfdc_t.sfdcud027, #自定義欄位(日期時間)027
           sfdcud028 LIKE sfdc_t.sfdcud028, #自定義欄位(日期時間)028
           sfdcud029 LIKE sfdc_t.sfdcud029, #自定義欄位(日期時間)029
           sfdcud030 LIKE sfdc_t.sfdcud030  #自定義欄位(日期時間)030
       END RECORD 
       DEFINE l_sfdd RECORD  #發退料明細檔
           sfddent LIKE sfdd_t.sfddent, #企業編號
           sfddsite LIKE sfdd_t.sfddsite, #營運據點
           sfdddocno LIKE sfdd_t.sfdddocno, #發退料單號
           sfddseq LIKE sfdd_t.sfddseq, #項次
           sfddseq1 LIKE sfdd_t.sfddseq1, #項序
           sfdd001 LIKE sfdd_t.sfdd001, #發退料料號
           sfdd002 LIKE sfdd_t.sfdd002, #替代率
           sfdd003 LIKE sfdd_t.sfdd003, #庫位
           sfdd004 LIKE sfdd_t.sfdd004, #儲位
           sfdd005 LIKE sfdd_t.sfdd005, #批號
           sfdd006 LIKE sfdd_t.sfdd006, #單位
           sfdd007 LIKE sfdd_t.sfdd007, #數量
           sfdd008 LIKE sfdd_t.sfdd008, #參考單位
           sfdd009 LIKE sfdd_t.sfdd009, #參考單位數量
           sfdd010 LIKE sfdd_t.sfdd010, #庫存管理特徵
           sfdd011 LIKE sfdd_t.sfdd011, #包裝容器
           sfdd012 LIKE sfdd_t.sfdd012, #正負
           sfdd013 LIKE sfdd_t.sfdd013, #產品特徵
           sfddud001 LIKE sfdd_t.sfddud001, #自定義欄位(文字)001
           sfddud002 LIKE sfdd_t.sfddud002, #自定義欄位(文字)002
           sfddud003 LIKE sfdd_t.sfddud003, #自定義欄位(文字)003
           sfddud004 LIKE sfdd_t.sfddud004, #自定義欄位(文字)004
           sfddud005 LIKE sfdd_t.sfddud005, #自定義欄位(文字)005
           sfddud006 LIKE sfdd_t.sfddud006, #自定義欄位(文字)006
           sfddud007 LIKE sfdd_t.sfddud007, #自定義欄位(文字)007
           sfddud008 LIKE sfdd_t.sfddud008, #自定義欄位(文字)008
           sfddud009 LIKE sfdd_t.sfddud009, #自定義欄位(文字)009
           sfddud010 LIKE sfdd_t.sfddud010, #自定義欄位(文字)010
           sfddud011 LIKE sfdd_t.sfddud011, #自定義欄位(數字)011
           sfddud012 LIKE sfdd_t.sfddud012, #自定義欄位(數字)012
           sfddud013 LIKE sfdd_t.sfddud013, #自定義欄位(數字)013
           sfddud014 LIKE sfdd_t.sfddud014, #自定義欄位(數字)014
           sfddud015 LIKE sfdd_t.sfddud015, #自定義欄位(數字)015
           sfddud016 LIKE sfdd_t.sfddud016, #自定義欄位(數字)016
           sfddud017 LIKE sfdd_t.sfddud017, #自定義欄位(數字)017
           sfddud018 LIKE sfdd_t.sfddud018, #自定義欄位(數字)018
           sfddud019 LIKE sfdd_t.sfddud019, #自定義欄位(數字)019
           sfddud020 LIKE sfdd_t.sfddud020, #自定義欄位(數字)020
           sfddud021 LIKE sfdd_t.sfddud021, #自定義欄位(日期時間)021
           sfddud022 LIKE sfdd_t.sfddud022, #自定義欄位(日期時間)022
           sfddud023 LIKE sfdd_t.sfddud023, #自定義欄位(日期時間)023
           sfddud024 LIKE sfdd_t.sfddud024, #自定義欄位(日期時間)024
           sfddud025 LIKE sfdd_t.sfddud025, #自定義欄位(日期時間)025
           sfddud026 LIKE sfdd_t.sfddud026, #自定義欄位(日期時間)026
           sfddud027 LIKE sfdd_t.sfddud027, #自定義欄位(日期時間)027
           sfddud028 LIKE sfdd_t.sfddud028, #自定義欄位(日期時間)028
           sfddud029 LIKE sfdd_t.sfddud029, #自定義欄位(日期時間)029
           sfddud030 LIKE sfdd_t.sfddud030, #自定義欄位(日期時間)030
           sfdd014 LIKE sfdd_t.sfdd014, #備置量
           sfdd015 LIKE sfdd_t.sfdd015  #在揀量
       END RECORD
    DEFINE p_sfdadocno LIKE xmdk_t.xmdkdocno
    DEFINE p_excelname LIKE type_t.chr1000  #excel档名
    DEFINE r_success   LIKE type_t.num5
    DEFINE l_excelname STRING               #excel档名
    DEFINE l_today     DATETIME YEAR TO SECOND
    DEFINE l_count     LIKE type_t.num10
    DEFINE li_i        LIKE type_t.num10
    DEFINE l_success   LIKE type_t.num10
    DEFINE xlapp,iRes,iRow    LIKE type_t.num5  
    DEFINE l_cnt       LIKE type_t.num5
    DEFINE l_cnt1      LIKE type_t.num5
    DEFINE l_cnt2      LIKE type_t.num5
    DEFINE l_cnt3      LIKE type_t.num5
    DEFINE l_cnt4      LIKE type_t.num5
    DEFINE l_cnt5      LIKE type_t.num5
    DEFINE l_sfdastus  LIKE sfda_t.sfdastus
    DEFINE l_imaastus  LIKE imaa_t.imaastus
    DEFINE l_str       STRING
    DEFINE l_sfbaseq   LIKE sfba_t.sfbaseq
    DEFINE l_sfba001   LIKE sfba_t.sfba001
    DEFINE l_sfba013   LIKE sfba_t.sfba013
    DEFINE l_sfba016   LIKE sfba_t.sfba016
    DEFINE l_sfba023   LIKE sfba_t.sfba023
    DEFINE l_danbie    LIKE type_t.chr10
    DEFINE l_prog      LIKE type_t.chr10
    DEFINE l_sql       STRING
    DEFINE l_sfdc001   LIKE sfdc_t.sfdc001
    DEFINE l_sfdc004   LIKE sfdc_t.sfdc004
    DEFINE l_sfdc005   LIKE sfdc_t.sfdc005
    DEFINE l_sfdc007   LIKE sfdc_t.sfdc007
    DEFINE l_sfdc006   LIKE sfdc_t.sfdc006
    DEFINE l_sfdc012   LIKE sfdc_t.sfdc012
    DEFINE l_sfaastus  LIKE sfaa_t.sfaastus
    DEFINE l_flag1     LIKE type_t.chr1
    DEFINE l_what      LIKE type_t.chr1
       
       
       LET l_sql = " SELECT MAX(sfbaseq)+10 FROM sfba_t WHERE sfbaent = ? AND sfbadocno = ? "
       PREPARE sfbaseq_max_pre FROM l_sql
       
       LET l_sql = " SELECT MAX(sfbaseq)+10 FROM csfp200_tmp01 WHERE sfdc001 = ? "
       PREPARE sfbaseq_max_tmp_pre FROM l_sql
          
       LET l_sql = " SELECT sfbaseq FROM sfba_t WHERE sfbaent = ? AND sfbadocno = ? AND sfba006 = ? AND sfba021 = ? "
       PREPARE sfbaseq_pre FROM l_sql
                
       CALL cl_err_collect_init()
       
       LET r_success = TRUE 
    
       MESSAGE "汇入EXCEL中,请稍后!"
       
       LET l_count = LENGTH(p_excelname CLIPPED)
       #转换路径分隔符
       FOR li_i = 1 TO l_count
           IF p_excelname[li_i,li_i] ="/" THEN
              LET l_excelname = l_excelname CLIPPED,'\\'
           ELSE
              LET l_excelname = l_excelname CLIPPED,p_excelname[li_i,li_i]
           END IF
       END FOR
       
       #创建EXCEL 实例进程
       #MS OFFICE EXCEL
       CALL ui.interface.frontCall('WinCOM','CreateInstance',['Excel.Application'],[xlApp])
       IF xlApp = -1 THEN
          #KS WPS 9.0 KET
          CALL ui.interface.frontCall('WinCOM','CreateInstance',['Ket.Application'],[xlApp]) 
       END IF
       IF xlApp = -1 THEN
          #KS WPS 8.0 及以下 ET
          CALL ui.interface.frontCall('WinCOM','CreateInstance',['ET.Application'],[xlApp]) 
       END IF
       
       IF xlApp <> -1 THEN
          CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'WorkBooks.Open',l_excelname],[iRes])
          LET iRes = 0
          IF iRes <> -1 THEN
             CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.UsedRange.Rows.Count'],[iRow])
             
             #插入倒扣料单头sfda_t
             CALL csfp200_ins_sfda(p_excelname) RETURNING r_success 
             IF NOT r_success THEN 
                RETURN r_success
             END IF 
             
             #读取excel,并写进临时表
             #第一行是欄位的中文說明,从2开始
             DELETE FROM csfp200_tmp01; #清空临时表
             FOR li_i = 2 TO iRow  
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',1).Value'],[l_sfdc001]) #工单号
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',2).Value'],[l_sfdc004]) #料号
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',3).Value'],[l_sfdc005]) #特征值
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',4).Value'],[l_sfdc007]) #用量
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',5).Value'],[l_sfdc006]) #单位
                CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',6).Value'],[l_sfdc012]) #仓库
                 
                IF cl_null(l_sfdc005) THEN
                   LET l_sfdc005 = ' '
                END IF
                
                #检查工单
                IF NOT cl_null(l_sfdc001) THEN 
                   LET l_sfaastus = ''
                   SELECT sfaastus INTO l_sfaastus FROM sfaa_t 
                      WHERE sfaaent = g_enterprise AND sfaadocno = l_sfdc001
                   CASE WHEN SQLCA.SQLCODE = 100  
                           INITIALIZE g_errparam TO NULL
                           LET g_errparam.code = 'axc-00401' #工单不存在工单维护作业中
                           LET g_errparam.extend = l_sfdc001
                           LET g_errparam.popup = TRUE
                           CALL cl_err()
                           LET r_success = FALSE
                           CONTINUE FOR
                        WHEN l_sfaastus<>'F'       
                           INITIALIZE g_errparam TO NULL
                           LET g_errparam.code = 'aqc-00123' #工单不是[F:已发出]状态!
                           LET g_errparam.extend = l_sfdc001
                           LET g_errparam.popup = TRUE
                           CALL cl_err()
                           LET r_success = FALSE
                           CONTINUE FOR
                   END CASE
                ELSE
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = 'sub-00307' #传入的字段名不可为空
                   LET g_errparam.extend = "工单单号"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()
                   LET r_success = FALSE
                   CONTINUE FOR
                END IF                
    
                #检查料号
                IF NOT cl_null(l_sfdc004) THEN
                   LET l_cnt1 = ''
                   SELECT count(1) INTO l_cnt1 FROM imaa_t 
                      WHERE imaaent = g_enterprise AND imaa001 = l_sfdc004 AND imaastus = 'Y'
                   IF cl_null(l_cnt1) THEN LET l_cnt1 = 0 END IF 
                   IF l_cnt1 = 0 THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = 'csf-00004' #料号不存在或未审核
                      LET g_errparam.extend = l_sfdc004
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE  
                      CONTINUE FOR               
                   END IF
                ELSE
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = 'sub-00307' #传入的字段名不可为空
                   LET g_errparam.extend = "料号"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()
                   LET r_success = FALSE
                   CONTINUE FOR
                END IF 
                
                #检查特征值
                IF NOT cl_null(l_sfdc005) THEN
                   LET l_cnt2 = ''
                   SELECT count(1) INTO l_cnt2 FROM imaa_t,imec_t 
                      WHERE imaaent=imecent AND imaaent = g_enterprise AND imaa005=imec001 AND imaa001 = l_sfdc004 AND imec003 = l_sfdc005 AND imecstus = 'Y'
                   IF cl_null(l_cnt2) THEN LET l_cnt2 = 0 END IF 
                   IF l_cnt2 = 0 THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = 'csf-00005' #料号+特征值不存在或无效
                      LET g_errparam.extend = l_sfdc004 CLIPPED,'+',l_sfdc005 CLIPPED
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE
                      CONTINUE FOR 
                   END IF         
                END IF
                
                #检查用量
                IF NOT cl_null(l_sfdc007) THEN
                   IF l_sfdc007 < 0 OR l_sfdc007 = 0 THEN 
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = '-32406' #数值必须大于零.
                      LET g_errparam.extend = l_sfdc007
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE
                      CONTINUE FOR
                   END IF 
                ELSE
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = 'sub-00307' #传入的字段名不可为空
                   LET g_errparam.extend = "用量"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()
                   LET r_success = FALSE
                   CONTINUE FOR
                END IF 
                
                #检查单位
                IF NOT cl_null(l_sfdc006) THEN 
                   LET l_cnt3 = ''
                   SELECT count(1) INTO l_cnt3 FROM imaa_t,imao_t 
                      WHERE imaaent=imaoent AND imaaent = g_enterprise AND imaa001=imao001 AND imaa001 = l_sfdc004 AND imao002 = l_sfdc006 AND imaastus = 'Y'
                   IF cl_null(l_cnt3) THEN LET l_cnt3 = 0 END IF 
                   IF l_cnt3 = 0 THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = 'csf-00006' #单位不是料号允许使用的单位
                      LET g_errparam.extend = l_sfdc006
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE
                      CONTINUE FOR                 
                   END IF
                ELSE
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = 'sub-00307' #传入的字段名不可为空
                   LET g_errparam.extend = "单位"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()
                   LET r_success = FALSE
                   CONTINUE FOR
                END IF
                
                #检查仓库
                IF NOT cl_null(l_sfdc012) THEN
                   LET l_cnt4 = ''
                   SELECT count(1) INTO l_cnt4 FROM inaa_t
                      WHERE inaaent = g_enterprise AND inaasite = g_site AND inaa001 = l_sfdc012 AND inaa008 = 'Y'
                   IF cl_null(l_cnt4) THEN LET l_cnt4 = 0 END IF 
                   IF l_cnt4 = 0 THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = 'csf-00007' #仓库编号不存在或不可使用
                      LET g_errparam.extend = l_sfdc012
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE
                      CONTINUE FOR                 
                   END IF
                ELSE
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = 'sub-00307' #传入的字段名不可为空
                   LET g_errparam.extend = "仓库"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()
                   LET r_success = FALSE
                   CONTINUE FOR
                END IF
                
                #工单项次:若是新增的备料项次,则先从临时表抓最大项次,若是抓不到,再从sfba_t抓最大项次           
                LET l_sfbaseq = ''
                EXECUTE sfbaseq_pre USING g_enterprise,l_sfdc001,l_sfdc004,l_sfdc005 INTO l_sfbaseq
                IF cl_null(l_sfbaseq) THEN 
                   EXECUTE sfbaseq_max_tmp_pre USING l_sfdc001 INTO l_sfbaseq 
                   IF cl_null(l_sfbaseq) THEN 
                      EXECUTE sfbaseq_max_pre USING g_enterprise,l_sfdc001 INTO l_sfbaseq
                      IF cl_null(l_sfbaseq) OR l_sfbaseq = 0 THEN 
                         LET l_sfbaseq = 10
                      END IF
                   END IF                   
                END IF 
                   
                #excel数据写进临时表 
                #excel中记录可能会有重复的值,如果重新则进行update 否则进行insert        
                SELECT COUNT(1) INTO  l_what FROM csfp200_tmp01 WHERE sfdc001 = l_sfdc001 AND sfdc004 = l_sfdc004 AND sfdc005 = l_sfdc005 
                IF l_what = '1' THEN
                   UPDATE csfp200_tmp01 SET sfdc007 = sfdc007 + l_sfdc007 WHERE sfdc001=l_sfdc001 AND sfdc004 = l_sfdc004
                ELSE
                   INSERT INTO csfp200_tmp01(sfbaseq,sfdc001,sfdc004,sfdc005,sfdc007,sfdc006,sfdc012)
                         VALUES(l_sfbaseq,l_sfdc001,l_sfdc004,l_sfdc005,l_sfdc007,l_sfdc006,l_sfdc012)
                IF SQLCA.sqlcode THEN
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = SQLCA.sqlcode
                   LET g_errparam.extend = "insert csfp200_tmp01"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()  
                   LET r_success = FALSE
                END IF
              END IF
              
             END FOR
             
             #临时表读写出错!
             IF NOT r_success THEN
                RETURN r_success
             END IF 
             
             #下面开始从临时表中抓数据写进工单备料单身啦!!!
             IF r_success THEN
                LET l_sql = " MERGE INTO sfba_t o ",
                            " USING (SELECT sfbaseq,sfdc001,sfdc004,sfdc005,sfdc006,SUM(sfdc007) sfdc007 ",
                            " FROM csfp200_tmp01 GROUP BY sfbaseq,sfdc001,sfdc004,sfdc005,sfdc006) a",
                            " ON (o.sfbadocno = a.sfdc001 AND o.sfbaseq = a.sfbaseq AND o.sfba006 = a.sfdc004 AND o.sfba021 = a.sfdc005 AND o.sfbaent ='",g_enterprise,"' AND o.sfbasite = '",g_site,"')",
                            " WHEN MATCHED THEN UPDATE SET o.sfba023 = o.sfba023 + a.sfdc007,o.sfba013 = o.sfba013 + a.sfdc007 ",
                            " WHEN NOT MATCHED THEN INSERT (o.sfbaent,o.sfbasite,o.sfbadocno,o.sfbaseq,o.sfbaseq1, ",
                            "                                o.sfba001,o.sfba005,o.sfba006,o.sfba009,o.sfba010, ",
                            "                                o.sfba011,o.sfba013,o.sfba014,o.sfba016,o.sfba021, ",
                            "                                o.sfba023,o.sfba008,o.sfba026,o.sfba028 ",
                            " ) VALUES (?,?,a.sfdc001,a.sfbaseq,0, ",
                            "          '',a.sfdc004,a.sfdc004,'Y',1, ",
                            "          1,a.sfdc007,a.sfdc006,0,a.sfdc005, ",
                            "          a.sfdc007,'3','1','N') "
                PREPARE merge_pre FROM l_sql
                EXECUTE merge_pre USING g_enterprise,g_site
                IF SQLCA.sqlcode THEN
                   INITIALIZE g_errparam TO NULL
                   LET g_errparam.code = SQLCA.sqlcode
                   LET g_errparam.extend = "merge sfba_t"
                   LET g_errparam.popup = TRUE
                   CALL cl_err()  
                   LET r_success = FALSE
                   RETURN r_success               
                END IF            
             END IF 
             
             #下面开始从临时表中抓数据写进倒扣料单身啦!!!
             IF r_success THEN 
                LET l_sql = " SELECT sfdc001,sfdc004,sfdc005,SUM(sfdc007),sfdc006,sfdc012 FROM csfp200_tmp01 ",
                            " GROUP BY sfdc001,sfdc004,sfdc005,sfdc006,sfdc012 "
                PREPARE sfdc_pre FROM l_sql
                DECLARE sfdc_cs CURSOR FOR sfdc_pre
                FOREACH sfdc_cs INTO l_sfdc001,l_sfdc004,l_sfdc005,l_sfdc007,l_sfdc006,l_sfdc012
                   IF SQLCA.sqlcode THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = SQLCA.sqlcode
                      LET g_errparam.extend = "FOREACH sfdc_cs "
                      LET g_errparam.popup = TRUE
                      CALL cl_err()  
                      LET r_success = FALSE
                      EXIT FOREACH
                   END IF 
                   
                   #写进sfdc_t--------------------str
                   INITIALIZE l_sfdc.* TO NULL
                   LET l_sfdc.sfdcent   = g_enterprise           #企業編號        
                   LET l_sfdc.sfdcsite  = g_site                 #營運據點        
                   LET l_sfdc.sfdcdocno = g_sfda.sfdadocno       #發退料單號
                   #项次
                   SELECT MAX(sfdcseq)+1 INTO l_sfdc.sfdcseq FROM sfdc_t
                      WHERE sfdcent = g_enterprise AND sfdcsite = g_site AND sfdcdocno = g_sfda.sfdadocno
                   IF cl_null(l_sfdc.sfdcseq) THEN LET l_sfdc.sfdcseq = 1 END IF  
                   LET l_sfdc.sfdc001 = l_sfdc001 #工单单号
                   LET l_sfdc.sfdc004 = l_sfdc004 #料号
                   LET l_sfdc.sfdc005 = l_sfdc005 #产品特征  
                   #工單項次  #工单项序              
                   SELECT sfbaseq,sfbaseq1 INTO l_sfdc.sfdc002,l_sfdc.sfdc003 FROM sfba_t 
                      WHERE sfbaent = g_enterprise AND sfbadocno = l_sfdc001 AND sfba006 = l_sfdc004 AND sfba021 = l_sfdc005
                   LET l_sfdc.sfdc006 = l_sfdc006 #单位
                   LET l_sfdc.sfdc007 = l_sfdc007 #申请数量
                   LET l_sfdc.sfdc008 = l_sfdc.sfdc007 #實際數量 
                   #参考单位
                   SELECT imaf015 INTO l_sfdc.sfdc009 FROM imaf_t
                    WHERE imafent = g_enterprise
                      AND imafsite= g_site
                      AND imaf001 = l_sfdc004
                   #參考數量、參考實際數量
                   IF NOT cl_null(l_sfdc.sfdc009) THEN
                      CALL s_aooi250_convert_qty(l_sfdc.sfdc004,l_sfdc.sfdc006,l_sfdc.sfdc009,l_sfdc.sfdc007)
                         RETURNING l_flag1,l_sfdc.sfdc010
                      IF NOT l_flag1 THEN
                         LET l_sfdc.sfdc010 = l_sfdc.sfdc007
                      END IF
                      CALL s_aooi250_take_decimals(l_sfdc.sfdc009,l_sfdc.sfdc010)
                         RETURNING l_flag1,l_sfdc.sfdc010
                      LET l_sfdc.sfdc011 = l_sfdc.sfdc010
                   ELSE
                      LET l_sfdc.sfdc010 = 0
                      LET l_sfdc.sfdc011 = 0
                   END IF 
                   LET l_sfdc.sfdc012 = l_sfdc012 #指定仓库
                   LET l_sfdc.sfdc013 = ' ' #指定储位
                   LET l_sfdc.sfdc014 = ' ' #指定批号
                   LET l_sfdc.sfdc015 = ''  #理由碼          
                   LET l_sfdc.sfdc016 = ' ' #庫存管理特徴    
                   LET l_sfdc.sfdc017 = '-1' #正負
               
                   INSERT INTO sfdc_t(sfdcent,sfdcsite,sfdcdocno,sfdcseq,sfdc001,
                                      sfdc002,sfdc003,sfdc004,sfdc005,sfdc006,
                                      sfdc007,sfdc008,sfdc009,sfdc010,sfdc011,
                                      sfdc012,sfdc013,sfdc014,sfdc015,sfdc016,
                                      sfdc017,sfdcud001,sfdcud002,sfdcud003,sfdcud004,
                                      sfdcud005,sfdcud006,sfdcud007,sfdcud008,sfdcud009,
                                      sfdcud010,sfdcud011,sfdcud012,sfdcud013,sfdcud014,
                                      sfdcud015,sfdcud016,sfdcud017,sfdcud018,sfdcud019,
                                      sfdcud020,sfdcud021,sfdcud022,sfdcud023,sfdcud024,
                                      sfdcud025,sfdcud026,sfdcud027,sfdcud028,sfdcud029,
                                      sfdcud030)
                   VALUES(l_sfdc.sfdcent,l_sfdc.sfdcsite,l_sfdc.sfdcdocno,l_sfdc.sfdcseq,l_sfdc.sfdc001,
                          l_sfdc.sfdc002,l_sfdc.sfdc003,l_sfdc.sfdc004,l_sfdc.sfdc005,l_sfdc.sfdc006,
                          l_sfdc.sfdc007,l_sfdc.sfdc008,l_sfdc.sfdc009,l_sfdc.sfdc010,l_sfdc.sfdc011,
                          l_sfdc.sfdc012,l_sfdc.sfdc013,l_sfdc.sfdc014,l_sfdc.sfdc015,l_sfdc.sfdc016,
                          l_sfdc.sfdc017,l_sfdc.sfdcud001,l_sfdc.sfdcud002,l_sfdc.sfdcud003,l_sfdc.sfdcud004,
                          l_sfdc.sfdcud005,l_sfdc.sfdcud006,l_sfdc.sfdcud007,l_sfdc.sfdcud008,l_sfdc.sfdcud009,
                          l_sfdc.sfdcud010,l_sfdc.sfdcud011,l_sfdc.sfdcud012,l_sfdc.sfdcud013,l_sfdc.sfdcud014,
                          l_sfdc.sfdcud015,l_sfdc.sfdcud016,l_sfdc.sfdcud017,l_sfdc.sfdcud018,l_sfdc.sfdcud019,
                          l_sfdc.sfdcud020,l_sfdc.sfdcud021,l_sfdc.sfdcud022,l_sfdc.sfdcud023,l_sfdc.sfdcud024,
                          l_sfdc.sfdcud025,l_sfdc.sfdcud026,l_sfdc.sfdcud027,l_sfdc.sfdcud028,l_sfdc.sfdcud029,
                          l_sfdc.sfdcud030)
                   IF SQLCA.sqlcode THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = SQLCA.sqlcode
                      LET g_errparam.extend = "insert sfdc_t"
                      LET g_errparam.popup = TRUE
                      CALL cl_err()  
                      LET r_success = FALSE
                      EXIT FOREACH                                                     
                   END IF
                   #写进sfdc_t--------------------end
                   
                   #写进sfdd_t--------------------str
                   INITIALIZE l_sfdd.* TO NULL
                   LET l_sfdd.sfddent   = g_enterprise               #企業編號    
                   LET l_sfdd.sfddsite  = g_site                     #營運據點    
                   LET l_sfdd.sfdddocno = g_sfda.sfdadocno           #發退料單號  
                   LET l_sfdd.sfddseq   = l_sfdc.sfdcseq             #項次          
                   LET l_sfdd.sfdd001   = l_sfdc.sfdc004             #發退料料號  
                   LET l_sfdd.sfdd002   = '1'                        #替代率      
                   LET l_sfdd.sfdd003   = l_sfdc.sfdc012             #庫位        
                   LET l_sfdd.sfdd004   = ' '                        #儲位        
                   LET l_sfdd.sfdd005   = ' '                        #批號        
                   LET l_sfdd.sfdd006   = l_sfdc.sfdc006             #單位        
                   LET l_sfdd.sfdd007   = l_sfdc.sfdc007             #數量        
                   LET l_sfdd.sfdd008   = l_sfdc.sfdc009             #參考單位    
                   LET l_sfdd.sfdd009   = l_sfdc.sfdc010             #參考單位數量
                   LET l_sfdd.sfdd010   = ' '                        #庫存管理特徵
                   LET l_sfdd.sfdd011   = ''                         #包裝容器    
                   LET l_sfdd.sfdd012   = '-1'                       #正負 
                   LET l_sfdd.sfdd013   = l_sfdc.sfdc005             #产品特征             
             
                   #項序
                   SELECT max(sfddseq1) + 1 INTO l_sfdd.sfddseq1 FROM sfdd_t 
                      WHERE sfddent = g_enterprise AND sfdddocno = l_sfdd.sfdddocno AND sfddseq = l_sfdd.sfddseq
                   IF cl_null(l_sfdd.sfddseq1) OR l_sfdd.sfddseq1 = 0 THEN
                      LET l_sfdd.sfddseq1 = 1
                   END IF 
    
                   INSERT INTO sfdd_t(sfddent,sfddsite,sfdddocno,sfddseq,sfddseq1,
                                      sfdd001,sfdd002,sfdd003,sfdd004,sfdd005,
                                      sfdd006,sfdd007,sfdd008,sfdd009,sfdd010,
                                      sfdd011,sfdd012,sfdd013,sfddud001,sfddud002,
                                      sfddud003,sfddud004,sfddud005,sfddud006,sfddud007,
                                      sfddud008,sfddud009,sfddud010,sfddud011,sfddud012,
                                      sfddud013,sfddud014,sfddud015,sfddud016,sfddud017,
                                      sfddud018,sfddud019,sfddud020,sfddud021,sfddud022,
                                      sfddud023,sfddud024,sfddud025,sfddud026,sfddud027,
                                      sfddud028,sfddud029,sfddud030,sfdd014,sfdd015)
                   VALUES(l_sfdd.sfddent,l_sfdd.sfddsite,l_sfdd.sfdddocno,l_sfdd.sfddseq,l_sfdd.sfddseq1,
                          l_sfdd.sfdd001,l_sfdd.sfdd002,l_sfdd.sfdd003,l_sfdd.sfdd004,l_sfdd.sfdd005,
                          l_sfdd.sfdd006,l_sfdd.sfdd007,l_sfdd.sfdd008,l_sfdd.sfdd009,l_sfdd.sfdd010,
                          l_sfdd.sfdd011,l_sfdd.sfdd012,l_sfdd.sfdd013,l_sfdd.sfddud001,l_sfdd.sfddud002,
                          l_sfdd.sfddud003,l_sfdd.sfddud004,l_sfdd.sfddud005,l_sfdd.sfddud006,l_sfdd.sfddud007,
                          l_sfdd.sfddud008,l_sfdd.sfddud009,l_sfdd.sfddud010,l_sfdd.sfddud011,l_sfdd.sfddud012,
                          l_sfdd.sfddud013,l_sfdd.sfddud014,l_sfdd.sfddud015,l_sfdd.sfddud016,l_sfdd.sfddud017,
                          l_sfdd.sfddud018,l_sfdd.sfddud019,l_sfdd.sfddud020,l_sfdd.sfddud021,l_sfdd.sfddud022,
                          l_sfdd.sfddud023,l_sfdd.sfddud024,l_sfdd.sfddud025,l_sfdd.sfddud026,l_sfdd.sfddud027,
                          l_sfdd.sfddud028,l_sfdd.sfddud029,l_sfdd.sfddud030,l_sfdd.sfdd014,l_sfdd.sfdd015)
    
                   IF SQLCA.sqlcode THEN
                      INITIALIZE g_errparam TO NULL
                      LET g_errparam.code = SQLCA.sqlcode
                      LET g_errparam.extend = 'insert sfdd_t'
                      LET g_errparam.popup = TRUE
                      CALL cl_err()
                      LET r_success = FALSE
                      EXIT FOREACH
                   END IF              
                   #写进sfdc_t--------------------end               
                   
                END FOREACH
                
                #insert sfdc/sfdd 出错!
                IF NOT r_success THEN
                   RETURN r_success
                END IF
                
             END IF 
                      
          END IF
          
       ELSE
          INITIALIZE g_errparam TO NULL
          LET g_errparam.code = ''
          LET g_errparam.extend = 'NO FILE'
          LET g_errparam.popup = FALSE
          CALL cl_err()
          LET r_success = FALSE
       END IF 
       
       MESSAGE ""
       CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'Quit'],[iRes])
       CALL ui.interface.frontCall('WinCOM','ReleaseInstance',[xlApp],[iRes])
    
       RETURN r_success 
    
    
    END FUNCTION
    
    ################################################################################
    # Descriptions...: 插入sfda_t
    # Memo...........:
    # Usage..........: CALL s_aooi150_ins (传入参数)
    #                  RETURNING 回传参数
    # Input parameter: 传入参数变量1   传入参数变量说明1
    #                : 传入参数变量2   传入参数变量说明2
    # Return code....: 回传参数变量1   回传参数变量说明1
    #                : 回传参数变量2   回传参数变量说明2
    # Date & Author..: 
    # Modify.........:
    ################################################################################
    PRIVATE FUNCTION csfp200_ins_sfda(p_excelname)
    DEFINE l_danbie    LIKE type_t.chr10
    DEFINE l_prog      LIKE type_t.chr10
    DEFINE l_success   LIKE type_t.num5 
    DEFINE r_success   LIKE type_t.num5 
    DEFINE p_excelname LIKE type_t.chr1000  #excel档名
    
       LET r_success = TRUE #初始化
       
       LET g_sfda.sfdaud001 = p_excelname
       LET g_sfda.sfdaent   = g_enterprise               #企業編號    #161109-00085#32
       LET g_sfda.sfdasite  = g_site                     #營運據點    #161109-00085#32
       #LET l_sfda.sfdadocno = g_inba_m.sfdadocno         #發退料單號  
       LET g_sfda.sfdadocdt = g_today                    #單據日期    
       LET g_sfda.sfda001   = g_today                         #過帳日期    
       LET g_sfda.sfda002   = '14'                       #發退料類別  
       LET g_sfda.sfda003   = g_dept                     #生產部門    
       LET g_sfda.sfda004   = g_user                     #申請人      
       LET g_sfda.sfda005   = ''                         #PBI編號     
       LET g_sfda.sfda006   = ''                         #生產料號    
       LET g_sfda.sfda007   = ''                         #BOM特性     
       LET g_sfda.sfda008   = ''                         #產品特徵    
       LET g_sfda.sfda009   = ''                         #生產控制組  
       LET g_sfda.sfda010   = ''                         #作業編號    
       LET g_sfda.sfda011   = ''                         #作業序      
       LET g_sfda.sfda012   = ''                         #庫位        
       LET g_sfda.sfda013   = ''                         #套數        
       LET g_sfda.sfda014   = ''                #來源單號    #161109-00085#32
       LET g_sfda.sfda015   = '01'                       #來源類型    
       LET g_sfda.sfdaownid = g_user                     #資料所有者  
       LET g_sfda.sfdaowndp = g_dept                     #資料所屬部門
       LET g_sfda.sfdacrtid = g_user                     #資料建立者  
       LET g_sfda.sfdacrtdp = g_dept                     #資料建立部門
       LET g_sfda.sfdacrtdt = cl_get_current()                    #資料創建日  
       LET g_sfda.sfdamodid = ''                         #資料修改者
       LET g_sfda.sfdamoddt = ''                         #最近修改日
       LET g_sfda.sfdacnfid = ''                         #資料確認者
       LET g_sfda.sfdacnfdt = ''                         #資料確認日
       LET g_sfda.sfdapstid = ''                         #資料過帳者
       LET g_sfda.sfdapstdt = ''                         #資料過帳日
       LET g_sfda.sfdastus  = 'N'                        #狀態碼      
       #161109-00085#62 --s add
       #LET l_sfda.sfdaud001 = ''
       LET g_sfda.sfdaud002 = ''
       LET g_sfda.sfdaud003 = ''
       LET g_sfda.sfdaud004 = ''
       LET g_sfda.sfdaud005 = ''
       LET g_sfda.sfdaud006 = ''
       LET g_sfda.sfdaud007 = ''
       LET g_sfda.sfdaud008 = ''
       LET g_sfda.sfdaud009 = ''
       LET g_sfda.sfdaud010 = ''
       LET g_sfda.sfdaud011 = ''
       LET g_sfda.sfdaud012 = ''
       LET g_sfda.sfdaud013 = ''
       LET g_sfda.sfdaud014 = ''
       LET g_sfda.sfdaud015 = ''
       LET g_sfda.sfdaud016 = ''
       LET g_sfda.sfdaud017 = ''
       LET g_sfda.sfdaud018 = ''
       LET g_sfda.sfdaud019 = ''
       LET g_sfda.sfdaud020 = ''
       LET g_sfda.sfdaud021 = ''
       LET g_sfda.sfdaud022 = ''
       LET g_sfda.sfdaud023 = ''
       LET g_sfda.sfdaud024 = ''
       LET g_sfda.sfdaud025 = ''
       LET g_sfda.sfdaud026 = ''
       LET g_sfda.sfdaud027 = ''
       LET g_sfda.sfdaud028 = ''
       LET g_sfda.sfdaud029 = ''
       LET g_sfda.sfdaud030 = '' 
       
       LET l_danbie = 'SF14'
       LET l_prog = 'asft314'
       
       CALL s_aooi200_gen_docno(g_site,l_danbie,g_sfda.sfdadocdt,l_prog)  
          RETURNING l_success,g_sfda.sfdadocno           
       IF NOT l_success THEN
          INITIALIZE g_errparam TO NULL
          LET g_errparam.code = 'apm-00003' #自动生成单据编号有误,请重新审核
          LET g_errparam.extend = g_sfda.sfdadocno
          LET g_errparam.popup = TRUE
          CALL cl_err()
          LET r_success = FALSE
          RETURN r_success
       END IF  
        
       #INSERT INTO sfda_t VALUES g_sfda.*
       INSERT INTO sfda_t(sfdaent,sfdasite,sfdadocdt,sfdaownid,sfdaowndp,
                          sfdacrtid,sfdacrtdp,sfdacrtdt,sfdamodid,sfdamoddt,
                          sfdacnfid,sfdacnfdt,sfdapstid,sfdapstdt,sfdastus,sfdadocno,
                          sfda001,sfda002,sfda003,sfda004,sfda005,
                          sfda006,sfda007,sfda008,sfda009,sfda010,
                          sfda011,sfda012,sfda013,sfda014,sfda015,
                          sfdaud001,sfdaud002,sfdaud003,sfdaud004,sfdaud005,
                          sfdaud006,sfdaud007,sfdaud008,sfdaud009,sfdaud010,
                          sfdaud011,sfdaud012,sfdaud013,sfdaud014,sfdaud015,
                          sfdaud016,sfdaud017,sfdaud018,sfdaud019,sfdaud020,
                          sfdaud021,sfdaud022,sfdaud023,sfdaud024,sfdaud025,
                          sfdaud026,sfdaud027,sfdaud028,sfdaud029,sfdaud030
                          )
                  VALUES (g_sfda.sfdaent,g_sfda.sfdasite,g_sfda.sfdadocdt,g_sfda.sfdaownid,g_sfda.sfdaowndp,
                          g_sfda.sfdacrtid,g_sfda.sfdacrtdp,g_sfda.sfdacrtdt,g_sfda.sfdamodid,g_sfda.sfdamoddt,
                          g_sfda.sfdacnfid,g_sfda.sfdacnfdt,g_sfda.sfdapstid,g_sfda.sfdapstdt,g_sfda.sfdastus,g_sfda.sfdadocno,
                          g_sfda.sfda001,g_sfda.sfda002,g_sfda.sfda003,g_sfda.sfda004,g_sfda.sfda005,
                          g_sfda.sfda006,g_sfda.sfda007,g_sfda.sfda008,g_sfda.sfda009,g_sfda.sfda010,
                          g_sfda.sfda011,g_sfda.sfda012,g_sfda.sfda013,g_sfda.sfda014,g_sfda.sfda015,
                          g_sfda.sfdaud001,g_sfda.sfdaud002,g_sfda.sfdaud003,g_sfda.sfdaud004,g_sfda.sfdaud005,
                          g_sfda.sfdaud006,g_sfda.sfdaud007,g_sfda.sfdaud008,g_sfda.sfdaud009,g_sfda.sfdaud010,
                          g_sfda.sfdaud011,g_sfda.sfdaud012,g_sfda.sfdaud013,g_sfda.sfdaud014,g_sfda.sfdaud015,
                          g_sfda.sfdaud016,g_sfda.sfdaud017,g_sfda.sfdaud018,g_sfda.sfdaud019,g_sfda.sfdaud020,
                          g_sfda.sfdaud021,g_sfda.sfdaud022,g_sfda.sfdaud023,g_sfda.sfdaud024,g_sfda.sfdaud025,
                          g_sfda.sfdaud026,g_sfda.sfdaud027,g_sfda.sfdaud028,g_sfda.sfdaud029,g_sfda.sfdaud030
                          )
       
       IF SQLCA.sqlcode THEN
          INITIALIZE g_errparam TO NULL
          LET g_errparam.code = SQLCA.sqlcode
          LET g_errparam.extend = "insert sfda_t"
          LET g_errparam.popup = TRUE
          CALL cl_err()  
          LET r_success = FALSE
          RETURN r_success
       END IF
       
       RETURN r_success
       
    END FUNCTION
    
    ################################################################################
    # Descriptions...: 创建临时表
    # Memo...........:
    # Usage..........: CALL s_aooi150_ins (传入参数)
    #                  RETURNING 回传参数
    # Input parameter: 传入参数变量1   传入参数变量说明1
    #                : 传入参数变量2   传入参数变量说明2
    # Return code....: 回传参数变量1   回传参数变量说明1
    #                : 回传参数变量2   回传参数变量说明2
    # Date & Author..: 
    # Modify.........:
    ################################################################################
    PRIVATE FUNCTION csfp200_crt_tmp01()
       
       DROP TABLE csfp200_tmp01;
       CREATE TEMP TABLE csfp200_tmp01(
          sfbaseq   DECIMAL, #工单项次 
          sfdc001   VARCHAR(80), #工单单号
          sfdc004   VARCHAR(80), #料号
          sfdc005   VARCHAR(255), #产品特征
          sfdc007   DECIMAL, #用量
          sfdc006   VARCHAR(80), #单位
          sfdc012   VARCHAR(80) #仓库
          );      
    END FUNCTION
    

    相关文章

      网友评论

        本文标题:4gl操作Excel

        本文链接:https://www.haomeiwen.com/subject/cstlsftx.html