added LSL2 stored procedures
This commit is contained in:
361
LSL2/STPROC/REPORT_POSTCLEANS.txt
Normal file
361
LSL2/STPROC/REPORT_POSTCLEANS.txt
Normal file
@ -0,0 +1,361 @@
|
||||
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 */
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user