refactored codebase to not rely on WO_LOG calculated column indexes
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -312,7 +312,7 @@ MsgUp = Msg(@WINDOW,'','SELECT_OPEN_WO')
|
||||
|
||||
WOKeys = ''
|
||||
|
||||
SelectStatement = 'CURR_STATUS':@VM:'ASN':@VM:'AWM':@VM:'RTP':@FM
|
||||
SelectStatement = 'CURR_STATUS_STATIC':@VM:'ASN':@VM:'AWM':@VM:'RTP':@FM
|
||||
|
||||
Btree.Extract(SelectStatement,'WO_LOG',DictWOLogTable,WOKeys,'','')
|
||||
|
||||
@ -710,14 +710,14 @@ END ELSE
|
||||
|
||||
NewCassetteCnt = COUNT(ScanResults<COL$CASS_NO>,@VM) + (ScanResults<COL$CASS_NO> NE '')
|
||||
|
||||
Def = ''
|
||||
Def<MCAPTION$> = 'Receiving Cassettes...'
|
||||
Def<MTYPE$> = 'G'
|
||||
Def<MEXTENT$> = NewCassetteCnt
|
||||
Def<MTEXTWIDTH$> = 600
|
||||
MsgUp = Msg(@WINDOW,Def)
|
||||
|
||||
|
||||
Def = ''
|
||||
Def<MCAPTION$> = 'Receiving Cassettes...'
|
||||
Def<MTYPE$> = 'G'
|
||||
Def<MEXTENT$> = NewCassetteCnt
|
||||
Def<MTEXTWIDTH$> = 600
|
||||
Def<MCOL$> = -2
|
||||
Def<MROW$> = -2
|
||||
MsgUp = Msg(@WINDOW,Def)
|
||||
|
||||
FOR I = 1 TO NewCassetteCnt
|
||||
|
||||
@ -1128,3 +1128,4 @@ AddLeftover:
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
@ -1,272 +0,0 @@
|
||||
COMPILE SUBROUTINE Export_WO_Log( Dummy )
|
||||
|
||||
DECLARE FUNCTION Msg, Dialog_Box, Utility, obj_Export, obj_WO_Log
|
||||
DECLARE FUNCTION Set_Printer, Get_Printer, obj_Install, Utility, obj_MUWafers, Database_Services
|
||||
|
||||
DECLARE SUBROUTINE Btree.Extract, RList, END_Dialog, Make.List, Msg, ErrMsg, SetInitDirOptions
|
||||
|
||||
$INSERT LSL_USERS_EQU
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT RLIST_EQUATES
|
||||
$INSERT OIPRINT_EQUATES
|
||||
$INSERT WO_LOG_EQUATES
|
||||
$INSERT WO_STEP_EQU
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT COMPANY_EQU
|
||||
$INSERT QUOTE_EQU
|
||||
$INSERT QUOTE_SPEC_EQU
|
||||
$INSERT RECIPE_EQU
|
||||
$INSERT ORDER_DET_EQU
|
||||
$INSERT PROD_SPEC_EQUATES
|
||||
$insert PROD_VER_EQUATES
|
||||
$INSERT EXCEL_EQU
|
||||
|
||||
CRLF$ = \0D0A\
|
||||
|
||||
OPEN 'WO_STEP' TO WOStepTable ELSE
|
||||
ErrMsg('Unable to open "WO_STEP" table in EXPORT_WO_LOG routine.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
OPEN 'DICT.WO_STEP' TO DictWOStep ELSE
|
||||
ErrMsg('Unable to open "DICT.WO_STEP" table in EXPORT_WO_LOG routine.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
Def = ""
|
||||
Def<MTEXT$> = "Selecting Uncheduled Work Orders..."
|
||||
Def<MTYPE$> = "U"
|
||||
|
||||
MsgUp = Msg(@window, Def)
|
||||
|
||||
* SelectSent = 'SELECT WO_STEP WITH SCHEDULED NE "Yes" '
|
||||
Declare subroutine SRP_Stopwatch
|
||||
SRP_Stopwatch('Reset')
|
||||
SRP_Stopwatch('Start', 'StartDate')
|
||||
StartDate = Oconv(Date() - 182, 'D4/')
|
||||
SelectSent = 'SELECT WO_LOG WITH ENTRY_DATE GE ' : Quote(StartDate)
|
||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
SRP_Stopwatch('Stop', 'StartDate')
|
||||
SRP_Stopwatch('Start', 'Schedule')
|
||||
SelectSent = 'SELECT WO_LOG WITH SCHEDULED NE "Yes" '
|
||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
SRP_Stopwatch('Stop', 'Schedule')
|
||||
* SRP_Stopwatch('ShowAll')
|
||||
*SelectSent = 'SELECT WO_STEP WITH CURR_STATUS NE "CL" "COMP" '
|
||||
*SelectSent = 'SELECT WO_STEP WITH CURR_STATUS = "NEW" "RTP" "RTS" "RX" "INPR" '
|
||||
*RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
|
||||
WOLogKeys = ''
|
||||
Done = 0
|
||||
LOOP
|
||||
READNEXT WOLogKey ELSE Done = 1
|
||||
UNTIL Done
|
||||
WOLogKeys<-1> = WOLogKey
|
||||
REPEAT
|
||||
|
||||
CONVERT @VM TO @FM IN WOLogKeys
|
||||
|
||||
IF WOLogKeys = '' THEN
|
||||
Msg(@window, MsgUp)
|
||||
ErrMsg('No Work Orders remain unscheduled.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
Make.List('',WOLogKeys,'','')
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
END
|
||||
|
||||
Results = ''
|
||||
Results<1,1> = 'Spec Type'
|
||||
Results<1,2> = 'WO'
|
||||
Results<1,3> = 'Customer'
|
||||
Results<1,4> = 'Qty'
|
||||
Results<1,5> = 'PSN'
|
||||
Results<1,6> = 'Cust Part Numbers'
|
||||
Results<1,7> = 'Reactor Type'
|
||||
Results<1,8> = 'Sched Reacts'
|
||||
Results<1,9> = 'Inch'
|
||||
Results<1,10> = 'Tube Press Type'
|
||||
Results<1,11> = 'Epi Gases'
|
||||
Results<1,12> = 'Dopant L1'
|
||||
Results<1,13> = 'Cap/Burst Gases'
|
||||
Results<1,14> = 'Thick Target'
|
||||
Results<1,15> = 'Res Target'
|
||||
Results<1,16> = 'Expected Rx Dt'
|
||||
Results<1,17> = 'Received Date'
|
||||
Results<1,18> = 'Promised Ship'
|
||||
Results<1,19> = 'Qual'
|
||||
Results<1,20> = 'Blkd'
|
||||
Results<1,21> = 'MU Wfrs'
|
||||
|
||||
Done = 0
|
||||
LineCnt = 1
|
||||
LOOP
|
||||
READNEXT WOLogKey ELSE Done = 1
|
||||
UNTIL Done
|
||||
|
||||
WONo = WOLogKey
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
WOMatKeys = WORec<WO_LOG_WO_MAT_KEY$>
|
||||
|
||||
CassCustPNs = XLATE('WO_MAT',WOMatKeys,WO_MAT_CUST_PART_NO$,'X')
|
||||
CustPNs = ''
|
||||
FOR I = 1 TO COUNT(CassCustPNs,@VM) + (CassCustPNs NE '')
|
||||
LOCATE CassCustPNs<1,I> IN CustPNs USING @VM SETTING POS ELSE
|
||||
CustPNs = INSERT(CustPNs,1,Pos,0,CassCustPNs<1,I>)
|
||||
END
|
||||
NEXT I
|
||||
|
||||
CompanyName = XLATE( 'COMPANY', WORec<WO_LOG_CUST_NO$>,COMPANY_CO_NAME$,'X')
|
||||
SWAP ',' WITH '-' IN CompanyName
|
||||
|
||||
WaferQty = SUM(XLATE('WO_MAT',WOMatKeys,WO_MAT_WAFER_QTY$,'X'))
|
||||
IF WaferQty > 0 THEN
|
||||
ExpectedRxDts = ''
|
||||
END ELSE
|
||||
OrderNo = WORec<WO_LOG_ORDER_NO$>
|
||||
OrderItems = WORec<WO_LOG_ORDER_ITEM$>
|
||||
OrderDetKeys = ''
|
||||
FOR N = 1 TO COUNT(OrderItems,@VM) + (OrderItems NE '')
|
||||
OrderDetKeys<1,N> = OrderNo:'*':OrderItems<1,N>
|
||||
NEXT N
|
||||
WaferQty = SUM(XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_ITEM_QTY$,'X'))
|
||||
ExpectedRxDts = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_EXP_RX_DT$,'X')
|
||||
END
|
||||
|
||||
MUWafers = obj_MUWafers('AvailWafers',WONo:@RM:WORec:@RM:0:@RM:1)
|
||||
ShipThickTarget = XLATE('WO_LOG',WONo,'SHIP_THICK_TARGET','X')
|
||||
ShipResTarget = XLATE('WO_LOG',WONo,'SHIP_RES_TARGET','X')
|
||||
|
||||
CustPSNs = XLATE('WO_STEP',WORec<34>,1,'X')
|
||||
|
||||
SWAP @VM WITH '\' IN CustPNs
|
||||
|
||||
* PSNo = WOStepRec<WO_STEP_PROD_SPEC_ID$>
|
||||
ProdVerNo = WORec<WO_LOG_PROD_VER_NO$>
|
||||
ProdVerRow = Database_Services('ReadDataRow', 'PROD_VER', ProdVerNo)
|
||||
PSNo = ProdVerRow<PROD_VER_PROC_STEP_PSN$>
|
||||
|
||||
PSReactType = OCONV(XLATE('PROD_SPEC',PSNo,PROD_SPEC_REACTOR_TYPE$,'X'),'[REACT_TYPE_CONV]')
|
||||
|
||||
WaferSize = xlate( 'PROD_SPEC', PSNo, 'SUB_WAFER_SIZE', 'X' )
|
||||
SWAP 75 WITH '' IN WaferSize
|
||||
SWAP 100 WITH '' IN WaferSize
|
||||
SWAP 125 WITH '' IN WaferSize
|
||||
SWAP 150 WITH '' IN WaferSize
|
||||
SWAP 200 WITH '' IN WaferSize
|
||||
SWAP 'mm' WITH '' IN WaferSize
|
||||
WaferSize = trim( WaferSize )
|
||||
|
||||
RecipeId = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' )
|
||||
EPIGases = XLATE( 'RECIPE', RecipeId, RECIPE_EPI_GASES$, 'X' )
|
||||
|
||||
* Reactors = WOStepRec<WO_STEP_REACTORS$>
|
||||
Reactors = Xlate('PROD_SPEC', PSNo, PROD_SPEC_QUAL_REACTS$, 'X')
|
||||
* BlockedReactors = WOStepRec<WO_STEP_BLOCKED_REACTORS$>
|
||||
BlockedReactors = Xlate('PROD_SPEC', PSNo, PROD_SPEC_BLOCKED_REACTS$, 'X')
|
||||
SchedReactors = XLATE('WO_LOG',WONo,'SCHED_REACTS','X')
|
||||
|
||||
CONVERT @VM TO ',' IN Reactors
|
||||
CONVERT @VM TO ',' IN BlockedReactors
|
||||
|
||||
IF WaferQty > 0 THEN
|
||||
LineCnt += 1
|
||||
Results<LineCnt,1> = OCONV(XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ),'[SPEC_TYPE_CONV]') ;* Spec Type
|
||||
Results<LineCnt,2> = OCONV(WONo,'MD0') ;* WO
|
||||
Results<LineCnt,3> = CompanyName ;* Company Name
|
||||
Results<LineCnt,4> = OCONV(WaferQty,'MDO') ;* Wafer Qty
|
||||
Results<LineCnt,5> = OCONV(PSNo,'MD0') ;* Prod Spec ID
|
||||
Results<LineCnt,6> = CustPNs ;* Customer Part Numbers
|
||||
Results<LineCnt,7> = PSReactType ;* Reactor type for Prod Spec
|
||||
Results<LineCnt,8> = SchedReactors
|
||||
Results<LineCnt,9> = WaferSize ;* Wafer Size
|
||||
Results<LineCnt,10> = XLATE( 'PROD_SPEC', PSNo, 'TUBE_PRESSURE_TYPE', 'X' ) ;* Tube Pressure Type
|
||||
Results<LineCnt,11> = EPIGases
|
||||
Results<LineCnt,12> = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) ;* Dopant L1
|
||||
Results<LineCnt,13> = XLATE( 'RECIPE', RecipeId, RECIPE_CAP_BURST_GASES$, 'X' ) ;* Cap Burst Gases
|
||||
Results<LineCnt,14> = ShipThickTarget
|
||||
Results<LineCnt,15> = ShipResTarget
|
||||
Results<LineCnt,16> = OCONV(ExpectedRxDts<1,1>,'D4/')
|
||||
Results<LineCnt,17> = OCONV(XLATE('WO_MAT',WONo:'*1',WO_MAT_RX_DTM$,'X')[1,'.'],'D4/')
|
||||
Results<LineCnt,18> = OCONV(WORec<WO_LOG_PROMISE_SHIP_DT$>,'D4/')
|
||||
Results<LineCnt,19> = Reactors
|
||||
Results<LineCnt,20> = BlockedReactors
|
||||
Results<LineCnt,21> = MUWafers
|
||||
TempLine = Results<LineCnt>
|
||||
CONVERT '"' TO '' IN TempLine
|
||||
Results<LineCnt> = TempLine
|
||||
END
|
||||
REPEAT
|
||||
|
||||
PasteBlob = Results
|
||||
|
||||
* * * * * *
|
||||
|
||||
SWAP @VM WITH CHAR(9) IN PasteBlob
|
||||
SWAP @FM WITH CRLF$ IN PasteBlob
|
||||
CALL Set_Property('CLIPBOARD', 'TEXT', PasteBlob)
|
||||
|
||||
|
||||
ExportColCnt = 20
|
||||
|
||||
|
||||
* * * Paste it into a blank Excel Sheet
|
||||
|
||||
xlApp = OleCreateInstance("excel.Application")
|
||||
|
||||
IF OleStatus() THEN
|
||||
|
||||
Msg(@window, MsgUp)
|
||||
|
||||
ErrorMsg = 'Excel failed to start.':CRLF$:CRLF$
|
||||
ErrorMsg := 'The data from this export is on your clipboard and can be pasted into Excel on your local machine using <Ctrl><V> .'
|
||||
|
||||
ErrMsg(ErrorMsg)
|
||||
|
||||
RETURN
|
||||
|
||||
END
|
||||
|
||||
xlWorkBooks = OleGetProperty(xlApp, "Workbooks")
|
||||
xlWorkBook = OleCallMethod(xlWorkBooks,'Add')
|
||||
|
||||
* * * wait a second
|
||||
|
||||
Now = Time()
|
||||
LOOP
|
||||
CALL Yield()
|
||||
WHILE Time() EQ Now
|
||||
REPEAT
|
||||
|
||||
OlePutProperty(XlApp, 'Visible', xlSheetVisible)
|
||||
|
||||
void = OleCallMethod(xlWorkBook,'Activate')
|
||||
xlActiveSheet = OleGetProperty(xlWorkBook,'ActiveSheet')
|
||||
void = OleCallMethod(xlActiveSheet,'Paste')
|
||||
|
||||
eXcelCols = obj_Export('ExcelCol',TextColNos) ;* Returns alpha Excel columns from numeric columns
|
||||
|
||||
FirstLastCols = obj_Export('ExcelCol',1:@VM:ExportColCnt)
|
||||
|
||||
FirstColumn = FirstLastCols[1,@VM]
|
||||
LastColumn = FirstLastCols[COL2()+1,@VM]
|
||||
|
||||
range = OleGetProperty(xlActiveSheet,'Range',FirstColumn:'1:':LastColumn:'1')
|
||||
font = OleGetProperty(range,'Font')
|
||||
|
||||
OlePutProperty(font,'FontStyle','Bold')
|
||||
OlePutProperty(font,'UnderLine',xlUnderlineStyleSingle)
|
||||
|
||||
column = OleGetProperty(xlActiveSheet,'Columns',FirstColumn:':':LastColumn)
|
||||
void = OleCallMethod(column,'AutoFit')
|
||||
|
||||
Msg(@window, MsgUp)
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
@ -1,263 +0,0 @@
|
||||
COMPILE SUBROUTINE Export_WO_Log_Orig( Dummy )
|
||||
|
||||
DECLARE FUNCTION Msg, Dialog_Box, Utility, obj_Export, obj_WO_Log
|
||||
DECLARE FUNCTION Set_Printer, Get_Printer, obj_Install, Utility, obj_MUWafers
|
||||
|
||||
DECLARE SUBROUTINE Btree.Extract, RList, END_Dialog, Make.List, Msg, ErrMsg, SetInitDirOptions
|
||||
|
||||
$INSERT LSL_USERS_EQU
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT RLIST_EQUATES
|
||||
$INSERT OIPRINT_EQUATES
|
||||
$INSERT WO_LOG_EQU
|
||||
$INSERT WO_STEP_EQU
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT COMPANY_EQU
|
||||
$INSERT QUOTE_EQU
|
||||
$INSERT QUOTE_SPEC_EQU
|
||||
$INSERT RECIPE_EQU
|
||||
$INSERT ORDER_DET_EQU
|
||||
$INSERT PROD_SPEC_EQUATES
|
||||
$INSERT EXCEL_EQU
|
||||
|
||||
CRLF$ = \0D0A\
|
||||
|
||||
OPEN 'WO_STEP' TO WOStepTable ELSE
|
||||
ErrMsg('Unable to open "WO_STEP" table in EXPORT_WO_LOG routine.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
OPEN 'DICT.WO_STEP' TO DictWOStep ELSE
|
||||
ErrMsg('Unable to open "DICT.WO_STEP" table in EXPORT_WO_LOG routine.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
Def = ""
|
||||
Def<MTEXT$> = "Selecting Uncheduled Work Orders..."
|
||||
Def<MTYPE$> = "U"
|
||||
|
||||
MsgUp = Msg(@window, Def)
|
||||
|
||||
SelectSent = 'SELECT WO_STEP WITH SCHEDULED NE "Yes" '
|
||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
|
||||
*SelectSent = 'SELECT WO_STEP WITH CURR_STATUS NE "CL" "COMP" '
|
||||
*SelectSent = 'SELECT WO_STEP WITH CURR_STATUS = "NEW" "RTP" "RTS" "RX" "INPR" '
|
||||
*RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
|
||||
WOStepKeys = ''
|
||||
Done = 0
|
||||
LOOP
|
||||
READNEXT WOStepKey ELSE Done = 1
|
||||
UNTIL Done
|
||||
WOStepKeys<-1> = WOStepKey
|
||||
REPEAT
|
||||
|
||||
CONVERT @VM TO @FM IN WOStepKeys
|
||||
|
||||
IF WOStepKeys = '' THEN
|
||||
Msg(@window, MsgUp)
|
||||
ErrMsg('No Work Orders remain unscheduled.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
Make.List('',WOStepKeys,WOStepTable,DictWOStep)
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
END
|
||||
|
||||
Results = ''
|
||||
Results<1,1> = 'Spec Type'
|
||||
Results<1,2> = 'WO'
|
||||
Results<1,3> = 'Customer'
|
||||
Results<1,4> = 'Qty'
|
||||
Results<1,5> = 'PSN'
|
||||
Results<1,6> = 'Cust Part Numbers'
|
||||
Results<1,7> = 'Reactor Type'
|
||||
Results<1,8> = 'Sched Reacts'
|
||||
Results<1,9> = 'Inch'
|
||||
Results<1,10> = 'Tube Press Type'
|
||||
Results<1,11> = 'Epi Gases'
|
||||
Results<1,12> = 'Dopant L1'
|
||||
Results<1,13> = 'Cap/Burst Gases'
|
||||
Results<1,14> = 'Thick Target'
|
||||
Results<1,15> = 'Res Target'
|
||||
Results<1,16> = 'Expected Rx Dt'
|
||||
Results<1,17> = 'Received Date'
|
||||
Results<1,18> = 'Promised Ship'
|
||||
Results<1,19> = 'Qual'
|
||||
Results<1,20> = 'Blkd'
|
||||
Results<1,21> = 'MU Wfrs'
|
||||
|
||||
Done = 0
|
||||
LineCnt = 1
|
||||
LOOP
|
||||
READNEXT WOStepKey ELSE Done = 1
|
||||
UNTIL Done
|
||||
|
||||
READ WOStepRec FROM WOStepTable,WOStepKey THEN
|
||||
|
||||
IF WOStepRec<WO_STEP_SCHEDULED$> NE '1' THEN
|
||||
|
||||
WONo = WOStepKey[1,'*']
|
||||
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
WOMatKeys = WORec<WO_LOG_WO_MAT_KEY$>
|
||||
|
||||
CassCustPNs = XLATE('WO_MAT',WOMatKeys,WO_MAT_CUST_PART_NO$,'X')
|
||||
CustPNs = ''
|
||||
FOR I = 1 TO COUNT(CassCustPNs,@VM) + (CassCustPNs NE '')
|
||||
LOCATE CassCustPNs<1,I> IN CustPNs USING @VM SETTING POS ELSE
|
||||
CustPNs = INSERT(CustPNs,1,Pos,0,CassCustPNs<1,I>)
|
||||
END
|
||||
NEXT I
|
||||
|
||||
CompanyName = XLATE( 'COMPANY', WORec<WO_LOG_CUST_NO$>,COMPANY_CO_NAME$,'X')
|
||||
SWAP ',' WITH '-' IN CompanyName
|
||||
|
||||
WaferQty = SUM(XLATE('WO_MAT',WOMatKeys,WO_MAT_WAFER_QTY$,'X'))
|
||||
IF WaferQty > 0 THEN
|
||||
ExpectedRxDts = ''
|
||||
END ELSE
|
||||
OrderNo = WORec<WO_LOG_ORDER_NO$>
|
||||
OrderItems = WORec<WO_LOG_ORDER_ITEM$>
|
||||
OrderDetKeys = ''
|
||||
FOR N = 1 TO COUNT(OrderItems,@VM) + (OrderItems NE '')
|
||||
OrderDetKeys<1,N> = OrderNo:'*':OrderItems<1,N>
|
||||
NEXT N
|
||||
WaferQty = SUM(XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_ITEM_QTY$,'X'))
|
||||
ExpectedRxDts = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_EXP_RX_DT$,'X')
|
||||
END
|
||||
|
||||
MUWafers = obj_MUWafers('AvailWafers',WONo:@RM:WORec:@RM:0:@RM:1)
|
||||
ShipThickTarget = XLATE('WO_LOG',WONo,'SHIP_THICK_TARGET','X')
|
||||
ShipResTarget = XLATE('WO_LOG',WONo,'SHIP_RES_TARGET','X')
|
||||
|
||||
CustPSNs = XLATE('WO_STEP',@RECORD<34>,1,'X')
|
||||
|
||||
SWAP @VM WITH '\' IN CustPNs
|
||||
|
||||
PSNo = WOStepRec<WO_STEP_PROD_SPEC_ID$>
|
||||
|
||||
PSReactType = OCONV(XLATE('PROD_SPEC',PSNo,PROD_SPEC_REACTOR_TYPE$,'X'),'[REACT_TYPE_CONV]')
|
||||
|
||||
WaferSize = xlate( 'PROD_SPEC', PSNo, 'SUB_WAFER_SIZE', 'X' )
|
||||
SWAP 75 WITH '' IN WaferSize
|
||||
SWAP 100 WITH '' IN WaferSize
|
||||
SWAP 125 WITH '' IN WaferSize
|
||||
SWAP 150 WITH '' IN WaferSize
|
||||
SWAP 200 WITH '' IN WaferSize
|
||||
SWAP 'mm' WITH '' IN WaferSize
|
||||
WaferSize = trim( WaferSize )
|
||||
|
||||
RecipeId = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' )
|
||||
EPIGases = XLATE( 'RECIPE', RecipeId, RECIPE_EPI_GASES$, 'X' )
|
||||
|
||||
Reactors = WOStepRec<WO_STEP_REACTORS$>
|
||||
BlockedReactors = WOStepRec<WO_STEP_BLOCKED_REACTORS$>
|
||||
SchedReactors = XLATE('WO_LOG',WONo,'SCHED_REACTS','X')
|
||||
|
||||
CONVERT @VM TO ',' IN Reactors
|
||||
CONVERT @VM TO ',' IN BlockedReactors
|
||||
|
||||
IF WaferQty > 0 THEN
|
||||
LineCnt += 1
|
||||
Results<LineCnt,1> = OCONV(XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ),'[SPEC_TYPE_CONV]') ;* Spec Type
|
||||
Results<LineCnt,2> = OCONV(WONo,'MD0') ;* WO
|
||||
Results<LineCnt,3> = CompanyName ;* Company Name
|
||||
Results<LineCnt,4> = OCONV(WaferQty,'MDO') ;* Wafer Qty
|
||||
Results<LineCnt,5> = OCONV(PSNo,'MD0') ;* Prod Spec ID
|
||||
Results<LineCnt,6> = CustPNs ;* Customer Part Numbers
|
||||
Results<LineCnt,7> = PSReactType ;* Reactor type for Prod Spec
|
||||
Results<LineCnt,8> = SchedReactors
|
||||
Results<LineCnt,9> = WaferSize ;* Wafer Size
|
||||
Results<LineCnt,10> = XLATE( 'PROD_SPEC', PSNo, 'TUBE_PRESSURE_TYPE', 'X' ) ;* Tube Pressure Type
|
||||
Results<LineCnt,11> = EPIGases
|
||||
Results<LineCnt,12> = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) ;* Dopant L1
|
||||
Results<LineCnt,13> = XLATE( 'RECIPE', RecipeId, RECIPE_CAP_BURST_GASES$, 'X' ) ;* Cap Burst Gases
|
||||
Results<LineCnt,14> = ShipThickTarget
|
||||
Results<LineCnt,15> = ShipResTarget
|
||||
Results<LineCnt,16> = OCONV(ExpectedRxDts<1,1>,'D4/')
|
||||
Results<LineCnt,17> = OCONV(XLATE('WO_MAT',WONo:'*1',WO_MAT_RX_DTM$,'X')[1,'.'],'D4/')
|
||||
Results<LineCnt,18> = OCONV(WORec<WO_LOG_PROMISE_SHIP_DT$>,'D4/')
|
||||
Results<LineCnt,19> = Reactors
|
||||
Results<LineCnt,20> = BlockedReactors
|
||||
Results<LineCnt,21> = MUWafers
|
||||
TempLine = Results<LineCnt>
|
||||
CONVERT '"' TO '' IN TempLine
|
||||
Results<LineCnt> = TempLine
|
||||
END
|
||||
END
|
||||
END
|
||||
REPEAT
|
||||
|
||||
PasteBlob = Results
|
||||
|
||||
* * * * * *
|
||||
|
||||
SWAP @VM WITH CHAR(9) IN PasteBlob
|
||||
SWAP @FM WITH CRLF$ IN PasteBlob
|
||||
CALL Set_Property('CLIPBOARD', 'TEXT', PasteBlob)
|
||||
|
||||
|
||||
ExportColCnt = 20
|
||||
|
||||
|
||||
* * * Paste it into a blank Excel Sheet
|
||||
|
||||
xlApp = OleCreateInstance("excel.Application")
|
||||
|
||||
IF OleStatus() THEN
|
||||
|
||||
Msg(@window, MsgUp)
|
||||
|
||||
ErrorMsg = 'Excel failed to start.':CRLF$:CRLF$
|
||||
ErrorMsg := 'The data from this export is on your clipboard and can be pasted into Excel on your local machine using <Ctrl><V> .'
|
||||
|
||||
ErrMsg(ErrorMsg)
|
||||
|
||||
RETURN
|
||||
|
||||
END
|
||||
|
||||
xlWorkBooks = OleGetProperty(xlApp, "Workbooks")
|
||||
xlWorkBook = OleCallMethod(xlWorkBooks,'Add')
|
||||
|
||||
* * * wait a second
|
||||
|
||||
Now = Time()
|
||||
LOOP
|
||||
CALL Yield()
|
||||
WHILE Time() EQ Now
|
||||
REPEAT
|
||||
|
||||
OlePutProperty(XlApp, 'Visible', xlSheetVisible)
|
||||
|
||||
void = OleCallMethod(xlWorkBook,'Activate')
|
||||
xlActiveSheet = OleGetProperty(xlWorkBook,'ActiveSheet')
|
||||
void = OleCallMethod(xlActiveSheet,'Paste')
|
||||
|
||||
eXcelCols = obj_Export('ExcelCol',TextColNos) ;* Returns alpha Excel columns from numeric columns
|
||||
|
||||
FirstLastCols = obj_Export('ExcelCol',1:@VM:ExportColCnt)
|
||||
|
||||
FirstColumn = FirstLastCols[1,@VM]
|
||||
LastColumn = FirstLastCols[COL2()+1,@VM]
|
||||
|
||||
range = OleGetProperty(xlActiveSheet,'Range',FirstColumn:'1:':LastColumn:'1')
|
||||
font = OleGetProperty(range,'Font')
|
||||
|
||||
OlePutProperty(font,'FontStyle','Bold')
|
||||
OlePutProperty(font,'UnderLine',xlUnderlineStyleSingle)
|
||||
|
||||
column = OleGetProperty(xlActiveSheet,'Columns',FirstColumn:':':LastColumn)
|
||||
void = OleCallMethod(column,'AutoFit')
|
||||
|
||||
Msg(@window, MsgUp)
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
@ -118,7 +118,7 @@ EQU COL$STEP_SCHED_DTM TO 11
|
||||
EQU COMMA$ to ','
|
||||
|
||||
Declare subroutine Errmsg, Btree.Extract, Set_Status, Logging_Services, Work_Order_Services, Start_Window, obj_WO_Log
|
||||
Declare subroutine obj_Notes, Comm_Customer_Epi, Print_WO, obj_WO_Mat, obj_WM_In, obj_WO_Mat, obj_RDS, Msg
|
||||
Declare subroutine obj_Notes, Comm_Customer_Epi, Print_WO, obj_WO_Mat, obj_WM_In, obj_WO_Mat, obj_RDS, Msg, PlaceDialog
|
||||
Declare subroutine Security_Err_Msg, obj_WM_Out, Database_Services, End_Window, Print_Shelf_Label, Signature_Services
|
||||
Declare Subroutine Service_Services
|
||||
Declare function obj_WO_Log, Work_Order_Services, Environment_Services, Logging_Services, Memberof, NextKey
|
||||
@ -127,14 +127,9 @@ Declare function Database_Services, Unassigned, obj_WO_Mat, obj_RDS, Security_
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_LOG'
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
* LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Ctrl Performance Log.csv'
|
||||
* Headers = 'Logging DTM':@FM:'Ctrl':@FM:'Load/Calculate Time'
|
||||
* objCtrlLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, COMMA$, Headers, '', False$, False$)
|
||||
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Release Log.csv'
|
||||
Headers = 'Logging DTM' : @FM : 'User' : @FM : 'Notes'
|
||||
objReleaseLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, COMMA$, Headers, '', False$, False$)
|
||||
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
|
||||
@ -167,8 +162,7 @@ Event WINDOW.CREATE(CreateParam)
|
||||
Set_Property(@Window:'.EDL_WO_NO', 'TEXT', CreateParam)
|
||||
Post_Event(@Window, 'READ')
|
||||
end
|
||||
FormSize = ''
|
||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
||||
PlaceDialog(-2, -2)
|
||||
|
||||
End Event
|
||||
|
||||
@ -537,7 +531,7 @@ Event PUB_DUE_IN_WO.CLICK()
|
||||
|
||||
MsgUp = Msg(@WINDOW,'','SELECT_OPEN_WO')
|
||||
WOKeys = ''
|
||||
SelectStatement = 'CURR_STATUS':@VM:'ASN':@VM:'AWM':@VM:'RTP':@FM
|
||||
SelectStatement = 'CURR_STATUS_STATIC':@VM:'ASN':@VM:'AWM':@VM:'RTP':@FM
|
||||
|
||||
Btree.Extract(SelectStatement, 'WO_LOG', DictWOLogTable, WOKeys, '', '')
|
||||
|
||||
@ -1310,7 +1304,9 @@ Event PUB_REM_CASS.CLICK()
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event PUB_REM_WM_OUT.CLICK()
|
||||
|
||||
ErrorMessage = ''
|
||||
WONo = Get_Property(@WINDOW:'.EDL_WO_NO','TEXT')
|
||||
|
||||
@ -1367,7 +1363,7 @@ Event PUB_REM_WM_OUT.CLICK()
|
||||
end
|
||||
end
|
||||
If ErrorMessage EQ '' then
|
||||
//Now send a message
|
||||
// Now send a message
|
||||
Recipients = XLATE('NOTIFICATION','WO_ENTRY',NOTIFICATION_USER_ID$,'X')
|
||||
SentFrom = @USER4
|
||||
Subject = 'Cassettes removed from WO ':WONo
|
||||
@ -1390,81 +1386,9 @@ Event PUB_REM_WM_OUT.CLICK()
|
||||
Msg('Error in voiding lots process : ' : ErrorMessage)
|
||||
end
|
||||
GoSub PopulateControls
|
||||
|
||||
end event
|
||||
|
||||
* Event PUB_REM_WM_OUT.CLICK()
|
||||
* WONo = Get_Property(@WINDOW:'.EDL_WO_NO','TEXT')
|
||||
* WOStepKey = XLATE('WO_LOG', WONo, WO_LOG_WO_STEP_KEY$, 'X')
|
||||
* IF WONo NE '' then
|
||||
*
|
||||
* WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
* WOMatKeys = WORec<WO_LOG_WO_MAT_KEY$>
|
||||
* WMOutKeys = Database_Services('ReadDataColumn', 'WO_STEP', WOStepKey, WO_STEP_WM_OUT_KEYS$, True$, 0, False$)
|
||||
* WMOutCnt = COUNT(WMOutKeys,@VM) + (WMOutKeys NE '')
|
||||
*
|
||||
* Display = ''
|
||||
* DispLine = 1
|
||||
*
|
||||
* IF WMOutCnt > 0 THEN
|
||||
*
|
||||
* FOR I = WMOutCnt TO 1 STEP -1
|
||||
* WMORec = XLATE('WM_OUT',WMOutKeys<1,I>,'','X')
|
||||
* WMO_RdsNos = WMORec<WM_OUT_RDS$>
|
||||
* WMO_NCRNos = WMORec<WM_OUT_SLOT_NCR$>
|
||||
* WMO_UMWCassIDs = WMORec<WM_OUT_UMW_CASS_ID$>
|
||||
* CONVERT @VM TO '' IN WMO_RdsNos
|
||||
* CONVERT @VM TO '' IN WMO_NCRNos
|
||||
* CONVERT @VM TO '' IN WMO_UMWCassIDs
|
||||
*
|
||||
* UNTIL WMO_RdsNos NE '' OR WMO_NCRNos NE '' OR WMO_UMWCassIDs NE ''
|
||||
* Display<1,DispLine,1> = FIELD(WOMatKeys<1,I>,'*',2)
|
||||
* Display<1,DispLine,2> = OCONV(obj_WM_Out('CurrStatus',WOMatKeys<1,I>:@RM:WMORec),'[WO_MAT_CURR_STATUS_CONV]')
|
||||
* Display<1,DispLine,3> = WMOutKeys<1,I>
|
||||
* DispLine += 1
|
||||
* NEXT I
|
||||
*
|
||||
* IF Display NE '' THEN
|
||||
* TypeOver = ''
|
||||
* TypeOver<PDISPLAY$> = Display
|
||||
* TypeOver<PTITLE$> = 'Unused WM_OUT Cassettes'
|
||||
* WMOData = Popup(@WINDOW,TypeOver,'UNUSED_WM_OUT')
|
||||
* IF WMOData = '' OR WMOData = CHAR(27) THEN RETURN ;* Cancelled out
|
||||
* END ELSE
|
||||
* ErrMsg('All cassettes on this Work Order have started processing.')
|
||||
* RETURN
|
||||
* END
|
||||
*
|
||||
* DelWMOutKeys = ''
|
||||
* FOR I = 1 TO COUNT(WMOData,@FM) + (WMOData NE '')
|
||||
* DelWMOutKeys<1,I> = WMOData<I,3>
|
||||
* NEXT I
|
||||
*
|
||||
* TestWMOutKeys = DelWMOutKeys
|
||||
*
|
||||
* IF TestWMOutKeys NE '' THEN
|
||||
* for each WMOutKey in TestWMOutKeys using @VM
|
||||
* Work_Order_Services('SignVoidWMO', WMOutKey, @USER4)
|
||||
* Next WMOutKey
|
||||
* If Error_Services('HasError') then
|
||||
* Msg(@Window, Error_Services('GetMessage'))
|
||||
* end
|
||||
* END
|
||||
* END
|
||||
*
|
||||
* IF Display = '' THEN
|
||||
* ErrMsg('All cassettes on this Work Order have had wafers placed in them.')
|
||||
* RETURN
|
||||
* END
|
||||
*
|
||||
* IF Get_Status(errCode) THEN
|
||||
* ErrMsg(errCode)
|
||||
* END
|
||||
*
|
||||
* GoSub PopulateControls
|
||||
* end
|
||||
*
|
||||
* end event
|
||||
|
||||
|
||||
Event PUB_RECALL.CLICK()
|
||||
|
||||
@ -1897,15 +1821,7 @@ return
|
||||
|
||||
GetColumnData:
|
||||
|
||||
* LoadTimeStart = GetTickCount()
|
||||
Val = Xlate('WO_LOG', WONo, Col, 'X')
|
||||
// Logging for optimization purposes
|
||||
* LoadTimeStop = GetTickCount()
|
||||
* LoadTimeDuration = LoadTimeStop - LoadTimeStart
|
||||
* LogData<2> = Col
|
||||
* LogData<3> = LoadTimeDuration
|
||||
* Logging_Services('AppendLog', objCtrlLog, LogData, @RM, @FM)
|
||||
|
||||
If Unassigned(CtrlConv) then CtrlConv = ''
|
||||
If CtrlConv EQ '' then
|
||||
Locate Col in WOLogFields using @VM setting ConvPos then
|
||||
|
@ -916,8 +916,7 @@ OpenWONos:
|
||||
|
||||
WOKeys = ''
|
||||
|
||||
* SelectStatement = 'CURR_STATUS':@VM:'RX':@VM:'INPR':@VM:'RTS':@VM:'SHIP':@VM:'HOLD':@FM ;* Inactivated by dkk 4/3/14
|
||||
SelectStatement = 'WO_STATUS':@VM:'OPEN':@FM ;* Added by dkk 4/3/14
|
||||
SelectStatement = 'CLOSE_DATE':@VM:'':@FM ;* Added by dkk 4/3/14
|
||||
|
||||
Btree.Extract(SelectStatement,'WO_LOG',DictWOLogTable,WOKeys,'','')
|
||||
|
||||
@ -957,13 +956,12 @@ ShipWONos:
|
||||
|
||||
IF Get_Status(errCode) THEN RETURN
|
||||
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS = "INPR" '
|
||||
SelectStatement := ' OR WITH CURR_STATUS = "RTS"'
|
||||
SelectStatement := ' OR WITH CURR_STATUS = "SHIP"'
|
||||
SelectStatement := ' OR WITH CURR_STATUS = "HOLD"'
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS_STATIC = "INPR" '
|
||||
SelectStatement := ' OR WITH CURR_STATUS_STATIC = "RTS"'
|
||||
SelectStatement := ' OR WITH CURR_STATUS_STATIC = "SHIP"'
|
||||
SelectStatement := ' OR WITH CURR_STATUS_STATIC = "HOLD"'
|
||||
SelectStatement := ' BY COMMIT_DATE'
|
||||
|
||||
|
||||
RList(SelectStatement, TARGET_ACTIVELIST$, '','','')
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
@ -1033,13 +1031,8 @@ ReleaseCassettes:
|
||||
IF WONo = '' THEN ErrorMsg = 'Null parameter WONo passed to routine (':Method:').'
|
||||
IF ErrorMsg NE '' THEN RETURN
|
||||
|
||||
NewForm = Xlate('APP_INFO', 'NEW_WO_FORM', '', 'X')
|
||||
If NewForm then
|
||||
Form = 'NDW_WO_LOG'
|
||||
end else
|
||||
Form = 'WO_LOG2'
|
||||
end
|
||||
OrgColor = Set_Property(Form:'.STATUSLINE_FIX','BACKCOLOR',YELLOW$) ;* //////// Messaging
|
||||
Form = 'NDW_WO_LOG'
|
||||
OrgColor = Set_Property(Form:'.STATUSLINE_FIX','BACKCOLOR',YELLOW$)
|
||||
|
||||
TableVar = ''
|
||||
OtParms = 'WO_LOG':@RM:WONo:@RM:TableVar
|
||||
@ -1067,19 +1060,14 @@ ReleaseCassettes:
|
||||
|
||||
IF ErrorMsg NE '' THEN
|
||||
obj_Tables('UnlockRec',OtParms)
|
||||
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
IF ProdVerNo NE '' THEN
|
||||
|
||||
ReactorType = XLATE('PROD_VER',ProdVerNo,PROD_VER_REACT_TYPE$,'X')
|
||||
|
||||
IF ReactorType NE 'EPP' THEN
|
||||
|
||||
IF WORec<WO_LOG_WO_START_DTM$> = '' THEN
|
||||
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS'),'DT')
|
||||
WORec<WO_LOG_WO_START_DTM$> = CurrDTM
|
||||
@ -1089,7 +1077,7 @@ ReleaseCassettes:
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
Send_Info("Collecting Data for release...") ;* //////// Messaging
|
||||
Send_Info("Collecting Data for release...")
|
||||
|
||||
IF OrderNo = '' THEN
|
||||
OrderWaferQty = WORec<WO_LOG_WO_QTY$>
|
||||
@ -1097,9 +1085,7 @@ ReleaseCassettes:
|
||||
VisionOrderNo = WORec<WO_LOG_PROD_ORD_NO$> ;* SAP Production Order Number
|
||||
VisionLineNos = ''
|
||||
WMOLoadQty = XLATE('CUST_EPI_PART',CustNo:'*':EPIPartNo,CUST_EPI_PART_WMO_LOAD_CNT$,'X')
|
||||
|
||||
END ELSE
|
||||
|
||||
OrderRec = XLATE('ORDER',OrderNo,'','X')
|
||||
OrderWaferQty = 0
|
||||
|
||||
@ -1126,22 +1112,12 @@ ReleaseCassettes:
|
||||
|
||||
Send_Info('Locking WOMat records for update...')
|
||||
|
||||
* WOMTableVar = obj_WO_Mat('LockSet',WOMKeys)
|
||||
WOMTableVar = Database_Services('GetTableHandle', 'WO_MAT')
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
obj_Tables('UnlockRec',OtParms) ;* Unlock WO_LOG record
|
||||
|
||||
Send_Info(STR(' ',60)) ;** - Messaging - **
|
||||
|
||||
NewForm = Xlate('APP_INFO', 'NEW_WO_FORM', '', 'X')
|
||||
If NewForm then
|
||||
Form = 'NDW_WO_LOG'
|
||||
end else
|
||||
Form = 'WO_LOG2'
|
||||
end
|
||||
|
||||
Dummy = Set_Property(Form:'.STATUSLINE_FIX','BACKCOLOR',OrgColor) ;** - Messaging - **
|
||||
obj_Tables('UnlockRec',OtParms)
|
||||
Send_Info(STR(' ',60))
|
||||
Dummy = Set_Property(Form:'.STATUSLINE_FIX','BACKCOLOR',OrgColor)
|
||||
RETURN
|
||||
END
|
||||
|
||||
@ -1149,20 +1125,14 @@ ReleaseCassettes:
|
||||
LogData<4> = 'Trace 1'
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
|
||||
* At this point the WO_LOG is locked and the WO_MAT (cassettes) are all locked for update
|
||||
|
||||
EpiPN = WORec<WO_LOG_EPI_PART_NO$>
|
||||
EpiPartRec = XLATE('EPI_PART',EpiPN,'','X')
|
||||
|
||||
SubSupplyBy = EpiPartRec<EPI_PART_SUB_SUPP_BY$>
|
||||
|
||||
ProdVerRec = XLATE('PROD_VER',ProdVerNo,'','X')
|
||||
|
||||
ProcStepNos = ProdVerRec<PROD_VER_PROC_STEP_NO$>
|
||||
ProcPSNs = ProdVerRec<PROD_VER_PROC_STEP_PSN$>
|
||||
ReactorType = ProdVerRec<PROD_VER_REACT_TYPE$>
|
||||
|
||||
WOStepCnt = COUNT(ProcPSNs,@VM) + (ProcPSNs NE '')
|
||||
WOStepCnt = COUNT(ProcPSNs,@VM) + (ProcPSNs NE '')
|
||||
|
||||
TableVar = ''
|
||||
LastStep = ''
|
||||
@ -1185,11 +1155,8 @@ ReleaseCassettes:
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
|
||||
IF ReactorType = 'EPP' THEN
|
||||
|
||||
Send_Info('Creating WM_OUT records for WOStep ':WOStep:'...') ;** - Messaging - **
|
||||
|
||||
OutOnlyCassIDS = obj_WM_Out('Create',WONO:@RM:WOStep:@RM:CassNos:@RM:WMOLoadQty) ;* Changed WMOLoadQty 9/14/2012 JCH *********
|
||||
|
||||
Send_Info('Creating WM_OUT records for WOStep ':WOStep:'...')
|
||||
OutOnlyCassIDS = obj_WM_Out('Create',WONO:@RM:WOStep:@RM:CassNos:@RM:WMOLoadQty)
|
||||
END ELSE
|
||||
OutOnlyCassIDs = ''
|
||||
END
|
||||
@ -1203,11 +1170,13 @@ ReleaseCassettes:
|
||||
LogData<4> = 'WONo:':WONo:' WOStep:':WOStep:' CassNos:':CassNos:' CassCnt:':CassCnt:' WMOLoadQty:':WMOLoadQty
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
|
||||
Def = ""
|
||||
Def<MCAPTION$> = "Releasing Cassettes for WO Step ":WOStep:"..."
|
||||
Def<MTYPE$> = "G"
|
||||
Def<MEXTENT$> = CassCnt
|
||||
Def<MTEXTWIDTH$> = 600
|
||||
Def = ""
|
||||
Def<MCAPTION$> = "Releasing Cassettes for WO Step ":WOStep:"..."
|
||||
Def<MTYPE$> = "G"
|
||||
Def<MEXTENT$> = CassCnt
|
||||
Def<MTEXTWIDTH$> = 600
|
||||
Def<MCOL$> = -2
|
||||
Def<MROW$> = -2
|
||||
|
||||
MsgUp = Msg(@WINDOW, Def)
|
||||
|
||||
@ -1231,9 +1200,9 @@ ReleaseCassettes:
|
||||
CassWaferQty = XLATE('WO_MAT',WONo:'*':CassNo,WO_MAT_WAFER_QTY$,'X')
|
||||
|
||||
WMIKey = WONo:'*':WOStep:'*':CassNo
|
||||
Send_Info('Creating WM_IN record "':WMIKey:'"...') ;** - Messaging - **
|
||||
Send_Info('Creating WM_IN record "':WMIKey:'"...')
|
||||
|
||||
obj_WM_IN('Create',WONo:@RM:WOStep:@RM:CassNo:@RM:CassWaferQty) ;* ******************************** EpiPro 5000 Reactor -> create WM_IN records
|
||||
obj_WM_IN('Create',WONo:@RM:WOStep:@RM:CassNo:@RM:CassWaferQty)
|
||||
|
||||
END ELSE
|
||||
|
||||
@ -1276,7 +1245,7 @@ ReleaseCassettes:
|
||||
Parms := '':@RM ;* QXJ Flag
|
||||
Parms := CassSubVendCd
|
||||
|
||||
Send_Info('Creating RDS for Cass No: ':CassNo:'...') ;** - Messaging - **
|
||||
Send_Info('Creating RDS for Cass No: ':CassNo:'...')
|
||||
|
||||
IF ReactorType = 'GAN' THEN
|
||||
|
||||
@ -1319,9 +1288,8 @@ ReleaseCassettes:
|
||||
ErrorMsg = "RDS '" : NewRDSNo : "' Create Failure - Check for missing data on Work Order"
|
||||
If Error_Services('HasError') then
|
||||
ErrMsg = Error_Services('GetMessage')
|
||||
EmailAddr = 'dstieber@srpcs.com,Dan.Crisp@infineon.com,jonathan.ouellette@infineon.com'
|
||||
LogData = LoggingDTM : ',' : @USER4 : ',' : WONo : ',' : ErrMsg
|
||||
Logging_Services('AppendLog', objLog, LogData, CRLF$, COMMA$, False$, EmailAddr, LogData)
|
||||
Logging_Services('AppendLog', objLog, LogData, CRLF$, COMMA$, False$, '', LogData)
|
||||
end
|
||||
|
||||
RTParms = 'RDS'
|
||||
@ -1339,7 +1307,7 @@ ReleaseCassettes:
|
||||
|
||||
IF ReprocessedMat THEN
|
||||
OrgRDSNo = CassLotNo
|
||||
obj_Reprocess('FixUp',OrgRDSNo:@RM:NewRDSNo) ;****************************************************
|
||||
obj_Reprocess('FixUp',OrgRDSNo:@RM:NewRDSNo)
|
||||
END
|
||||
END ;* End of check for GAN reactor
|
||||
|
||||
@ -1358,12 +1326,8 @@ ReleaseCassettes:
|
||||
RelDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS') ;* 12/31/2014 JCH & DKK moved to prevent time incrementing time during release
|
||||
PtiDTM = OCONV(Date(),'D4/'):' ':OCONV(Time()+5,'MTHS')
|
||||
|
||||
WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
|
||||
* AvailOutSlots = WOLogRec<WO_LOG_AVAIL_OUT_SLOTS$>
|
||||
MaxShipQty = Xlate('WO_LOG', WONo, 'CUST_EPI_PART_SHIP_QTY', 'X')
|
||||
|
||||
IF WOLogRec<WO_LOG_NEXT_OUT_SLOT$> EQ '' then WOLogRec<WO_LOG_NEXT_OUT_SLOT$> = '1*1'
|
||||
|
||||
FOR N = 1 TO CassCnt
|
||||
WOMKey = WOMKeys<1,N>
|
||||
CassNo = FIELD(WOMKey,'*',2)
|
||||
@ -1424,23 +1388,12 @@ ReleaseCassettes:
|
||||
|
||||
NEXT N
|
||||
|
||||
Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, True$, False$, True$)
|
||||
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS')
|
||||
LogData<4> = 'Trace 4'
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
|
||||
Send_Info(STR(' ',60)) ;** - Messaging - **
|
||||
NewForm = Xlate('APP_INFO', 'NEW_WO_FORM', '', 'X')
|
||||
If NewForm then
|
||||
Form = 'NDW_WO_LOG'
|
||||
end else
|
||||
Form = 'WO_LOG2'
|
||||
end
|
||||
Dummy = Set_Property(Form:'.STATUS_LINE_FIX','BACKCOLOR',OrgColor) ;** - Messaging - **
|
||||
|
||||
|
||||
* * * * * * WO_LOG record write was here
|
||||
Send_Info(STR(' ',60))
|
||||
Dummy = Set_Property(Form:'.STATUS_LINE_FIX','BACKCOLOR',OrgColor)
|
||||
|
||||
OutOnlyCnt = COUNT(OutOnlyCassIDs,@VM) + (OutOnlyCassIDs NE '')
|
||||
|
||||
@ -1453,21 +1406,20 @@ ReleaseCassettes:
|
||||
END
|
||||
NEXT I
|
||||
|
||||
WORec<WO_LOG_WO_MAT_KEY$> = ExistingWOMatKeys ;* Add OutOnly Cassettetes to list inWO_LOG record.
|
||||
IF WORec<WO_LOG_NEXT_OUT_SLOT$> EQ '' then WORec<WO_LOG_NEXT_OUT_SLOT$> = '1*1'
|
||||
WORec<WO_LOG_WO_MAT_KEY$> = ExistingWOMatKeys
|
||||
|
||||
Send_Info('Saving WO_LOG record...')
|
||||
|
||||
OtParms = FieldStore(OtParms,@RM,4,1,WORec)
|
||||
|
||||
obj_Tables('WriteRec',OtParms) ;* Writes and unlocks the record It only has one value updated
|
||||
obj_Tables('WriteRec',OtParms) ;* Writes and unlocks the record
|
||||
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS')
|
||||
LogData<4> = 'Trace 5'
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
|
||||
Send_Info(STR(' ',60)) ;** - Messaging - **
|
||||
|
||||
* * * * * * * * * *
|
||||
Send_Info(STR(' ',60))
|
||||
|
||||
ReactNos = obj_Sched('GetReactNos',WONo) ;************************ 5/26/2-15 JCH Added schedule ReactNos and check for WO_START_DTM$
|
||||
|
||||
@ -1491,33 +1443,25 @@ ReleaseCassettes:
|
||||
|
||||
END CASE
|
||||
|
||||
|
||||
IF WORec<WO_LOG_WO_START_DTM$> NE '' THEN
|
||||
Recipients = XLATE('NOTIFICATION','WO_RELEASE',NOTIFICATION_USER_ID$,'X')
|
||||
SentFrom = @USER4
|
||||
Subject = 'Work Order Release on ':WONo
|
||||
|
||||
IF ReactorType = 'EPP' THEN
|
||||
AttachWindow = 'WO_PROD_EPI'
|
||||
END ELSE
|
||||
AttachWindow = 'WO_PROD'
|
||||
END
|
||||
|
||||
AttachKey = WONo:'*':1
|
||||
|
||||
SendToGroup = ''
|
||||
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create',Parms)
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
END
|
||||
END
|
||||
|
||||
END ;* WO is not on the schedule
|
||||
|
||||
* * * * * * * * * *
|
||||
LogData<1> = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS')
|
||||
LogData<4> = 'Ending ReleaseCassettes routine'
|
||||
Logging_Services('AppendLog', objReleaseLog, LogData, @RM, @FM)
|
||||
@ -1525,8 +1469,6 @@ ReleaseCassettes:
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
RecallWO:
|
||||
* * * * * * *
|
||||
@ -2517,9 +2459,9 @@ CloseComp:
|
||||
IF Get_Status(errCode) THEN RETURN
|
||||
|
||||
IF CompOrShipShort = 'Comp' THEN
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS = "COMP" AND WITHOUT CLOSE_DATE '
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS_STATIC = "COMP" AND WITHOUT CLOSE_DATE '
|
||||
END ELSE
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS = "INPR" "SHIP" AND WITHOUT CLOSE_DATE '
|
||||
SelectStatement = 'SELECT WO_LOG WITH CURR_STATUS_STATIC = "INPR" "SHIP" AND WITHOUT CLOSE_DATE '
|
||||
END
|
||||
|
||||
RList(SelectStatement, TARGET_ACTIVELIST$, '','','')
|
||||
@ -3107,4 +3049,3 @@ SchedReacts:
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user