4gl操作Excel

一、业务场景说明
针对部分料件无法在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)