CREATE OR REPLACE PROCEDURE WDC11AP ------------------------------------------------------------------------------- -- PROGRAM HEADER ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------------------------------------------------------------------------------- -- SYSTEM NAME ERP INTERFACE SYSTEM -- SUB_SYSTEM NAME PRODUCT MOVE RESULT -- PROGRAM NAME DELAY DATA SEND TO ERP EQUIPMENT SYSTEM -- PROGRAM ID ODM041AP -- DESIGNER xxx -- CODER xxx -- DATE 2018.09.27 -- DESCRIPTION DELAY DATA SEND TO ERP EQUIPMENT SYSTEM ------------------------------------------------------------------------------- -- UPDATE HISTORY ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------------------------------------------------------------------------------- -- VER DATE EDITOR DESCRIPTION -- 1.00 2018.09.27 景維鬆 上拋數據 ------------------------------------------------------------------------------- -- DECLARATION ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------------------------------------------------------------------------------- --主鍵 (P_COMP_ID IN TB_POD_011.COMP_ID %TYPE DEFAULT NULL, --公司別 P_ORDER_NO IN TB_POD_011.ORDER_NO %TYPE DEFAULT NULL, --訂單編號 P_ORDER_ITEM IN TB_POD_011.ORDER_ITEM %TYPE DEFAULT NULL, --訂單項次 P_LOTNO IN TB_OD_0021.LOTNO %TYPE DEFAULT NULL, --軋製序號 P_SEQUENCENO IN TB_OD_0021.SEQUENCENO %TYPE DEFAULT NULL, --排序號碼 P_STATUS IN VARCHAR2 DEFAULT NULL, P_RTN_MSG OUT VARCHAR2 ) IS -- CONSTANT DECLARE C_PGM_ID CONSTANT CHAR(10) := 'ODM041AP'; --C_QUEUEID CONSTANT NISCO.TBDIPDO.QUEUEID%TYPE := 'OJ00'; C_QUEUEID CONSTANT TBDIPDO.QUEUEID%TYPE := 'WD02'; C_FORM_ID CONSTANT VARCHAR2(10) := 'WD02'; C_STATUS CONSTANT TBDIPDO.STATUS%TYPE := 'N'; C_DOMAIN_NAME CONSTANT VARCHAR2(50) := 'MES'; C_CHAR_SET CONSTANT VARCHAR2(02) := '1'; C_MSG_TYPE CONSTANT VARCHAR2(02) := ' '; C_MSG_FORM CONSTANT VARCHAR2(01) := '1'; C_COMPANY_ID CONSTANT VARCHAR2(10) := ' '; C_PSW CONSTANT VARCHAR2(10) := ' '; C_POINTER CONSTANT VARCHAR2(06) := ' '; C_RESERVED CONSTANT VARCHAR2(10) := ' '; C_HEAD_LEN CONSTANT NUMBER(10) := 129; C_DATA_LEN CONSTANT NUMBER(10) := 166; --- BY INTERFACE FORM V_TIMESTAMP TBDIPDO.TIMESTAMP%TYPE; V_HEADER TBDIPDO.HEADER%TYPE; V_DATA_LEN NUMBER(12); V_DATA TBDIPDO.DATA%TYPE; -- CHEMICAL DATA DEVIDE TYPE TYPE_CHEM IS RECORD( COMP_ID TB_POD_011.COMP_ID %TYPE DEFAULT NULL, --公司別 ORDER_NO TB_POD_011.ORDER_NO %TYPE DEFAULT NULL, --訂單編號 ORDER_ITEM TB_POD_011.ORDER_ITEM %TYPE DEFAULT NULL, --訂單項次 LOTNO TB_OD_0021.LOTNO %TYPE DEFAULT NULL, --軋製序號 SEQUENCENO TB_OD_0021.SEQUENCENO %TYPE DEFAULT NULL, --排序號碼 LINENO TB_OD_0021.LINENO %TYPE DEFAULT NULL, MILL_DATE TB_OD_0021.MILL_DATE %TYPE DEFAULT NULL, HOUSENO TB_OD_0021.HOUSENO %TYPE DEFAULT NULL, HEATNO TB_OD_0021.HEATNO %TYPE DEFAULT NULL, INPCS TB_OD_0021.INPCS %TYPE DEFAULT NULL, INWGT TB_OD_0021.INWGT %TYPE DEFAULT NULL, TRADE_NO TB_POD_011.TRADE_NO %TYPE DEFAULT NULL, ORDER_LENGTH TB_POD_011.ORDER_LENGTH %TYPE DEFAULT NULL, ORDER_WIDTH TB_POD_011.ORDER_WIDTH %TYPE DEFAULT NULL, ORDER_THICK TB_POD_011.ORDER_THICK %TYPE DEFAULT NULL, PCS_PLAN TB_OD_0021.PCS_PLAN %TYPE DEFAULT NULL, PLANWGT TB_OD_0021.PLANWGT %TYPE DEFAULT NULL, LOC TB_OD_0021.LOC %TYPE DEFAULT NULL, RECODE TB_OD_0021.RECODE %TYPE DEFAULT NULL, ENDUSE TB_OD_0021.ENDUSE %TYPE DEFAULT NULL, CUST_NO TB_POD_011.CUST_NO %TYPE DEFAULT NULL, ORDER_LACKWGT TB_POD_011.ORDER_LACKWGT %TYPE DEFAULT NULL, ISBOOMORDER TB_POD_011.ISBOOMORDER %TYPE DEFAULT NULL, DEPT TB_OD_0021.DEPT %TYPE DEFAULT NULL, LOCTYPE TB_OD_0021.LOCTYPE %TYPE DEFAULT NULL, LAYER TB_OD_0021.LAYER %TYPE DEFAULT NULL ); R_TB_POD_011 TYPE_CHEM; --詳細檔數量 V_COUNT_CNT NUMBER(3); ---- ERROR DB V_ERRDB ZP_ERROR%ROWTYPE; V_RTN_MSG VARCHAR2(100) := NULL; -- USER EXCEPTION DECLARE PGM_EXIT EXCEPTION; ERR_EXIT EXCEPTION; BEGIN P_RTN_MSG := NULL; V_COUNT_CNT := 0; --查詢0021是否有數據 --有:下拋 --沒有:不下拋 SELECT COUNT(*) INTO V_COUNT_CNT FROM TB_OD_0021 WHERE LOTNO=P_LOTNO; IF V_COUNT_CNT = 0 THEN RETURN; END IF; BEGIN SELECT B.COMP_ID, B.ORDER_NO, B.ORDER_ITEM, A.LOTNO, A.SEQUENCENO, A.LINENO, A.MILL_DATE, A.HOUSENO, A.HEATNO, A.INPCS, A.INWGT, B.TRADE_NO, B.ORDER_LENGTH, B.ORDER_WIDTH, B.ORDER_THICK, A.PCS_PLAN, A.PLANWGT, A.LOC, A.RECODE, A.ENDUSE, B.CUST_NO, B.ORDER_LACKWGT, B.ISBOOMORDER, A.DEPT, A.LOCTYPE, A.LAYER INTO R_TB_POD_011 FROM TB_OD_0021 A , TB_POD_011 B WHERE A.ORDER_NO=B.ORDER_NO AND A.ORDER_ITEM=B.ORDER_ITEM AND A.COMPID=B.COMP_ID AND A.ORDER_NO=P_ORDER_NO AND A.ORDER_ITEM=P_ORDER_ITEM AND A.LOTNO = P_LOTNO; ------------------------------------------------------------------------------------------------------ --A.LOTNO,--軋製序號 -- A.ID,--捆號 -- A.ISWASTE,--是否認尺 -- A.WGT,--重量 --A.PCS,--支數 --C.ORDERCALIBER,--直徑 --C.ORDERWIDTH,--寬度 --C.ORDERLEN,--長度 --A.CREATEDATE, --A.CREATETIME, --B.OPERATECREW --INTO R_TB_OD_0002 --FROM TB_OD_0002 A --LEFT JOIN TB_OD_M041 B --ON A.LOTNO=B.LOTNO --AND A.ID=B.ID --LEFT JOIN TB_OD_0011 C --ON A.LOTNO=C.LOTNO --WHERE A.LOTNO=P_LOTNO --AND A.ID=P_ID; ------------------------------------------ EXCEPTION WHEN OTHERS THEN P_RTN_MSG := 'NOT RESULT DB(TQF_RFP)'; V_ERRDB.ERR_DESC := P_RTN_MSG; V_ERRDB.RTN_NAME := 'RESULT DATA SEND TO ERP SYSTEM'; V_ERRDB.ERR_PARA1 := ''; V_ERRDB.ERR_PARA2 := ''; GP_ERROR(C_PGM_ID, 'TQF_RFP', 'R', V_ERRDB.ERR_DESC, V_ERRDB.RTN_NAME, V_ERRDB.ERR_PARA1, V_ERRDB.ERR_PARA2, V_RTN_MSG); ROLLBACK; RETURN; END; -------------------------------------------------------------------------------- -- PARAMETA ERROR CHECK -------------------------------------------------------------------------------- IF P_STATUS NOT IN('N','U','D') THEN V_ERRDB.ERR_DESC := C_PGM_ID||'-'||'STATUS ERROR'; --V_ERRDB.ERR_PARA1 := P_REF_NUM; RAISE PGM_EXIT; END IF; -------------------------------------------------------------------------------- -- CHEMICAL RESULT READ & EDIT -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- DATA EDITION -------------------------------------------------------------------------------- V_DATA_LEN := C_HEAD_LEN + C_DATA_LEN + 10; V_HEADER := RPAD(NVL(V_DATA_LEN, 0), 12, ' ') || -- 1 ~ 12 RPAD(NVL(C_DOMAIN_NAME, 0), 50, ' ') || -- 13 ~ 62 RPAD(NVL(C_QUEUEID, ' '), 12, ' ') || -- 63 ~ 74 RPAD(TO_CHAR(SYSDATE, 'YYYYMMDD'), 8, ' ') || -- 75 ~ 82 RPAD(TO_CHAR(SYSDATE, 'HH24MISS'), 6, ' ') || -- 83 ~ 88 RPAD(NVL(C_CHAR_SET, ' '), 2, ' ') || -- 89 ~ 90 RPAD(NVL(C_MSG_TYPE, ' '), 2, ' ') || -- 91 ~ 92 RPAD(NVL(C_MSG_FORM, ' '), 1, ' ') || -- 93 ~ 93 RPAD(NVL(C_COMPANY_ID, ' '), 10, ' ') || -- 94 ~ 103 RPAD(NVL(C_PSW, ' '), 10, ' ') || -- 104 ~ 113 RPAD(NVL(C_POINTER, ' '), 6, ' ') || -- 114 ~ 119 RPAD(NVL(C_RESERVED, ' '), 10, ' '); -- 120 ~ 129 SELECT RPAD(NVL(C_FORM_ID, ' '), 10, ' ') || -- 1 ~ 10 RPAD(NVL(C_STATUS, ' '), 1, ' ') || -- 11 RPAD(NVL(R_TB_POD_011.COMP_ID,' '),10,' ') || --12~21 RPAD(NVL(R_TB_POD_011.ORDER_NO,' '),15,' ') || --22~36 RPAD(NVL(R_TB_POD_011.ORDER_ITEM,' '),4,' ') || --37~40 RPAD(NVL(R_TB_POD_011.LOTNO,' '),15,' ') || --41~55 RPAD(NVL(R_TB_POD_011.SEQUENCENO,' '),15,' ') || --56~70 RPAD(NVL(R_TB_POD_011.LINENO,' '),2,' ')|| --71~72 RPAD(NVL(R_TB_POD_011.HOUSENO,' '),2,' ') || --73~74 RPAD(NVL(R_TB_POD_011.MILL_DATE,' '),14,' ') || --75~88 RPAD(NVL(R_TB_POD_011.HEATNO,' '),8,' ') || --89~96 RPAD(NVL(R_TB_POD_011.INPCS,0),6,' ') || --97~102 RPAD(NVL(R_TB_POD_011.INWGT,0),16,' ') || --103~118 RPAD(NVL(R_TB_POD_011.TRADE_NO,' '),15,' ') || --119~133 RPAD(NVL(R_TB_POD_011.ORDER_LENGTH,0),11,' ') || --134~144 RPAD(NVL(R_TB_POD_011.ORDER_WIDTH,0),11, ' ') || --145~155 RPAD(NVL(R_TB_POD_011.ORDER_THICK,0),11,' ') || --156~166 RPAD(NVL(R_TB_POD_011.PCS_PLAN,0),9,' ') || --167~175 RPAD(NVL(R_TB_POD_011.PLANWGT,0),16,' ') || --176~191 RPAD(NVL(R_TB_POD_011.LOC,' '),9,' ') || --192~200 RPAD(NVL(R_TB_POD_011.RECODE,' '),1,' ') || --201 RPAD(NVL(R_TB_POD_011.ENDUSE,' '),1,' ') || --202 RPAD(NVL(R_TB_POD_011.CUST_NO,' '),20,' ') || --203~222 RPAD(NVL(R_TB_POD_011.ORDER_LACKWGT,0),13,' ') || --223~235 RPAD(NVL(R_TB_POD_011.ISBOOMORDER,' '),1,' ') || --236 RPAD(NVL(R_TB_POD_011.DEPT,' '),5,' ') || --237~241 RPAD(NVL(R_TB_POD_011.LOCTYPE,' '),1,' ') || --242 RPAD(NVL(R_TB_POD_011.LAYER,0),3,' ') --243~245 ---------------------------------------------------------------------------------------------- --RPAD(NVL(C_FORM_ID, ' '), 10, ' ') || -- 1 ~ 10 -- RPAD(NVL(C_STATUS, ' '), 1, ' ') || -- 11 -- RPAD(NVL(R_TB_OD_0002.LOTNO, ' '), 15, ' ') || -- 12- 24 -- RPAD(NVL(R_TB_OD_0002.ID, ' '), 4, ' ') || -- 25 ~ 28 -- RPAD(NVL(R_TB_OD_0002.ISWASTE, 0), 1, ' ') || -- 29 -- RPAD(NVL(R_TB_OD_0002.WGT||'', 0), 12, ' ') || -- 30 ~ 31 -- RPAD(NVL(R_TB_OD_0002.PCS||'', ' '), 1, ' ') || -- 32 ~ 34 -- RPAD(NVL(R_TB_OD_0002.ORDERCALIBER||'', ' '), 8, ' ') || -- 35 ~ 42 -- RPAD(NVL(R_TB_OD_0002.ORDERWIDTH||'', ' '), 8, ' ') || -- 43 ~ 50 -- RPAD(NVL(R_TB_OD_0002.ORDERLEN||'', 0), 8, ' ') || -- 51 ~ 58 -- RPAD(NVL('', 0), 8, ' ') || -- 59 ~ 66 -- RPAD(NVL('', 0), 6, ' ') || -- 67 ~ 72 -- RPAD(NVL(R_TB_OD_0002.OPERATECREW, 0), 1, ' ') || -- 73 -- RPAD(NVL('', 0), 5, ' ') || -- 74 ~ 78 -- RPAD(NVL('', 0), 6, ' ') || -- 79 ~ 84 -- RPAD(NVL('', 0), 20, ' ') || -- 85 ~ 104 -- RPAD(NVL('', 0), 14, ' ') || -- 105 ~ 118 -- RPAD(NVL('', 0), 8, ' ') || -- 119 ~ 126 -- RPAD(NVL('', 0), 1, ' ') || -- 127 -- RPAD(NVL('', 0), 1, ' ') || -- 128 -- RPAD(NVL('', 0), 10, ' ') || -- 129 ~ 138 -- RPAD(NVL('', 0), 12, ' ') || -- 139 ~ 150 -- RPAD(NVL('', 0), 1, ' ') || -- 151 -- RPAD(NVL('', 0), 15, ' ')-- 152 ~ 166 ------------------------------------------------------------------------------------------------ INTO V_DATA FROM DUAL; --2018,06,20 sunbin end -------------------------------------------------------------------------------- -- INTERFACE SEQUENCS -------------------------------------------------------------------------------- SELECT (TO_DATE(TO_CHAR(SYSTIMESTAMP(3), 'YYYYMMDDHH24MISS'), 'YYYYMMDDHH24MISS') - TO_DATE('19700101080000', 'YYYYMMDDHH24MISS')) * 86400000 + TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) INTO V_TIMESTAMP FROM DUAL; -------------------------------------------------------------------------------- -- PARAMETA ERROR CHECK -------------------------------------------------------------------------------- BEGIN INSERT INTO TBDIPDO VALUES (V_TIMESTAMP, GS_TBDIPDO_SEQ.NEXTVAL, C_QUEUEID, V_HEADER, V_DATA, C_STATUS, NULL, -- PROCESS TIME NULL -- DESCRIPTION (PROCESS ERROR MESSAGE) ); EXCEPTION WHEN OTHERS THEN P_RTN_MSG := 'DATA ERP INTERFACE DB INSERT ERROR(TQF_RFP)'; V_ERRDB.ERR_DESC := SQLCODE || '>>' || SUBSTR(SQLERRM, 1, 90); V_ERRDB.RTN_NAME := 'DATA SEND TO ERP SYSTEM'; V_ERRDB.ERR_PARA1 := ''; V_ERRDB.ERR_PARA2 := ''; GP_ERROR(C_PGM_ID, 'TBDIPDO', 'B', V_ERRDB.ERR_DESC, V_ERRDB.RTN_NAME, V_ERRDB.ERR_PARA1, V_ERRDB.ERR_PARA2, V_RTN_MSG); ROLLBACK; RETURN; END; RETURN; EXCEPTION WHEN PGM_EXIT THEN V_ERRDB.ERR_DESC := P_RTN_MSG; --DBMS_OUTPUT.PUT_LINE(C_PGM_ID||V_ERRDB.ERR_DESC); V_ERRDB.RTN_NAME := 'DATA SEND TO ERP SYSTEM'; V_ERRDB.ERR_PARA2 := ''; GP_ERROR(C_PGM_ID, '', '', V_ERRDB.ERR_DESC, V_ERRDB.RTN_NAME, V_ERRDB.ERR_PARA1, V_ERRDB.ERR_PARA2, V_RTN_MSG); ROLLBACK; RETURN; WHEN OTHERS THEN V_ERRDB.ERR_DESC := SQLCODE || '>>' || SUBSTR(SQLERRM, 1, 90); P_RTN_MSG := V_ERRDB.ERR_DESC; --DBMS_OUTPUT.PUT_LINE(C_PGM_ID||'--'||V_ERRDB.ERR_DESC); V_ERRDB.RTN_NAME := 'DATA SEND TO ERP SYSTEM'; V_ERRDB.ERR_PARA1 := ''; V_ERRDB.ERR_PARA2 := ''; GP_ERROR(C_PGM_ID, 'TBDIPDO', 'R', V_ERRDB.ERR_DESC, V_ERRDB.RTN_NAME, V_ERRDB.ERR_PARA1, V_ERRDB.ERR_PARA2, V_RTN_MSG); ROLLBACK; RETURN; END WDC11AP;