remind operator to run test wafer on last cassete in WO
This commit is contained in:
parent
a41136e30e
commit
f8c83dd7f4
@ -53,6 +53,7 @@ $insert CLEAN_INSP_EQUATES
|
||||
$insert REACT_STATE_EQUATES
|
||||
$insert REACT_RUN_EQUATES
|
||||
$insert REACT_ITEM_EQUATES
|
||||
$Insert MESSAGE_BOX_EQUATES
|
||||
|
||||
Equ COL$LOG_FILE to 1
|
||||
Equ COL$LOG_DTM to 2
|
||||
@ -92,11 +93,11 @@ Equ ACTION$SPEC_SURFSCAN_RECIPE TO 8
|
||||
Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services
|
||||
Declare subroutine Dialog_Box, Msg, MemberOf, obj_WO_Mat, Get_Property, obj_React_Status, Get_Status, Override_Services
|
||||
Declare subroutine record_lock, obj_React_Status, Post_Event, obj_React_State, obj_Post_Log, Qa_Services, Reactor_Services
|
||||
Declare Subroutine Rds_Services
|
||||
Declare Subroutine Rds_Services, WO_MAT_Services, Message_Box, Reactor_Log_Services, Schedule_Services
|
||||
|
||||
Declare function dialog_box, msg, Get_Status, obj_WO_Mat, Get_Status, obj_Clean_Insp, obj_Reactor, Get_Property
|
||||
Declare function QA_Services, Database_Services, Set_Property, Rds_Services, Qa_Services, Memberof, Reactor_Services
|
||||
Declare function Supplement_Services
|
||||
Declare function Supplement_Services, WO_MAT_Services, Message_Box, Reactor_Log_Services, Schedule_Services
|
||||
|
||||
SubclassInfo = Form_Services('FindSubclassControl')
|
||||
Subclass = SubclassInfo<1>
|
||||
@ -275,6 +276,47 @@ Event PUB_SIGN.CLICK()
|
||||
Valid = True$
|
||||
end
|
||||
If (Valid EQ True$) then
|
||||
ReactorType = XLATE('RDS',RDSNo,'REACTOR_TYPE','X')
|
||||
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
|
||||
WoMatKey = WONo:'*':CassNo
|
||||
IsLastCassetteInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
||||
If Error_Services('NoError') then
|
||||
If IsLastCassetteInWo then
|
||||
NextEventScheduled = False$
|
||||
NextEventHasSamePsn = True$
|
||||
NextEventIsBlock = False$
|
||||
|
||||
NextScheduledEvent = Schedule_Services('GetNextEvent', Reactor)
|
||||
If Error_Services('NoError') then
|
||||
NextEventScheduled = True$
|
||||
|
||||
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', Reactor)
|
||||
NextEventIsBlock = Schedule_Services('NextEventIsBlock', Reactor)
|
||||
end
|
||||
|
||||
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
|
||||
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = True$
|
||||
|
||||
Message = ''
|
||||
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
|
||||
Message = 'No material scheduled. Test wafer required.'
|
||||
end else if NextEventHasSamePsn EQ False$ then
|
||||
Message = 'Next work order is a NEW PSN number. Test wafer required.'
|
||||
end
|
||||
|
||||
MesageAcked = Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
|
||||
|
||||
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||
|
||||
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WONo : '], [Cassette:' : CassNo : ']'
|
||||
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, @User4)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
QA_Services('SignUnloadStage', RDSNo, @User4)
|
||||
end
|
||||
end
|
||||
@ -377,6 +419,14 @@ Event PUB_SIGN.CLICK()
|
||||
end
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
|
||||
|
||||
WoMatKey = WONo:'*':CassNo
|
||||
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
|
||||
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = False$
|
||||
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = False$
|
||||
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||
|
||||
Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign')
|
||||
end else
|
||||
Return 0
|
||||
@ -395,3 +445,4 @@ return
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -46,10 +46,10 @@ Common /ScanServices/ NotAcceptableReasons@, Unused2@, Unused3@, Unused4@, Unuse
|
||||
Declare Function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Rds_Services, Datetime
|
||||
Declare Function QA_Services, Error_Services, Security_Services, SRP_Array, obj_WO_Mat, Memberof, Override_Log_Services
|
||||
Declare Function Keyboard_Sim_Services, Environment_Services, Logging_Services, Reactor_Services, Supplement_Services
|
||||
Declare function Test_Run_Services, Lot_Services
|
||||
Declare function Test_Run_Services, Lot_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services
|
||||
Declare Subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, QA_Services, Error_Services
|
||||
Declare Subroutine obj_WO_Mat_Log, Tool_Parms_Services, RDS_Services, Logging_Services, Supplement_Services
|
||||
Declare Subroutine Test_Run_Services
|
||||
Declare Subroutine Test_Run_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services
|
||||
|
||||
Equ CRLF$ to \0D0A\
|
||||
|
||||
@ -537,6 +537,23 @@ Service ProcessScanData(ScanID, ScanJSON)
|
||||
ScansRow<SCANS.TEST_RUN_TYPE_ID$> = TestRunTypeId
|
||||
//ScansRow<SCANS.TEST_RUN_TYPE_NAME$> = TestRunTypeName
|
||||
|
||||
Case Len(ScanData) GE 22 and ScanData[1, 22] EQ 'LAST_CASSETTE_TEST_ACK'
|
||||
RDSNo = {CASSETTE_IDS}
|
||||
Reactor = {TOOL_ID}[2,999]
|
||||
|
||||
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
|
||||
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
||||
WoMatKey = WO:'*':CassNo
|
||||
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
|
||||
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
|
||||
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
|
||||
|
||||
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WO : '], [Cassette:' : CassNo : ']'
|
||||
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, {EMPLOYEE_ID})
|
||||
|
||||
Result = 'Test wafer requirement acknowledged'
|
||||
Case ScanData EQ ''
|
||||
// Most likely receiving RDS data, so nothing to do here.
|
||||
Null
|
||||
@ -722,7 +739,7 @@ Service ProcessScanData(ScanID, ScanJSON)
|
||||
SupplUnloadInstAckReq = True$
|
||||
end else
|
||||
SupplUnloadInstAckReq = False$
|
||||
end
|
||||
end
|
||||
end else
|
||||
SupplUnloadInstAckReq = False$
|
||||
end
|
||||
@ -1737,6 +1754,52 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
|
||||
end else
|
||||
SupplUnloadInstAckReq = False$
|
||||
end
|
||||
|
||||
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
|
||||
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
|
||||
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
|
||||
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
|
||||
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
|
||||
WoMatKey = WO:'*':CassNo
|
||||
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
|
||||
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
|
||||
LastCassInWoTestWaferReqMsg = ''
|
||||
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
|
||||
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
|
||||
|
||||
If LastCassInWo then
|
||||
NextEventScheduled = False$
|
||||
NextEventHasSamePsn = True$
|
||||
NextEventIsBlock = False$
|
||||
|
||||
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
|
||||
If Error_Services('NoError') then
|
||||
NextEventScheduled = True$
|
||||
|
||||
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
|
||||
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
|
||||
end
|
||||
|
||||
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
|
||||
LastCassInWoTestWaferAckReq = True$
|
||||
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
|
||||
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = LastCassInWoTestWaferAcked
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
|
||||
|
||||
LastCassInWoTestWaferReqMsg = ''
|
||||
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
|
||||
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
|
||||
end else If NextEventHasSamePsn EQ False$ then
|
||||
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReq', LastCassInWoTestWaferAckReq, 'Boolean')
|
||||
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAcked', LastCassInWoTestWaferAcked, 'Boolean')
|
||||
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReqMsg', LastCassInWoTestWaferReqMsg, 'String')
|
||||
end
|
||||
end else
|
||||
SupplUnloadInstAckReq = False$
|
||||
end
|
||||
|
@ -36,6 +36,7 @@ $insert RLIST_EQUATES
|
||||
$insert REACTOR_EQUATES
|
||||
$insert SCHED_DET_NG_EQUATES
|
||||
$insert WO_LOG_EQUATES
|
||||
$Insert WO_MAT_EQUATES
|
||||
$insert WO_SCHEDULE_NG_EQUATES
|
||||
$insert COMPANY_EQUATES
|
||||
$insert PROD_VER_EQUATES
|
||||
@ -44,6 +45,7 @@ $insert SCHEDULE_EVENT_SUMMMARY_EQUATES
|
||||
$insert EPI_PART_EQUATES
|
||||
$insert PROD_SPEC_EQUATES
|
||||
$insert SCHED_HIST_EQUATES
|
||||
$Insert RDS_EQUATES
|
||||
|
||||
Equ new_exist$ To 0 ; * Reduce Mode 0
|
||||
Equ next_cur$ To 1
|
||||
@ -814,6 +816,61 @@ Service GetCurrentEvent(ReactNo)
|
||||
|
||||
end service
|
||||
|
||||
Service CurrentEventIsBlock(ReactNo)
|
||||
If ReactNo NE '' then
|
||||
CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo)
|
||||
|
||||
If Error_Services('NoError') then
|
||||
CurrentSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', CurrentSchedDetKey)
|
||||
|
||||
CurrentEventIsABlock = CurrentSchedDetRecord<SCHED_DET_NG.BLOCK_OUT$>
|
||||
If CurrentEventIsABlock EQ '' then
|
||||
CurrentEventIsABlock = False$
|
||||
end
|
||||
|
||||
Response = CurrentEventIsABlock
|
||||
end else
|
||||
Error = Error_Services('GetMessage')
|
||||
ErrorMsg = 'Error in service ':Service:' module. ':Error
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end service
|
||||
|
||||
Service GetNextEvent(ReactNo)
|
||||
SchedDetKey = ''
|
||||
If ReactNo NE '' then
|
||||
CurrDTM = Datetime()
|
||||
Query = 'SELECT SCHED_DET_NG WITH REACT_NO EQ "':ReactNo:'" AND WITH EVENT_COMP NE 1 BY START_DTM'
|
||||
Set_Status(0)
|
||||
GoSub ClearCursors
|
||||
Rlist(Query, TARGET_ACTIVELIST$, '', '', '')
|
||||
errCode = ''
|
||||
If Not(Get_Status(errCode)) then
|
||||
EOF = False$
|
||||
ReadNext SchedDetKey else EOF = True$
|
||||
If EOF EQ True$ then
|
||||
ErrorMsg = 'Error in service ':Service:' module. No incomplete events in schedule'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end else
|
||||
ReadNext SchedDetKey else EOF = True$
|
||||
If EOF EQ True$ then
|
||||
ErrorMsg = 'Error in service ':Service:' module. No incomplete events in schedule after current event'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end else
|
||||
Response = SchedDetKey
|
||||
end
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in service ':Service:' module. Error code ':errCode
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
GoSub ClearCursors
|
||||
end
|
||||
end service
|
||||
|
||||
Service GetEngagedEvent(ReactNo)
|
||||
|
||||
@ -861,6 +918,75 @@ Service GetLastEngagedEvent(ReactNo)
|
||||
|
||||
end service
|
||||
|
||||
Service NextEventIsSamePsn(ReactNo)
|
||||
Response = False$
|
||||
If ReactNo NE '' then
|
||||
CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo)
|
||||
|
||||
If Error_Services('NoError') then
|
||||
CurrentEventIsABlock = Schedule_Services('CurrentEventIsBlock', ReactNo)
|
||||
If CurrentEventIsABlock EQ False$ then
|
||||
CurrentSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', CurrentSchedDetKey)
|
||||
|
||||
CurrentEventWoNo = CurrentSchedDetRecord<SCHED_DET_NG.WO_NO$>
|
||||
CurrentEventWoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', CurrentEventWoNo:'*1')
|
||||
|
||||
CurrentEventRdsNo = CurrentEventWoMatRecord<WO_MAT_RDS_NO$>
|
||||
CurrentEventRdsRecord = Database_Services('ReadDataRow', 'RDS', CurrentEventRdsNo)
|
||||
|
||||
CurrentEventPsn = CurrentEventRdsRecord<RDS_PROD_SPEC_ID$>
|
||||
|
||||
NextSchedDetKey = Schedule_Services('GetNextEvent', ReactNo)
|
||||
|
||||
If Error_Services('NoError') then
|
||||
NextEventIsABlock = Schedule_Services('NextEventIsBlock', ReactNo)
|
||||
If NextEventIsABlock EQ False$ then
|
||||
NextSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', NextSchedDetKey)
|
||||
|
||||
NextEventWoNo = NextSchedDetRecord<SCHED_DET_NG.WO_NO$>
|
||||
NextEventWoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', NextEventWoNo:'*1')
|
||||
|
||||
NextEventRdsNo = NextEventWoMatRecord<WO_MAT_RDS_NO$>
|
||||
NextEventRdsRecord = Database_Services('ReadDataRow', 'RDS', NextEventRdsNo)
|
||||
|
||||
NextEventPsn = NextEventRdsRecord<RDS_PROD_SPEC_ID$>
|
||||
|
||||
PsnsMatch = CurrentEventPsn EQ NextEventPsn
|
||||
|
||||
Response = PsnsMatch
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end service
|
||||
|
||||
Service NextEventIsBlock(ReactNo)
|
||||
If ReactNo NE '' then
|
||||
NextSchedDetKey = Schedule_Services('GetNextEvent', ReactNo)
|
||||
|
||||
If Error_Services('NoError') then
|
||||
NextSchedDetRecord = Database_Services('ReadDataRow', 'SCHED_DET_NG', NextSchedDetKey)
|
||||
|
||||
NextEventIsABlock = NextSchedDetRecord<SCHED_DET_NG.BLOCK_OUT$>
|
||||
If NextEventIsABlock EQ '' then
|
||||
NextEventIsABlock = False$
|
||||
end
|
||||
|
||||
Response = NextEventIsABlock
|
||||
end else
|
||||
Error = Error_Services('GetMessage')
|
||||
ErrorMsg = 'Error in service ':Service:' module. ':Error
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end service
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// AdjustScheduleEvents
|
||||
@ -3434,3 +3560,4 @@ CreateScheduleChangeNotification:
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
42
LSL2/STPROC/TEST_WO_MAT_SERVICES.txt
Normal file
42
LSL2/STPROC/TEST_WO_MAT_SERVICES.txt
Normal file
@ -0,0 +1,42 @@
|
||||
Compile function Test_WO_MAT_SERVICES(@Test)
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
$Insert LOGICAL
|
||||
|
||||
Declare function WO_MAT_Services, Error_Services
|
||||
Declare subroutine WO_MAT_Services, Error_Services
|
||||
|
||||
GotoTest
|
||||
|
||||
Error_Services('Clear')
|
||||
|
||||
Return TestResult or 1
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// TESTS
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Test CassetteIsLastInWoWithEmptyWoMatKeyShouldThrowError
|
||||
WO_MAT_Services('CassetteIsLastInWo', '')
|
||||
|
||||
ErrorWasThrown = Error_Services('HasError')
|
||||
|
||||
Assert ErrorWasThrown equals True$
|
||||
End Test
|
||||
|
||||
Test CassetteIsLastInWoWithFirstCassetteShouldReturnFalse
|
||||
IsLastCassette = WO_MAT_Services('CassetteIsLastInWo', '173137*1')
|
||||
|
||||
Assert Error_Services('NoError')
|
||||
|
||||
Assert IsLastCassette EQ False$
|
||||
end test
|
||||
|
||||
Test CassetteIsLastInWoWithLastCassetteShouldReturnTrue
|
||||
IsLastCassette = WO_MAT_Services('CassetteIsLastInWo', '173137*66')
|
||||
|
||||
Assert Error_Services('NoError')
|
||||
|
||||
Assert IsLastCassette EQ True$
|
||||
end test
|
||||
|
@ -7,6 +7,7 @@ Declare subroutine Error_Services, SRP_Json, SRP_Com, Wo_Mat_Services, Database_
|
||||
$insert LOGICAL
|
||||
$Insert APP_INSERTS
|
||||
$insert WO_MAT_EQUATES
|
||||
$Insert WO_LOG_EQUATES
|
||||
$Insert SERVICE_SETUP
|
||||
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_Mat\InvActionsSyncUp'
|
||||
@ -17,7 +18,9 @@ Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'Missing Signature' : @FM :
|
||||
objSyncLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
GoToService
|
||||
GoToService else
|
||||
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
|
||||
end
|
||||
|
||||
Return Response or ""
|
||||
|
||||
@ -373,6 +376,51 @@ Service SyncWOMatInvActionsAndSigProfile(WOMatKey)
|
||||
end
|
||||
end service
|
||||
|
||||
|
||||
|
||||
Service CassetteIsLastInWo(WoMatKey)
|
||||
IsLastInWo = False$
|
||||
|
||||
If Unassigned(WoMatKey) or WoMatKey EQ '' or RowExists('WO_MAT', WoMatKey) NE True$ then
|
||||
Error_Services('Add', 'invalid WO_MAT key')
|
||||
end
|
||||
|
||||
WO = Field(WoMatKey, '*', 1)
|
||||
If WO EQ '' then
|
||||
Error_Services('Add', 'WO# not found in WO_MAT record')
|
||||
end
|
||||
If Error_Services('NoError') and Num(WO) EQ False$ then
|
||||
Error_Services('Add', 'WO# is not numeric')
|
||||
end
|
||||
|
||||
CassNo = Field(WoMatKey, '*', 2)
|
||||
If Error_Services('NoError') and CassNo EQ '' then
|
||||
Error_Services('Add', 'Cassette# not found in WO_MAT record')
|
||||
end
|
||||
If Error_Services('NoError') and Num(CassNo) EQ False$ then
|
||||
Error_Services('Add', 'Cassette# is not numeric')
|
||||
end
|
||||
|
||||
If Error_Services('NoError') then
|
||||
WoMatKeys = Xlate('WO_LOG', WO, WO_LOG_WO_MAT_KEY$, 'X')
|
||||
If Error_Services('NoError') and WoMatKeys NE '' then
|
||||
TotalCassettes = DCount(WoMatKeys, @VM)
|
||||
IsLastInWo = TotalCassettes EQ CassNo
|
||||
end
|
||||
end
|
||||
|
||||
If Error_Services('HasError') then
|
||||
ErrMsg = Error_Services('GetMessage')
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = LoggingDtm
|
||||
LogData<2> = WOMatKey
|
||||
LogData<3> = ''
|
||||
LogData<4> = ''
|
||||
LogData<5> = 'Error in ' : Service:': ' : ErrMsg
|
||||
Logging_Services('AppendLog', objSyncLog, LogData, @RM, @FM)
|
||||
|
||||
Error_Services('Add', ErrMsg)
|
||||
end
|
||||
|
||||
Response = IsLastInWo
|
||||
end service
|
||||
|
||||
|
@ -152,4 +152,6 @@ Equ WO_MAT_CURR_STATUS_STATIC$ To 143
|
||||
Equ WO_MAT_FAILED_WAFERS$ To 144
|
||||
Equ WO_MAT_LOCKED_BY$ To 145
|
||||
Equ WO_MAT_CONVERTED_MATERIAL$ To 146
|
||||
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$ To 147
|
||||
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user