Modified ApplyQA100PercentADE service to delete the @VM delimited test instead of just clearing it.

This commit is contained in:
Infineon\StieberD
2025-09-22 10:27:18 -07:00
parent 18f17f1d77
commit 9d6c4c154f
4 changed files with 155 additions and 76 deletions

View File

@ -646,7 +646,7 @@ MakeUpClick:
Set_Property(@WINDOW,'SAVEWARN', False$) Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR') Send_Event(@WINDOW,'CLEAR')
If (CheckValue EQ True$) then If (CheckValue EQ True$) then
Wo_Mat_Services('MakeupFlagOn', RDSNo) Wo_Mat_Services('MakeupFlagOn', WOMatKey)
end end
end end
end else end else
@ -815,3 +815,4 @@ BatchFixit:
RETURN RETURN

View File

@ -827,7 +827,8 @@ AddMakeup:
ErrMsg('Unable to set makeup flag until Unload stage is signed.') ErrMsg('Unable to set makeup flag until Unload stage is signed.')
Return Return
END else END else
Wo_Mat_Services('MakeupFlagOn', RDSNo) Wo_Mat_Services('MakeupFlagOn', WOMatKey)
If Error_Services('HasError') then ErrMsg(Error_Services('GetMessage'))
end end
end end
@ -1064,7 +1065,8 @@ MakeUpLot:
Set_Property(@WINDOW,'SAVEWARN', False$) Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR') Send_Event(@WINDOW,'CLEAR')
If (CheckValue EQ True$) then If (CheckValue EQ True$) then
Wo_Mat_Services('MakeupFlagOn', RDSNo) Wo_Mat_Services('MakeupFlagOn', WOMatKey)
If Error_Services('HasError') then ErrMsg(Error_Services('GetMessage'))
end end
end end
end else end else

View File

