Modified full box reject logic within NCR_ACTIONS to not execute if the associated WO_MAT record already has a batch number. If it does, the scrapped quantity will be accounted for in SAP against the SAP batch using the SCRAP_IN transaction logic within NCR_ACTIONS.
This commit is contained in:
@ -147,6 +147,7 @@ READ_RECORD_PRE:
|
||||
// ActionFlow = ACTION_STOP$
|
||||
return
|
||||
|
||||
|
||||
READ_RECORD:
|
||||
// In order to stop a record from being read in this action these lines of code must be used:
|
||||
//
|
||||
@ -174,6 +175,7 @@ READ_RECORD:
|
||||
|
||||
return
|
||||
|
||||
|
||||
READONLY_RECORD_PRE:
|
||||
// In order to stop a record from being read in this action these lines of code must be used:
|
||||
//
|
||||
@ -183,6 +185,7 @@ READONLY_RECORD_PRE:
|
||||
// ActionFlow = ACTION_STOP$
|
||||
return
|
||||
|
||||
|
||||
READONLY_RECORD:
|
||||
// In order to stop a record from being read in this action these lines of code must be used:
|
||||
//
|
||||
@ -210,6 +213,7 @@ READONLY_RECORD:
|
||||
|
||||
return
|
||||
|
||||
|
||||
WRITE_RECORD_PRE:
|
||||
|
||||
WorkOrderNo = {WO_NO}
|
||||
@ -260,6 +264,7 @@ WRITE_RECORD_PRE:
|
||||
|
||||
return
|
||||
|
||||
|
||||
WRITE_RECORD:
|
||||
|
||||
NCRNo = @ID
|
||||
@ -286,6 +291,7 @@ WRITE_RECORD:
|
||||
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
WMIKey = WoMatRec<WO_MAT_WMI_KEY$>
|
||||
WMOKey = WoMatRec<WO_MAT_WMO_KEY$>
|
||||
|
||||
If WMIKey NE '' then
|
||||
WMIRec = Database_Services('ReadDataRow', 'WM_IN', WMIKey)
|
||||
Database_Services('WriteDataRow', 'WM_IN', WMIKey, WMIRec, True$, True$, False$)
|
||||
@ -369,190 +375,45 @@ WRITE_RECORD:
|
||||
end
|
||||
end
|
||||
|
||||
// NCR has been closed. Check if it is a full box reject.
|
||||
WONo = {WO_NO}
|
||||
CassNo = {WO_MAT_CASS_NO}
|
||||
WOStep = {WO_STEP}
|
||||
WOStepNo = WOStep
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
SAPBatchNo = WoMatRec<WO_MAT_SAP_BATCH_NO$>
|
||||
If (SAPBatchNo EQ '') then
|
||||
// NCR has been closed and SAPBatchNo is null. Check if it is a full box reject. If it is send a cassette
|
||||
// complete transaction (with zero GR wafers!) to record the scrap quantity in SAP.
|
||||
WONo = {WO_NO}
|
||||
CassNo = {WO_MAT_CASS_NO}
|
||||
WOStep = {WO_STEP}
|
||||
WOStepNo = WOStep
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
|
||||
If (ReactorType EQ 'EPP') then
|
||||
If (ReactorType EQ 'EPP') then
|
||||
|
||||
InCassNos = {CASS_NO}
|
||||
InCassNos = {CASS_NO}
|
||||
|
||||
****************************************************************************
|
||||
* Verify the need to "Auto-Sign" the box after returning from the NCR form *
|
||||
****************************************************************************
|
||||
****************************************************************************
|
||||
* Verify the need to "Auto-Sign" the box after returning from the NCR form *
|
||||
****************************************************************************
|
||||
|
||||
CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
||||
CurrWfrCount = Xlate('WM_OUT', WMOKey, 'WAFER_CNT', 'X')
|
||||
If CurrWfrCount EQ '' then CurrWfrCount = 0
|
||||
WMOKey = WONo:'*':WOStep:'*':CassNo
|
||||
NCRNos = Xlate('WM_OUT', WMOKey, 'SLOT_NCR', 'X')
|
||||
RejectedQty = 0
|
||||
If NCRNos NE '' then
|
||||
For each NCRNo in NCRNos using @VM
|
||||
RejectedQty += (NCRNo NE '')
|
||||
Next NCRNo
|
||||
end
|
||||
|
||||
If ( (CurrWfrCount EQ 0) and (RejectedQty GE CassetteQty) ) then
|
||||
|
||||
// Full box reject
|
||||
*****************************
|
||||
* Set SAP Batch as Rejected *
|
||||
*****************************
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
ProdOrdNo = XLATE('WO_LOG',WONo,WO_LOG_PROD_ORD_NO$,'X')
|
||||
ProdOrdNo[-1,1] = 'R'
|
||||
SAPBatchNo = ProdOrdNo
|
||||
WOMatRec<WO_MAT_SAP_BATCH_NO$> = SAPBatchNo
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WoMatRec, True$, False$, True$)
|
||||
|
||||
*****************
|
||||
* Auto-Sign FQA *
|
||||
*****************
|
||||
SigDate = Date()
|
||||
SigTime = Time()
|
||||
SigDt = OCONV(SigDate, 'D2/')
|
||||
SigTm = OConv(SigTime, 'MTS')
|
||||
SigTmPlusOne = OCONV(SigTime + 1, 'MTS' )
|
||||
SigTmPlusTwo = OCONV(SigTime + 2, 'MTS' )
|
||||
SigDTM = SigDate + (SigTime / 86400) ; // 86400 = 24 hours * 60 minutes * 60 seconds
|
||||
SignedBy = 'AUTO_FQA'
|
||||
ToolID = ''
|
||||
WHCode = 'CR' /* Warehouse Code = Cleanroom */
|
||||
LocCode = 'QA' /* Location Code = QA */
|
||||
ActionCode = 'REJ' /* Action Code = Rejected */
|
||||
Tag = ''
|
||||
|
||||
// Sign WM_OUT<SIG_SUP_VER>
|
||||
StatusStage = 'MO_QA'
|
||||
WMOKey = Xlate('WO_MAT', WOMatKey, 'WMO_KEY', 'X')
|
||||
WMORec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey)
|
||||
WMORec<WM_OUT_SUP_VER_SIG$> = SignedBy
|
||||
WMORec<WM_OUT_SUP_VER_SIG_DTM$> = IConv(SigDt:' ':SigTm, 'DT')
|
||||
Database_Services('WriteDataRow', 'WM_OUT', WMOKey, WMORec, True$, False$, True$)
|
||||
|
||||
***************************
|
||||
* Log the signature event *
|
||||
***************************
|
||||
Set_Status(0)
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
||||
EventParms<COL$ACTION> = WOStepNo:'QA'
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
CONVERT @FM TO @RM IN EventParms
|
||||
obj_WO_Mat_Log('Create', EventParms)
|
||||
errCode = ''
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
|
||||
*********************************
|
||||
* Log the full box reject event *
|
||||
*********************************
|
||||
Set_Status(0)
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTmPlusTwo
|
||||
EventParms<COL$ACTION> = ActionCode
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
CONVERT @FM TO @RM IN EventParms
|
||||
obj_WO_Mat_Log('Create',EventParms)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
|
||||
**********************************************************************
|
||||
* Synchonize the WO_MAT schedule wafers quatity with the RDS records *
|
||||
**********************************************************************
|
||||
IF (Not(ReactorType = 'EPP') and Not(ReactorType = 'EpiPro')) THEN
|
||||
IF (RDSNo NE '') THEN
|
||||
RDSRec = obj_Tables('ReadOnlyRec','RDS':@RM:RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
obj_Tables('WriteOnlyRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
||||
|
||||
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
|
||||
WMRDSNos = WOMatRec<WO_MAT_RDS_NO$>
|
||||
LOCATE RDSNo IN WMRDSNos USING @VM SETTING Pos THEN
|
||||
NextRDSNo = WMRDSNos<1,Pos+1>
|
||||
IF (NextRDSNo NE '') THEN
|
||||
CurrWfrQty = obj_WO_Mat('CurrWaferCnt', WOMatKey:@RM:WOMatRec)
|
||||
Set_Status(0)
|
||||
obj_RDS('SetSchedWfrQty', NextRDSNo:@RM:CurrWfrQty)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
|
||||
***********************************************************************
|
||||
* Send CASS_COMP transaction to SAP to inform SAP of the rejected box *
|
||||
***********************************************************************
|
||||
SAP_Services('AddCassCompTransaction', WOMatKey)
|
||||
END
|
||||
|
||||
end else
|
||||
|
||||
// Non-EpiPro
|
||||
****************************************************************************
|
||||
* Verify the need to "Auto-Sign" the box after returning from the NCR form *
|
||||
****************************************************************************
|
||||
|
||||
RejectedWafers = 0
|
||||
RejectedMUWafers = 0
|
||||
ProdTestWafers = 0
|
||||
|
||||
If ( (WONo NE '') and (CassNo NE '') ) then
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
Set_Status(0)
|
||||
CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
||||
RejectedWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_WFRS', 'X')
|
||||
RejectedMUWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_MU_WFRS', 'X')
|
||||
ProdTestWafers = XLATE('WO_MAT', WOMatKey, 'TW_PROD','X')
|
||||
CurrWfrCount = XLATE('WO_MAT', WOMatKey, 'CURR_WFR_CNT', 'X')
|
||||
|
||||
IF (RejectedWafers = '') then
|
||||
RejectedWafers = 0
|
||||
END
|
||||
IF (RejectedMUWafers = '') then
|
||||
RejectedMUWafers = 0
|
||||
END
|
||||
IF (ProdTestWafers = '') then
|
||||
ProdTestWafers = 0
|
||||
END
|
||||
|
||||
IF ((ReactorType = 'EPP') OR (ReactorType = 'EpiPro')) THEN
|
||||
RejectedQty = RejectedWafers + RejectedMUWafers
|
||||
END ELSE
|
||||
RejectedQty = RejectedWafers + RejectedMUWafers + ProdTestWafers
|
||||
END
|
||||
CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
||||
CurrWfrCount = Xlate('WM_OUT', WMOKey, 'WAFER_CNT', 'X')
|
||||
If CurrWfrCount EQ '' then CurrWfrCount = 0
|
||||
WMOKey = WONo:'*':WOStep:'*':CassNo
|
||||
NCRNos = Xlate('WM_OUT', WMOKey, 'SLOT_NCR', 'X')
|
||||
RejectedQty = 0
|
||||
If NCRNos NE '' then
|
||||
For each NCRNo in NCRNos using @VM
|
||||
RejectedQty += (NCRNo NE '')
|
||||
Next NCRNo
|
||||
end
|
||||
|
||||
If ( (CurrWfrCount EQ 0) and (RejectedQty GE CassetteQty) ) then
|
||||
****************************************************
|
||||
* Set SAP Batch as Rejected - full cassette reject *
|
||||
****************************************************
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
ProdOrdNo = XLATE('WO_LOG', WONo, WO_LOG_PROD_ORD_NO$, 'X')
|
||||
|
||||
// Full box reject
|
||||
*****************************
|
||||
* Set SAP Batch as Rejected *
|
||||
*****************************
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
ProdOrdNo = XLATE('WO_LOG',WONo,WO_LOG_PROD_ORD_NO$,'X')
|
||||
ProdOrdNo[-1,1] = 'R'
|
||||
SAPBatchNo = ProdOrdNo
|
||||
WOMatRec<WO_MAT_SAP_BATCH_NO$> = SAPBatchNo
|
||||
@ -564,10 +425,9 @@ WRITE_RECORD:
|
||||
SigDate = Date()
|
||||
SigTime = Time()
|
||||
SigDt = OCONV(SigDate, 'D2/')
|
||||
SigTm = SigTime
|
||||
SigTmPlusOne = OCONV(SigTm + 1, 'MTS' )
|
||||
SigTmPlusTwo = OCONV(SigTm + 2, 'MTS' )
|
||||
SigTm = OCONV(SigTm,'MTS')
|
||||
SigTm = OConv(SigTime, 'MTS')
|
||||
SigTmPlusOne = OCONV(SigTime + 1, 'MTS' )
|
||||
SigTmPlusTwo = OCONV(SigTime + 2, 'MTS' )
|
||||
SigDTM = SigDate + (SigTime / 86400) ; // 86400 = 24 hours * 60 minutes * 60 seconds
|
||||
SignedBy = 'AUTO_FQA'
|
||||
ToolID = ''
|
||||
@ -576,35 +436,34 @@ WRITE_RECORD:
|
||||
ActionCode = 'REJ' /* Action Code = Rejected */
|
||||
Tag = ''
|
||||
|
||||
// Sign RDS FQA Signature
|
||||
StatusStage = 'QA'
|
||||
RDSNo = Xlate('WO_MAT', WOMatKey, 'RDS_NO', 'X')
|
||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
||||
// Sign WM_OUT<SIG_SUP_VER>
|
||||
StatusStage = 'MO_QA'
|
||||
WMOKey = Xlate('WO_MAT', WOMatKey, 'WMO_KEY', 'X')
|
||||
WMORec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey)
|
||||
WMORec<WM_OUT_SUP_VER_SIG$> = SignedBy
|
||||
WMORec<WM_OUT_SUP_VER_SIG_DTM$> = IConv(SigDt:' ':SigTm, 'DT')
|
||||
Database_Services('WriteDataRow', 'WM_OUT', WMOKey, WMORec, True$, False$, True$)
|
||||
|
||||
***************************
|
||||
* Log the signature event *
|
||||
***************************
|
||||
Set_Status(0)
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
||||
EventParms<COL$ACTION> = WOStepNo:'QA'
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
||||
EventParms<COL$ACTION> = WOStepNo:'QA'
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
CONVERT @FM TO @RM IN EventParms
|
||||
obj_WO_Mat_Log('Create', EventParms)
|
||||
errCode = ''
|
||||
errCode = ''
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':errCode)
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
|
||||
*********************************
|
||||
@ -631,23 +490,25 @@ WRITE_RECORD:
|
||||
**********************************************************************
|
||||
* Synchonize the WO_MAT schedule wafers quatity with the RDS records *
|
||||
**********************************************************************
|
||||
IF (RDSNo NE '') THEN
|
||||
RDSRec = obj_Tables('ReadOnlyRec','RDS':@RM:RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
obj_Tables('WriteOnlyRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
||||
IF (Not(ReactorType = 'EPP') and Not(ReactorType = 'EpiPro')) THEN
|
||||
IF (RDSNo NE '') THEN
|
||||
RDSRec = obj_Tables('ReadOnlyRec','RDS':@RM:RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
obj_Tables('WriteOnlyRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
||||
|
||||
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
|
||||
WMRDSNos = WOMatRec<WO_MAT_RDS_NO$>
|
||||
LOCATE RDSNo IN WMRDSNos USING @VM SETTING Pos THEN
|
||||
NextRDSNo = WMRDSNos<1,Pos+1>
|
||||
IF (NextRDSNo NE '') THEN
|
||||
CurrWfrQty = obj_WO_Mat('CurrWaferCnt', WOMatKey:@RM:WOMatRec)
|
||||
Set_Status(0)
|
||||
obj_RDS('SetSchedWfrQty', NextRDSNo:@RM:CurrWfrQty)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
|
||||
WMRDSNos = WOMatRec<WO_MAT_RDS_NO$>
|
||||
LOCATE RDSNo IN WMRDSNos USING @VM SETTING Pos THEN
|
||||
NextRDSNo = WMRDSNos<1,Pos+1>
|
||||
IF (NextRDSNo NE '') THEN
|
||||
CurrWfrQty = obj_WO_Mat('CurrWaferCnt', WOMatKey:@RM:WOMatRec)
|
||||
Set_Status(0)
|
||||
obj_RDS('SetSchedWfrQty', NextRDSNo:@RM:CurrWfrQty)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
@ -660,13 +521,163 @@ WRITE_RECORD:
|
||||
END
|
||||
|
||||
end else
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. WONo and/or CassNo are null!.')
|
||||
|
||||
// Non-EpiPro
|
||||
****************************************************************************
|
||||
* Verify the need to "Auto-Sign" the box after returning from the NCR form *
|
||||
****************************************************************************
|
||||
|
||||
RejectedWafers = 0
|
||||
RejectedMUWafers = 0
|
||||
ProdTestWafers = 0
|
||||
|
||||
If ( (WONo NE '') and (CassNo NE '') ) then
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
Set_Status(0)
|
||||
CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X')
|
||||
RejectedWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_WFRS', 'X')
|
||||
RejectedMUWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_MU_WFRS', 'X')
|
||||
ProdTestWafers = XLATE('WO_MAT', WOMatKey, 'TW_PROD','X')
|
||||
CurrWfrCount = XLATE('WO_MAT', WOMatKey, 'CURR_WFR_CNT', 'X')
|
||||
|
||||
IF (RejectedWafers = '') then
|
||||
RejectedWafers = 0
|
||||
END
|
||||
IF (RejectedMUWafers = '') then
|
||||
RejectedMUWafers = 0
|
||||
END
|
||||
IF (ProdTestWafers = '') then
|
||||
ProdTestWafers = 0
|
||||
END
|
||||
|
||||
IF ((ReactorType = 'EPP') OR (ReactorType = 'EpiPro')) THEN
|
||||
RejectedQty = RejectedWafers + RejectedMUWafers
|
||||
END ELSE
|
||||
RejectedQty = RejectedWafers + RejectedMUWafers + ProdTestWafers
|
||||
END
|
||||
|
||||
If ( (CurrWfrCount EQ 0) and (RejectedQty GE CassetteQty) ) then
|
||||
****************************************************
|
||||
* Set SAP Batch as Rejected - full cassette reject *
|
||||
****************************************************
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
ProdOrdNo = XLATE('WO_LOG', WONo, WO_LOG_PROD_ORD_NO$, 'X')
|
||||
ProdOrdNo[-1,1] = 'R'
|
||||
SAPBatchNo = ProdOrdNo
|
||||
WOMatRec<WO_MAT_SAP_BATCH_NO$> = SAPBatchNo
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WoMatRec, True$, False$, True$)
|
||||
|
||||
*****************
|
||||
* Auto-Sign FQA *
|
||||
*****************
|
||||
SigDate = Date()
|
||||
SigTime = Time()
|
||||
SigDt = OCONV(SigDate, 'D2/')
|
||||
SigTm = SigTime
|
||||
SigTmPlusOne = OCONV(SigTm + 1, 'MTS' )
|
||||
SigTmPlusTwo = OCONV(SigTm + 2, 'MTS' )
|
||||
SigTm = OCONV(SigTm,'MTS')
|
||||
SigDTM = SigDate + (SigTime / 86400) ; // 86400 = 24 hours * 60 minutes * 60 seconds
|
||||
SignedBy = 'AUTO_FQA'
|
||||
ToolID = ''
|
||||
WHCode = 'CR' /* Warehouse Code = Cleanroom */
|
||||
LocCode = 'QA' /* Location Code = QA */
|
||||
ActionCode = 'REJ' /* Action Code = Rejected */
|
||||
Tag = ''
|
||||
|
||||
// Sign RDS FQA Signature
|
||||
StatusStage = 'QA'
|
||||
RDSNo = Xlate('WO_MAT', WOMatKey, 'RDS_NO', 'X')
|
||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
|
||||
|
||||
***************************
|
||||
* Log the signature event *
|
||||
***************************
|
||||
Set_Status(0)
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTm
|
||||
EventParms<COL$ACTION> = WOStepNo:'QA'
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
CONVERT @FM TO @RM IN EventParms
|
||||
obj_WO_Mat_Log('Create', EventParms)
|
||||
errCode = ''
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':errCode)
|
||||
END
|
||||
|
||||
*********************************
|
||||
* Log the full box reject event *
|
||||
*********************************
|
||||
Set_Status(0)
|
||||
EventParms = ''
|
||||
EventParms<COL$LOG_FILE> = 'WO_MAT'
|
||||
EventParms<COL$LOG_DTM> = SigDt:' ':SigTmPlusTwo
|
||||
EventParms<COL$ACTION> = ActionCode
|
||||
EventParms<COL$WH_CD> = WHCode
|
||||
EventParms<COL$LOC_CD> = LocCode
|
||||
EventParms<COL$WO_NOS> = WONo
|
||||
EventParms<COL$CASS_NOS> = CassNo
|
||||
EventParms<COL$USER_ID> = SignedBy
|
||||
EventParms<COL$TAGS> = ''
|
||||
EventParms<COL$TOOL_ID> = ''
|
||||
CONVERT @FM TO @RM IN EventParms
|
||||
obj_WO_Mat_Log('Create',EventParms)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
|
||||
**********************************************************************
|
||||
* Synchonize the WO_MAT schedule wafers quatity with the RDS records *
|
||||
**********************************************************************
|
||||
IF (RDSNo NE '') THEN
|
||||
RDSRec = obj_Tables('ReadOnlyRec','RDS':@RM:RDSNo)
|
||||
RDSRec<RDS_SUP_VER_SIG$> = SignedBy
|
||||
RDSRec<RDS_SUP_VER_SIG_DATE$> = SigDate
|
||||
RDSRec<RDS_SUP_VER_SIG_TIME$> = SigTime
|
||||
obj_Tables('WriteOnlyRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
||||
|
||||
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
|
||||
WMRDSNos = WOMatRec<WO_MAT_RDS_NO$>
|
||||
LOCATE RDSNo IN WMRDSNos USING @VM SETTING Pos THEN
|
||||
NextRDSNo = WMRDSNos<1,Pos+1>
|
||||
IF (NextRDSNo NE '') THEN
|
||||
CurrWfrQty = obj_WO_Mat('CurrWaferCnt', WOMatKey:@RM:WOMatRec)
|
||||
Set_Status(0)
|
||||
obj_RDS('SetSchedWfrQty', NextRDSNo:@RM:CurrWfrQty)
|
||||
IF Get_Status(errCode) THEN
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. Error code: ':ErrCode)
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
|
||||
***********************************************************************
|
||||
* Send CASS_COMP transaction to SAP to inform SAP of the rejected box *
|
||||
***********************************************************************
|
||||
SAP_Services('AddCassCompTransaction', WOMatKey)
|
||||
END
|
||||
|
||||
end else
|
||||
Error_Services('Add', 'Error in NCR_ACTIONS. WONo and/or CassNo are null!.')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
|
||||
|
||||
DELETE_RECORD_PRE:
|
||||
|
||||
WorkOrderNo = {WO_NO}
|
||||
|
||||
Reference in New Issue
Block a user