open-insight/LSL2/STPROC/REPORT_POSTCLEANS.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

362 lines
9.5 KiB
Plaintext

COMPILE SUBROUTINE REPORT_POSTCLEANS(Dummy)
* PostCleans Report - goes straight to Excel
* 9/25/2007 John C. Henry, J.C. Henry & Co., Inc. Initial coding
DECLARE SUBROUTINE ErrMsg, Btree.Extract, Set_Status, SetInitDirOptions, mSG
DECLARE FUNCTION Msg, Get_Status, obj_Calendar, Utility, SetInitDirOptions, Dialog_Box, obj_RDS, Environment_Services
$INSERT RDS_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT WM_OUT_EQUATES
$INSERT MSG_EQUATES
EQU COL$WMO_KEY TO 1
EQU COL$RDS_NO TO 2
EQU COL$WO_STEP_PS_NO TO 3
EQU COL$CUST_NAME TO 4
EQU COL$PART_NO TO 5
EQU COL$WO_STEP_POST_CLEAN TO 6
EQU COL$POST_CLEAN TO 7
EQU COL$WO_STEP_WFRS_OUT TO 8
EQU COL$RX_DTM TO 9
EQU COL$HOLD_STATUS TO 10
EQU COL$PERIOD TO 12
EQU COL$PERIOD_VALUE TO 13
EQU COL$PERIOD_START TO 14
EQU COL$PERIOD_END TO 15
EQU CRLF$ TO \0D0A\
equ xlTrue to -1
equ xlFalse to 0
equ xlSheetVisible to -1
equ xlRangeAutoFormatSimple to -4154
equ xlRangeAutoFormatClassic1 to 1
equ xlCSV to 6
equ xlTextMSDOS to 21
equ xlCSVWindows to 23
eXcelCols = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,BB,CC,DD,EE,FF,GG,HH,II,JJ,KK,LL'
SWAP "','" WITH ',' IN eXcelCols
CONVERT ',' TO @VM IN eXcelCols
DataArray = ''
DataArray<COL$WMO_KEY,1> = 'WM_OUT Key'
DataArray<COL$RDS_NO,1> = 'RDS No'
DataArray<COL$WO_STEP_PS_NO,1> = 'WO Step PSN'
DataArray<COL$CUST_NAME,1> = 'Customer Name'
DataArray<COL$PART_NO,1> = 'Part No'
DataArray<COL$WO_STEP_POST_CLEAN,1> = 'WO Step Post Clean'
DataArray<COL$POST_CLEAN,1> = 'Post Clean Code'
DataArray<COL$WO_STEP_WFRS_OUT,1> = 'WO Step Wfrs Out'
DataArray<COL$RX_DTM,1> = 'Received DTM'
DataArray<COL$HOLD_STATUS,1> = 'Hold Status'
DataArray<COL$PERIOD,5> = 'Ran At'
DataArray<COL$PERIOD_VALUE,5> = ''
DataArray<COL$PERIOD_START,5> = OCONV(Date(),'D4/')
DataArray<COL$PERIOD_END,5> = OCONV(Time(),'MTH')
OPEN 'DICT.RDS' TO RDSDict ELSE
ErrMsg('Unable to open "DICT.RDS" for index lookup')
RETURN
END
OPEN 'DICT.WM_OUT' TO WMOutDict ELSE
ErrMsg('Unable to open "DICT.WM_OUT" for index lookup')
RETURN
END
OPEN 'DICT.WO_MAT' TO @DICT ELSE
ErrMsg('Unable to open "DICT.WO_MAT" for report')
RETURN
END
OPEN 'WO_MAT' TO WOMatFile ELSE
ErrMsg('Unable to open "WO_MAT" for report')
RETURN
END
SearchString = 'CURR_STATUS':@VM:'PSTC':@VM:'HOLD':@FM ;********
RDSKeys = ''
Option = ''
Flag = ''
Def = ""
Def<MTEXT$> = "Selecting RDS records..."
Def<MTYPE$> = "U"
MsgUp = Msg(@window, Def) ;* display the processing message
Set_Status(0)
Btree.Extract(SearchString, 'RDS', RDSDict, RDSKeys, Option, Flag)
Msg(@WINDOW, MsgUp)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
RETURN
END
WMOutKeys = ''
Option = ''
Flag = ''
Def = ""
Def<MTEXT$> = "Selecting WM_OUT records..."
Def<MTYPE$> = "U"
MsgUp = Msg(@window, Def) ;* display the processing message
Set_Status(0)
Btree.Extract(SearchString, 'WM_OUT', WMOutDict, WMOutKeys, Option, Flag)
Msg(@WINDOW, MsgUp)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
RETURN
END
RDSCnt = COUNT(RDSKeys,@VM) + (RDSKeys NE '')
WMOutCnt = COUNT(WMOutKeys,@VM) + (WMOutKeys NE '')
LineCnt = RDSCnt + WMOutCnt
Def = ""
Def<MCAPTION$> = "Building Report..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = RDSCnt
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def)
WOMatKeys = ''
ReportLines = ''
LoopCnt = 0
FOR I = 1 TO RDSCnt
RDSKey = RDSKeys<1,I>
RDSRec = XLATE('RDS',RDSKey,'','X')
ReactorType = XLATE('REACTOR',RDSRec<RDS_REACTOR$>,1,'X')
IF ReactorType NE 'EPP' THEN
WONo = RDSRec<RDS_WO$>
CassNo = RDSRec<RDS_CASS_NO$>
PSNo = RDSRec<RDS_PROD_SPEC_ID$>
PartNo = RDSRec<RDS_PART_NUM$>
WfrsOut = obj_RDS('WafersOut',RDSKey:@RM:RDSRec)
StepPostClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_POST_CLEAN', 'X' )
PostClean = RDSRec<RDS_POST_CODE$>
OutDTM = OCONV(RDSRec<RDS_DATE_OUT$>,'D2/'):' ':OCONV(RDSRec<RDS_TIME_OUT$,'MTHS')
Hold = RDSRec<RDS_HOLD$>
HoldDates = RDSRec<RDS_HOLD_DATE$>
HoldStatus = ''
IF Hold = 1 THEN
IF PostClean NE 'External' THEN GOTO SkipRDS ;*
HoldStatus = 'On Hold'
END ELSE
IF HoldDates = '' THEN
HoldStatus = 'No'
END ELSE
HoldStatus = 'Off Hold'
END
END
IF WONo NE '' AND CassNo NE '' THEN
WOMatKey = WONo:'*':CassNo
LOCATE WOMatKey IN WOMatKeys BY 'AR' USING @VM SETTING Pos ELSE
CustName = XLATE('WO_MAT',WOMatKey,'CUST_NAME','X')
WOMatKeys = INSERT(WOMatKeys,1,Pos,0,WOMatKey)
ReportLines = INSERT(ReportLines,COL$WMO_KEY,Pos,0,'')
ReportLines = INSERT(ReportLines,COL$RDS_NO,Pos,0,RDSKey)
ReportLines = INSERT(ReportLines,COL$WO_STEP_PS_NO,Pos,0,PSNo)
ReportLines = INSERT(ReportLines,COL$CUST_NAME,Pos,0,CustName)
ReportLines = INSERT(ReportLines,COL$PART_NO,Pos,0,PartNo)
ReportLines = INSERT(ReportLines,COL$WO_STEP_POST_CLEAN,Pos,0,StepPostClean)
ReportLines = INSERT(ReportLines,COL$POST_CLEAN,Pos,0,PostClean)
ReportLines = INSERT(ReportLines,COL$WO_STEP_WFRS_OUT,Pos,0,WfrsOut)
ReportLines = INSERT(ReportLines,COL$RX_DTM,Pos,0,OutDTM)
ReportLines = INSERT(ReportLines,COL$HOLD_STATUS,Pos,0,HoldStatus)
END
END
END
LoopCnt += 1
* * * * * * *
SkipRDS:
* * * * * * *
WHILE Msg(@WINDOW, MsgUp, LoopCnt, MSGINSTUPDATE$)
NEXT I
FOR I = 1 TO WMOutCnt
WMOutKey = WMOutKeys<1,I>
WMOutRec = XLATE('WM_OUT',WMOutKey,'','X')
WONo = FIELD(WMOutKey,'*',1)
CassNo = FIELD(WMOutKey,'*',3)
WOStepKey = FIELD(WMOutKey,'*',1,2)
PSNo = XLATE('WO_STEP',WOStepKey,WO_STEP_PROD_SPEC_ID$,'X')
WOMatKey = WONo:'*':CassNo
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
PartNo = WOMatRec<WO_MAT_CUST_PART_NO$>
CustName = XLATE('WO_MAT',WOMatKey,'CUST_NAME','X')
SpecPostClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_POST_CLEAN', 'X' )
PostCode = WMOutRec<WM_OUT_POST_CODE$>
RxDTM = OCONV(WOMatRec<WO_MAT_REL_DTM$>,'DT4/^HS')
WfrsOut = XLATE('WM_OUT',WMOutKey,'WFRS_OUT','X')
Hold = WMOutRec<WM_OUT_HOLD$>
HoldDtms = WMOutRec<WM_OUT_HOLD_START_DTM$>
HoldStatus = ''
IF Hold = 1 THEN
IF PostCode NE 'External' THEN GOTO SkipWMOut ;*
HoldStatus = 'On Hold'
END ELSE
IF HoldDtms = '' THEN
HoldStatus = 'No'
END ELSE
HoldStatus = 'Off Hold'
END
END
LOCATE WOMatKey IN WOMatKeys BY 'AR' USING @VM SETTING Pos ELSE
WOMatKeys = INSERT(WOMatKeys,1,Pos,0,WOMatKey)
ReportLines = INSERT(ReportLines,COL$WMO_KEY,Pos,0,WOMatKey)
ReportLines = INSERT(ReportLines,COL$RDS_NO,Pos,0,'')
ReportLines = INSERT(ReportLines,COL$WO_STEP_PS_NO,Pos,0,PSNo)
ReportLines = INSERT(ReportLines,COL$CUST_NAME,Pos,0,CustName)
ReportLines = INSERT(ReportLines,COL$PART_NO,Pos,0,PartNo)
ReportLines = INSERT(ReportLines,COL$WO_STEP_POST_CLEAN,Pos,0,SpecPostClean)
ReportLines = INSERT(ReportLines,COL$POST_CLEAN,Pos,0,PostCode)
ReportLines = INSERT(ReportLines,COL$WO_STEP_WFRS_OUT,Pos,0,WfrsOut)
ReportLines = INSERT(ReportLines,COL$RX_DTM,Pos,0,RxDTM)
ReportLines = INSERT(ReportLines,COL$HOLD_STATUS,Pos,0,HoldStatus)
END
LoopCnt += 1
* * * * * *
SkipWMOut:
* * * * * *
WHILE Msg(@WINDOW, MsgUp, LoopCnt, MSGINSTUPDATE$)
NEXT I
DataArray<COL$WMO_KEY,-1> = ReportLines<COL$WMO_KEY>
DataArray<COL$RDS_NO,-1> = ReportLines<COL$RDS_NO>
DataArray<COL$WO_STEP_PS_NO,-1> = ReportLines<COL$WO_STEP_PS_NO>
DataArray<COL$CUST_NAME,-1> = ReportLines<COL$CUST_NAME>
DataArray<COL$PART_NO,-1> = ReportLines<COL$PART_NO>
DataArray<COL$WO_STEP_POST_CLEAN,-1> = ReportLines<COL$WO_STEP_POST_CLEAN>
DataArray<COL$POST_CLEAN,-1> = ReportLines<COL$POST_CLEAN>
DataArray<COL$WO_STEP_WFRS_OUT,-1> = ReportLines<COL$WO_STEP_WFRS_OUT>
DataArray<COL$RX_DTM,-1> = ReportLines<COL$RX_DTM>
DataArray<COL$HOLD_STATUS,-1> = ReportLines<COL$HOLD_STATUS>
Msg(@WINDOW,MsgUp)
xlApp = OleCreateInstance("excel.Application")
OlePutProperty(XlApp, 'Visible', xlSheetVisible)
if OleStatus() then Goto HadError
xlWorkBooks =OleGetProperty(xlApp, "Workbooks")
xlWkb = OleCallMethod(xlWorkbooks,"Add")
if OleStatus() then Goto HadError
xlSht = OleGetProperty(xlWkb, "Worksheets",1)
if OleStatus() then Goto HadError
LineCnt = COUNT(DataArray<1>,@VM) + (DataArray<1> NE '')
ColCnt = COUNT(DataArray,@FM) + (DataArray NE '')
FOR LineNo = 1 TO LineCnt
FOR Column = 1 to ColCnt
a = DataArray<LineNo,Column>
RangeColumn = eXcelCols<1,Column>
range = OleGetProperty( xlSht, 'Range',RangeColumn:LineNo)
OlePutProperty(range, 'Value', DataArray<Column,LineNo>)
IF OleStatus() THEN GOTO HadError
NEXT Column
NEXT LineCnt
*range = OleGetProperty( xlSht, 'Range','B1:':RangeColumn:'1')
*OlePutProperty( range, 'WrapText', xlTrue)
*IF OleStatus() THEN GOTO HadError
RangeColumn = eXcelCols<1,ColCnt>
range = OleGetProperty( xlSht, 'Range','A1:':RangeColumn:LineCnt)
Void = OleCallMethod( range, 'AutoFormat', xlRangeAutoFormatClassic1 )
* Void = OleCallMethod( xlWkb, 'SaveAs','C:\OIReports\CleansReport.CSV', xlCSVWindows )
Void = OleCallMethod( xlWkb, 'SaveAs',Environment_Services('GetReportsRootPath') : '\CleansReport.CSV', xlCSVWindows )
IF OleStatus() THEN GOTO HadError
RETURN
* * * * * * *
HadError:
* * * * * * *
xlChart = ''
Charts = ''
range = ''
xlSht = ''
xlWkb=''
xlWorkBooks = ''
x = OleCallMethod(xlApp, 'Quit')
RETURN
/* end of code */