@ -1800,54 +1800,119 @@ Service ApplyQA100PercentADE(RDSNo)
WoWaferQty = Xlate('RDS', RDSNo, 'WFRS_OUT', 'X') WoWaferQty = Xlate('RDS', RDSNo, 'WFRS_OUT', 'X')
end end
WoMatQaStages = WoMatQaRec<WO_MAT_QA_STAGE$> WoMatQaStages = WoMatQaRec<WO_MAT_QA_STAGE$>
WoMatQaProfiles = WoMatQaRec<WO_MAT_QA_PROFILE$> WoMatQaProfiles = WoMatQaRec<WO_MAT_QA_PROFILE$>
WoMatQaSlots = WoMatQaRec<WO_MAT_QA_SLOT$> WoMatQaProps = WoMatQaRec<WO_MAT_QA_PROP$>
WoMatQaWfrQtys = WoMatQaRec<WO_MAT_QA_WFR_QTY$> WoMatQaToolClasses = WoMatQaRec<WO_MAT_QA_TOOL_CLASS$>
WoMatQaProps = WoMatQaRec<WO_MAT_QA_PROP$> WoMatQaRecipes = WoMatQaRec<WO_MAT_QA_RECIPE$>
WoMatQaToolClasses = WoMatQaRec<WO_MAT_QA_TOOL_CLASS$> WoMatQaRecipePatterns = WoMatQaRec<WO_MAT_QA_RECIPE_PATTERN$>
WoMatQaRecipes = WoMatQaRec<WO_MAT_QA_RECIPE$> WoMatQaMin = WoMatQaRec<WO_MAT_QA_MIN$>
WoMatQaRecipePatterns = WoMatQaRec<WO_MAT_QA_RECIPE_PATTERN$> WoMatQaMax = WoMatQaRec<WO_MAT_QA_MAX$>
WoMatQaMin = WoMatQaRec<WO_MAT_QA_MIN$> WoMatQaSlots = WoMatQaRec<WO_MAT_QA_SLOT$>
WoMatQaMax = WoMatQaRec<WO_MAT_QA_MAX$> WoMatQaSlotTests = WoMatQaRec<WO_MAT_QA_SLOT_TEST$>
WoMatQaOOS = WoMatQaRec<WO_MAT_QA_OUT_OF_SPEC$> WoMatQaResults = WoMatQaRec<WO_MAT_QA_RESULT$>
StageCount = DCount(WoMatQaStages, @VM) WoMatQaStdMaxes = WoMatQaRec<WO_MAT_QA_STD_MAX$>
WoMatQaStdResults = WoMatQaRec<WO_MAT_QA_STD_RESULT$>
WoMatQaSigs = WoMatQaRec<WO_MAT_QA_SIG$>
WoMatQaSigDtms = WoMatQaRec<WO_MAT_QA_SIG_DTM$>
WoMatQaWfrQtys = WoMatQaRec<WO_MAT_QA_WFR_QTY$>
WoMatQaWfrTypes = WoMatQaRec<WO_MAT_QA_WFR_TYPE$>
WoMatQaReactScheds = WoMatQaRec<WO_MAT_QA_REACT_SCHED$>
WoMatQaShipDocs = WoMatQaRec<WO_MAT_QA_SHIP_DOC$>
WoMatQaDataPoints = WoMatQaRec<WO_MAT_QA_DATA_POINTS$>
WoMatQaMinResults = WoMatQaRec<WO_MAT_QA_MIN_RESULT$>
WoMatQaMaxResults = WoMatQaRec<WO_MAT_QA_MAX_RESULT$>
WoMatQaRngResults = WoMatQaRec<WO_MAT_QA_RANGE_PCT_RESULT$>
WoMatQaEdgeResults = WoMatQaRec<WO_MAT_QA_EDGE_MEAN_RESULT$>
WoMatQa5mmResults = WoMatQaRec<WO_MAT_QA_5MM_PCT_RESULT$>
WoMatQaOOS = WoMatQaRec<WO_MAT_QA_OUT_OF_SPEC$>
WoMatQaPhaseMins = WoMatQaRec<WO_MAT_QA_PHASE_MIN$>
WoMatQaFailReasons = WoMatQaRec<WO_MAT_QA_FAIL_REASON$>
StageCount = DCount(WoMatQaStages, @VM)
StageIdxToDelete = ''
For stageIdx = 1 to StageCount For stageIdx = 1 to StageCount
If (WoMatQaStages<0, stageIdx> _EQC 'QA') and (WoMatQaProfiles<0, stageIdx> _EQC '1ADE') then If (WoMatQaStages<0, stageIdx> _EQC 'QA') and (WoMatQaProfiles<0, stageIdx> _EQC '1ADE') then
Slot = WoMatQaSlots<0, stageIdx> Slot = WoMatQaSlots<0, stageIdx>
If (Slot _NEC 'L') then If (Slot _NEC 'L') then
WoMatQaSlots<0, stageIdx> = 'A' WoMatQaSlots<0, stageIdx> = 'A'
WoMatQaWfrQtys<0, stageIdx> = WoWaferQty WoMatQaWfrQtys<0, stageIdx> = WoWaferQty
end WoMatQaSigs<0, stageIdx> = ''
If (Slot _EQC 'L') then WoMatQaSigDtms<0, stageIdx> = ''
WoMatQaStages<0, stageIdx> = '' WoMatQaResults<0, stageIdx> = ''
WoMatQaProfiles<0, stageIdx> = '' WoMatQaDataPoints<0, stageIdx> = ''
WoMatQaSlots<0, stageIdx> = '' WoMatQaMinResults<0, stageIdx> = ''
WoMatQaWfrQtys<0, stageIdx> = '' WoMatQaMaxResults<0, stageIdx> = ''
WoMatQaProps<0, stageIdx> = '' WoMatQaRngResults<0, stageIdx> = ''
WoMatQaToolClasses<0, stageIdx> = '' WoMatQaEdgeResults<0, stageIdx> = ''
WoMatQaRecipes<0, stageIdx> = '' WoMatQa5mmResults<0, stageIdx> = ''
WoMatQaRecipePatterns<0, stageIdx> = ''
WoMatQaMin<0, stageIdx> = ''
WoMatQaMax<0, stageIdx> = ''
WoMatQaOOS<0, stageIdx> = ''
end end
end If (Slot _EQC 'L') then
StageIdxToDelete = stageIdx
end
end
Next stageIdx Next stageIdx
WoMatQaRec<WO_MAT_QA_STAGE$> = WoMatQaStages
WoMatQaRec<WO_MAT_QA_PROFILE$> = WoMatQaProfiles If (StageIdxToDelete NE '') then
WoMatQaRec<WO_MAT_QA_SLOT$> = WoMatQaSlots WoMatQaStages = Delete(WoMatQaStages, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_WFR_QTY$> = WoMatQaWfrQtys WoMatQaProfiles = Delete(WoMatQaProfiles, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_PROP$> = WoMatQaProps WoMatQaProps = Delete(WoMatQaProps, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_TOOL_CLASS$> = WoMatQaToolClasses WoMatQaToolClasses = Delete(WoMatQaToolClasses, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_RECIPE$> = WoMatQaRecipes WoMatQaRecipes = Delete(WoMatQaRecipes, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_RECIPE_PATTERN$> = WoMatQaRecipePatterns WoMatQaRecipePatterns = Delete(WoMatQaRecipePatterns, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_MIN$> = WoMatQaMin WoMatQaMin = Delete(WoMatQaMin, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_MAX$> = WoMatQaMax WoMatQaMax = Delete(WoMatQaMax, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_OUT_OF_SPEC$> = WoMatQaOOS WoMatQaSlots = Delete(WoMatQaSlots, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_SIG$> = '' WoMatQaSlotTests = Delete(WoMatQaSlotTests, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_SIG_DTM$> = '' WoMatQaResults = Delete(WoMatQaResults, 0, StageIdxToDelete, 0)
WoMatQaRec<WO_MAT_QA_RESULT$> = '' WoMatQaSigs = Delete(WoMatQaSigs, 0, StageIdxToDelete, 0)
WoMatQaSigDtms = Delete(WoMatQaSigDtms, 0, StageIdxToDelete, 0)
WoMatQaStdMaxes = Delete(WoMatQaStdMaxes, 0, StageIdxToDelete, 0)
WoMatQaStdResults = Delete(WoMatQaStdResults, 0, StageIdxToDelete, 0)
WoMatQaWfrQtys = Delete(WoMatQaWfrQtys, 0, StageIdxToDelete, 0)
WoMatQaWfrTypes = Delete(WoMatQaWfrTypes, 0, StageIdxToDelete, 0)
WoMatQaReactScheds = Delete(WoMatQaReactScheds, 0, StageIdxToDelete, 0)
WoMatQaShipDocs = Delete(WoMatQaShipDocs, 0, StageIdxToDelete, 0)
WoMatQaDataPoints = Delete(WoMatQaDataPoints, 0, StageIdxToDelete, 0)
WoMatQaMinResults = Delete(WoMatQaMinResults, 0, StageIdxToDelete, 0)
WoMatQaMaxResults = Delete(WoMatQaMaxResults, 0, StageIdxToDelete, 0)
WoMatQaRngResults = Delete(WoMatQaRngResults, 0, StageIdxToDelete, 0)
WoMatQaEdgeResults = Delete(WoMatQaEdgeResults, 0, StageIdxToDelete, 0)
WoMatQa5mmResults = Delete(WoMatQa5mmResults, 0, StageIdxToDelete, 0)
WoMatQaOOS = Delete(WoMatQaOOS, 0, StageIdxToDelete, 0)
WoMatQaPhaseMins = Delete(WoMatQaPhaseMins, 0, StageIdxToDelete, 0)
WoMatQaFailReasons = Delete(WoMatQaFailReasons, 0, StageIdxToDelete, 0)
end
WoMatQaRec<WO_MAT_QA_STAGE$> = WoMatQaStages
WoMatQaRec<WO_MAT_QA_PROFILE$> = WoMatQaProfiles
WoMatQaRec<WO_MAT_QA_PROP$> = WoMatQaProps
WoMatQaRec<WO_MAT_QA_TOOL_CLASS$> = WoMatQaToolClasses
WoMatQaRec<WO_MAT_QA_RECIPE$> = WoMatQaRecipes
WoMatQaRec<WO_MAT_QA_RECIPE_PATTERN$> = WoMatQaRecipePatterns
WoMatQaRec<WO_MAT_QA_MIN$> = WoMatQaMin
WoMatQaRec<WO_MAT_QA_MAX$> = WoMatQaMax
WoMatQaRec<WO_MAT_QA_SLOT$> = WoMatQaSlots
WoMatQaRec<WO_MAT_QA_SLOT_TEST$> = WoMatQaSlotTests
WoMatQaRec<WO_MAT_QA_RESULT$> = WoMatQaResults
WoMatQaRec<WO_MAT_QA_SIG$> = WoMatQaSigs
WoMatQaRec<WO_MAT_QA_SIG_DTM$> = WoMatQaSigDtms
WoMatQaRec<WO_MAT_QA_STD_MAX$> = WoMatQaStdMaxes
WoMatQaRec<WO_MAT_QA_STD_RESULT$> = WoMatQaStdResults
WoMatQaRec<WO_MAT_QA_WFR_QTY$> = WoMatQaWfrQtys
WoMatQaRec<WO_MAT_QA_WFR_TYPE$> = WoMatQaWfrTypes
WoMatQaRec<WO_MAT_QA_REACT_SCHED$> = WoMatQaReactScheds
WoMatQaRec<WO_MAT_QA_SHIP_DOC$> = WoMatQaShipDocs
WoMatQaRec<WO_MAT_QA_DATA_POINTS$> = WoMatQaDataPoints
WoMatQaRec<WO_MAT_QA_MIN_RESULT$> = WoMatQaMinResults
WoMatQaRec<WO_MAT_QA_MAX_RESULT$> = WoMatQaMaxResults
WoMatQaRec<WO_MAT_QA_RANGE_PCT_RESULT$> = WoMatQaRngResults
WoMatQaRec<WO_MAT_QA_EDGE_MEAN_RESULT$> = WoMatQaEdgeResults
WoMatQaRec<WO_MAT_QA_5MM_PCT_RESULT$> = WoMatQa5mmResults
WoMatQaRec<WO_MAT_QA_OUT_OF_SPEC$> = WoMatQaOOS
WoMatQaRec<WO_MAT_QA_PHASE_MIN$> = WoMatQaPhaseMins
WoMatQaRec<WO_MAT_QA_FAIL_REASON$> = WoMatQaFailReasons
Database_Services('WriteDataRow', 'WO_MAT_QA', WoMatQaKey, WoMatQaRec, True$, False$, False$) Database_Services('WriteDataRow', 'WO_MAT_QA', WoMatQaKey, WoMatQaRec, True$, False$, False$)
If Error_Services('HasError') then ErrorMsg = Error_Services('GetMessage') If Error_Services('HasError') then ErrorMsg = Error_Services('GetMessage')
end else end else
@ -2506,4 +2571,3 @@ ClearCursors:
return return

View File

@ -547,34 +547,49 @@ Service SetWoMatVoidFlag(WoMatKey, Username)
end service end service
Service MakeupFlagOn(RDSNo) Service MakeupFlagOn(WOMatKey)
EpiCheck = Rds_Services('IsEpiPro', RDSNo) ErrorMsg = ''
BioRadDown = False$ If (WOMatKey NE '') then
Bio4Down = False$ If RowExists('WO_MAT', WOMatKey) then
Bio5Down = False$ RDSNo = Database_Services('ReadDataColumn', 'WO_MAT', WOMatKey, WO_MAT_RDS_NO$)
Bio4LogKey = Xlate('TOOL', 'BIORAD4', 'CURR_MODE_KEY', 'X') If Error_Services('NoError') then
Bio5LogKey = Xlate('TOOL', 'BIORAD5', 'CURR_MODE_KEY', 'X') EpiCheck = Rds_Services('IsEpiPro', RDSNo)
Bio4Mode = Xlate('TOOL_LOG', Bio4LogKey, 'TOOL_MODE', 'X') BioRadDown = False$
Bio5Mode = Xlate('TOOL_LOG', Bio5LogKey, 'TOOL_MODE', 'X') Bio4Down = False$
Bio5Down = False$
If (Bio4Mode NE 'PROD') AND (Bio4Mode NE 'LIM') then Bio4Down = True$ Bio4LogKey = Xlate('TOOL', 'BIORAD4', 'CURR_MODE_KEY', 'X')
If (Bio5Mode NE 'PROD') AND (Bio5Mode NE 'LIM') then Bio5Down = True$ Bio5LogKey = Xlate('TOOL', 'BIORAD5', 'CURR_MODE_KEY', 'X')
Bio4Mode = Xlate('TOOL_LOG', Bio4LogKey, 'TOOL_MODE', 'X')
If (Bio4Down) AND (Bio5Down) then BioRadDown = True$ Bio5Mode = Xlate('TOOL_LOG', Bio5LogKey, 'TOOL_MODE', 'X')
If EpiCheck EQ False$ then If (Bio4Mode NE 'PROD') AND (Bio4Mode NE 'LIM') then Bio4Down = True$
WOMatKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X') If (Bio5Mode NE 'PROD') AND (Bio5Mode NE 'LIM') then Bio5Down = True$
WOMatQARec = XLATE('WO_MAT_QA',WOMatKey,'','X')
PropRow = WOMatQARec<3> If (Bio4Down) AND (Bio5Down) then BioRadDown = True$
If (Count(PropRow, 'THICK') NE 0) AND (BioRadDown EQ False$) then
CurrentStage = Rds_Services('GetCurrentStage', RDSNo) If EpiCheck EQ False$ then
If CurrentStage EQ 'COMP' then WOMatKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X')
Signature_Services('UnsignFQAStage', RDSNo) WOMatQARec = XLATE('WO_MAT_QA',WOMatKey,'','X')
end PropRow = WOMatQARec<3>
Rds_Services('ApplyQA100PercentADE', RDSNo) If (Count(PropRow, 'THICK') NE 0) AND (BioRadDown EQ False$) then
end CurrentStage = Rds_Services('GetCurrentStage', RDSNo)
end If CurrentStage EQ 'COMP' then
Signature_Services('UnsignFQAStage', RDSNo)
end
Rds_Services('ApplyQA100PercentADE', RDSNo)
end
end
end else
ErrorMsg = 'Error in ':Service:' service. Error reading RDS_NO from WO_MAT record ':WOMatKey:'. '
ErrorMsg := 'Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. WO_MAT record ':WOMatKey:' does not exist.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null WOMatKey passed into service.'
end
end service end service
@ -697,6 +712,3 @@ Service VerifyWOLogWOMatKeyColumn(WOMatKey)
end service end service