added LSL2 stored procedures
This commit is contained in:
227
LSL2/STPROC/IMPORT_8IN_RETAINED_WAFERS.txt
Normal file
227
LSL2/STPROC/IMPORT_8IN_RETAINED_WAFERS.txt
Normal file
@ -0,0 +1,227 @@
|
||||
Function Import_8in_Retained_Wafers()
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services
|
||||
Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services
|
||||
Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS
|
||||
Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services
|
||||
Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, Reactor_Services
|
||||
Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg
|
||||
Declare subroutine SRP_Stopwatch
|
||||
Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility
|
||||
Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services
|
||||
Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg
|
||||
Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat
|
||||
Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8
|
||||
Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services
|
||||
Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV
|
||||
Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format
|
||||
Declare Function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository
|
||||
|
||||
Declare subroutine SRP_Stopwatch, Btree.Extract
|
||||
|
||||
|
||||
$INSERT POPUP_EQUATES
|
||||
$INSERT LOGICAL
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT APPCOLORS
|
||||
$INSERT WM_IN_EQUATES
|
||||
$Insert WM_OUT_EQUATES
|
||||
$INSERT WO_LOG_EQU
|
||||
$INSERT WO_STEP_EQU
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT ORDER_EQU
|
||||
$INSERT RDS_EQUATES
|
||||
$INSERT PROD_SPEC_EQU
|
||||
$INSERT NOTIFICATION_EQU
|
||||
$INSERT LSL_USERS_EQU
|
||||
$INSERT SECURITY_RIGHTS_EQU
|
||||
$INSERT RTI_LH_INFO_EQUATES
|
||||
$INSERT WO_MAT_QA_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
$INSERT PRS_STAGE_EQUATES
|
||||
$Insert RLIST_EQUATES
|
||||
$Insert CLEAN_INSP_EQUATES
|
||||
$Insert TOOL_PARMS_EQUATES
|
||||
$Insert SCHEDULE_EQU
|
||||
$Insert SCHED_DET_EQUATES
|
||||
$Insert SCHEDULER_EQUATES
|
||||
$Insert NCR_EQUATES
|
||||
$Insert REACT_RUN_EQUATES
|
||||
$Insert TOOL_EQUATES
|
||||
$Insert TOOL_LOG_EQUATES
|
||||
$Insert PM_EQUATES
|
||||
$Insert WO_WFR_EQUATES
|
||||
$Insert RETAINED_WAFERS_EQUATES
|
||||
|
||||
// Reduce modes (for Select statement)
|
||||
Equ NEW_EXIST$ To 0
|
||||
Equ NEXT_CUR$ To 1
|
||||
Equ ADD_EXIST$ To 2
|
||||
|
||||
EQU COL$QA_MET_PHASE_MIN TO 17
|
||||
|
||||
Equ Tab$ to \09\
|
||||
Equ CRLF$ to \0D0A\
|
||||
Equ LF$ to \0A\
|
||||
Equ Comma$ to ','
|
||||
|
||||
Main:
|
||||
|
||||
// Import 8 inch Excel spreadsheet
|
||||
|
||||
RetainFilepath = 'D:\Apps\Temp\8in-IFEpi GaN Retain Inventory.xlsx'
|
||||
RetainExcelHandle = Excel_Services('OpenDocument', RetainFilepath)
|
||||
RetainWorksheet = 'Sheet1'
|
||||
NumExcelRows = Excel_Services('GetNumRows', RetainExcelHandle, RetainWorksheet)
|
||||
|
||||
Open 'DICT.REACT_RUN' to @DICT then
|
||||
For ExcelRow = 2 to NumExcelRows
|
||||
|
||||
RunID = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'A', ExcelRow) )
|
||||
Convert @Upper.Case to @Lower.Case in RunID
|
||||
RDSNo = ''
|
||||
Column = 'GAN_RUN_ID'
|
||||
SearchString = Column:@VM:RunID:@FM
|
||||
Btree.Extract(SearchString, 'REACT_RUN', @DICT, RDSNo)
|
||||
If RDSNo NE '' then
|
||||
ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo)
|
||||
If Error_Services('NoError') then
|
||||
RRRecipe = ReactRunRec<REACT_RUN_GAN_RECIPE$>
|
||||
RRPart = Xlate('REACT_RUN', RDSNo, 'EPI_PART_NO', 'X')
|
||||
RRScribes = Xlate('REACT_RUN', RDSNo, 'WFR_SCRIBES', 'X')
|
||||
InWfrIDs = ReactRunRec<REACT_RUN_IN_WFR_ID$>
|
||||
|
||||
* Read the data from the Excel retain spreadsheet *
|
||||
Recipe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'B', ExcelRow) )
|
||||
Pocket = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'C', ExcelRow) )
|
||||
If Pocket _NEC 'ref' then
|
||||
Scribe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'D', ExcelRow) )
|
||||
Grade = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'E', ExcelRow) )
|
||||
Part = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'F', ExcelRow) )
|
||||
WorkOrder = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'G', ExcelRow) )
|
||||
RetainBox = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'H', ExcelRow) )
|
||||
RetainSlot = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'I', ExcelRow) )
|
||||
Operator = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'J', ExcelRow) )
|
||||
RetainDTM = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'K', ExcelRow) )
|
||||
CurrLoc = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'L', ExcelRow) )
|
||||
Status = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'M', ExcelRow) )
|
||||
Comment = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'N', ExcelRow) )
|
||||
|
||||
Begin Case
|
||||
Case Operator _EQC 'AH'
|
||||
RetainSig = 'ANTHONY_H'
|
||||
Case Operator _EQC 'SB'
|
||||
RetainSig = 'SYEDA_B'
|
||||
Case Operator _EQC 'PM'
|
||||
RetainSig = 'PEYTON_M'
|
||||
Case Operator _EQC 'JL'
|
||||
RetainSig = 'JAVIER_L'
|
||||
Case Operator _EQC 'PS'
|
||||
RetainSig = 'PRISCILA_S'
|
||||
Case Operator _EQC 'NC'
|
||||
RetainSig = 'NIKOLAS_C'
|
||||
Case Operator _EQC 'HG'
|
||||
RetainSig = 'HECTOR_G'
|
||||
Case Operator _EQC 'ES'
|
||||
RetainSig = 'ESTEBAN_S'
|
||||
Case Operator _EQC 'AD'
|
||||
RetainSig = 'ALIYAH_D'
|
||||
Case Operator _EQC 'LB'
|
||||
RetainSig = 'LACEY_B'
|
||||
Case Operator _EQC 'IP'
|
||||
RetainSig = 'IAN_P'
|
||||
Case Operator _EQC 'RC'
|
||||
RetainSig = 'RYAN_C'
|
||||
Case Operator _EQC 'GR'
|
||||
RetainSig = 'GEORGE_R'
|
||||
Case Operator _EQC 'AH/JL'
|
||||
RetainSig = 'ANTHONY_H'
|
||||
Case Operator _EQC 'NC/JL'
|
||||
RetainSig = 'NIKOLAS_C'
|
||||
Case Operator _EQC 'SW'
|
||||
RetainSig = 'STEVEN_W'
|
||||
Case Otherwise$
|
||||
RetainSig = ''
|
||||
End Case
|
||||
|
||||
// Truncate DTM to just the date, then convert to internal format
|
||||
RetainDate = RetainDTM[1, 'F ']
|
||||
RetainDate = IConv(RetainDate, 'D')
|
||||
|
||||
* Clean the data *
|
||||
// Format the Recipe
|
||||
Convert @Lower.Case to @Upper.Case in Recipe
|
||||
// Format the Pocket
|
||||
If Pocket[1, 1] NE '0' then Pocket = '0':Pocket
|
||||
// Format the Scribe
|
||||
Convert @Lower.Case to @Upper.Case in Scribe
|
||||
// Format the Grade
|
||||
Begin Case
|
||||
Case Grade _EQC 'aborted'
|
||||
Grade = 'Aborted'
|
||||
Case Grade _EQC 'CT'
|
||||
Grade = 'CT'
|
||||
Case ( (Grade _EQC 'Eng test') or (Grade _EQC 'Eng test') or (Grade _EQC 'Engtest') or (Grade _EQC 'Test') )
|
||||
Grade = 'Eng Test'
|
||||
Case Grade _EQC 'Eq Failure'
|
||||
Grade = 'EQ Failure'
|
||||
Case Grade _EQC 'Mechanical'
|
||||
Grade = 'Mechanical'
|
||||
Case Grade _EQC 'NA'
|
||||
Grade = 'NA'
|
||||
Case Grade _EQC 'retain'
|
||||
Grade = 'Retain'
|
||||
Case Grade _EQC 'scrap'
|
||||
Grade = 'Scrap'
|
||||
Case Grade _EQC 'Terminated'
|
||||
Grade = 'Terminated'
|
||||
Case Grade _EQC ''
|
||||
Grade = ''
|
||||
Case Otherwise$
|
||||
Null
|
||||
End Case
|
||||
// Format the Part No
|
||||
Convert @Lower.Case to @Upper.Case in Part
|
||||
// Format the Current Location
|
||||
Begin Case
|
||||
Case CurrLoc _EQC 'Cleanroom'
|
||||
CurrLoc = 'Cleanroom'
|
||||
Case ( (CurrLoc _EQC 'Wafer Destroyed') or (CurrLoc _EQC 'Wafers Destroyed') or (CurrLoc _EQC 'Wasfer Destroyed') )
|
||||
CurrLoc = 'Wafer Destroyed'
|
||||
Case CurrLoc _EQC 'Warehouse'
|
||||
CurrLoc = 'Warehouse'
|
||||
End Case
|
||||
|
||||
* Write the data to the WO_WFR record *
|
||||
WfrIndex = Pocket + 0 ; // Convert string to integer and trim 0 padding
|
||||
|
||||
RRScribe = RRScribes<0, WfrIndex>
|
||||
WfrID = InWfrIDs<0, WfrIndex>
|
||||
* WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID)
|
||||
RetainedWfrRec = Database_Services('ReadDataRow', 'RETAINED_WAFERS', WfrID)
|
||||
If Error_Services('NoError') then
|
||||
* WOWfrRec<WO_WFR_GRADE$> = Grade
|
||||
* WOWfrRec<WO_WFR_GAN_RUN_ID$> = RunID
|
||||
* WOWfrRec<WO_WFR_POCKET$> = Pocket
|
||||
* WOWfrRec<WO_WFR_SCRIBE$> = Scribe
|
||||
* WOWfrRec<WO_WFR_RETAIN_BOX$> = RetainBox
|
||||
* WOWfrRec<WO_WFR_RETAIN_SLOT$> = RetainSlot
|
||||
* WOWfrRec<WO_WFR_RETAIN_LOC$> = CurrLoc
|
||||
* WOWfrRec<WO_WFR_RETAIN_COMMENT$> = Comment
|
||||
* WOWfrRec<WO_WFR_RETAIN_STATUS$> = Status
|
||||
* WOWfrRec<WO_WFR_RETAIN_SIG$> = RetainSig
|
||||
* WOWfrRec<WO_WFR_RETAIN_DT$> = RetainDate
|
||||
RetainedWfrRec<RETAINED_WAFERS.RETAIN_DT$> = RetainDate
|
||||
Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Next ExcelRow
|
||||
end
|
||||
Excel_Services('CloseDocument', RetainExcelHandle)
|
||||
|
||||
return
|
||||
|
||||
|
Reference in New Issue
Block a user