refactored codebase to not rely on WO_LOG calculated column indexes

This commit is contained in:
Infineon\StieberD
2025-07-11 13:27:14 -07:00
parent b53e805929
commit 2a6c0afddf
23 changed files with 2697 additions and 39059 deletions

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "declare function set_printer, Get_Property\r\ndeclare subroutine record_lock, Set_Property\r\n$insert msg_equates\r\n$insert lsl_users_equ\r\n\r\n*Void = Set_Property('SYSTSEM','IDLEPROC','')\r\nVoid = Set_Property(@WINDOW,'TIMER','')\r\n\r\n\r\nUNLOCK All\r\n/*\r\nDEAD - 1/27/2005 JCH\r\n* will write out the x and y coords for the user, so the menu comes up at the last used\r\n* location\r\nWinSize = get_property( @window, 'SIZE' )\r\nX = WinSize<1>\r\nY = WinSize<2>\r\nXsize = WinSize<3>\r\nYsize = WinSize<4>\r\n\r\nIF @USERNAME = 'BRYCE_BARB' THEN DEBUG\r\n\r\nopen 'LSL_USERS' to LSLUsersTableVar else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'Unable to open LSL_USERS...'\r\n MsgInfo<mcol$> = -2\r\n MsgInfo<mrow$> = -2\r\n Void = msg( '', MsgInfo )\r\nend\r\n\r\nread UserRec from LSLUsersTableVar, @user4 then\r\n\t \r\n\t*UserRec = xlate( 'LSL_USERS', @user4, '', 'X' )\r\n\tUserRec<lsl_users_menu_xpos$> = X\r\n\tUserRec<lsl_users_menu_ypos$> = Y\r\n\tUserRec<lsl_users_menu_xsize$> = Xsize\r\n\tUserRec<lsl_users_menu_ysize$> = Ysize\r\n\twrite UserRec on LSLUsersTableVar, @user4 else Null\r\n\r\nEND;* End of User Rec Read\r\n*/\r\n\r\nRETURN 1\r\n"
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE FUNCTION Start_Window\r\n\r\nvoid = Start_Window('REACT_STATUS_EVEN',@WINDOW,'')\r\nvoid = Start_Window('REACT_STATUS_ODD',@WINDOW,'')\r\n\r\nvoid = Start_Window('TOOL_STATUS',@WINDOW,'')\r\n\r\n\r\nRETURN 1"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "declare subroutine forward_event\r\n\r\nforward_event( x, y, Width, Height )\r\n*.group_1->size = -10:@fm:-10:@fm:Width:@fm:Height\r\nRETURN 0"
}
}
}

View File

@ -1,11 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "\r\nDeclare subroutine Post_Event, Set_Property\r\n\r\n*If @User4 EQ 'ERIK_L' then Set_Property(@Window, '@CLOSE', 1)\r\n\r\nClose = Get_Property(@Window, '@CLOSE')\r\n\r\nCurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')\r\n\r\nOPEN 'SYSLISTS' TO ListsFile THEN\r\n\tStation = @STATION\r\n\tStation = Station[1,'_']\t\t\r\n\tListKey = Station:'*KEEP_ALIVE'\r\n\tListRec = @USERNAME:@FM:CurrDTM\r\n\tWRITE ListRec ON ListsFile,ListKey ELSE NULL\r\nEND \r\n\r\n\r\nRETURN 1"
}
}
}

View File

@ -1,402 +0,0 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "1010",
"<2>": "1",
"<3>": ""
},
"record2": {
"<1>": {
"<1,1>": "LSL_MAIN",
"<1,2>": "",
"<1,3>": "WINDOW",
"<1,4>": "",
"<1,5>": "147",
"<1,6>": "181",
"<1,7>": "-631",
"<1,8>": "-427",
"<1,9>": "Infineon Technologies",
"<1,10>": {
"<1,10,1>": "0x92C70000",
"<1,10,2>": "0x0"
},
"<1,11>": {
"<1,11,1>": "0x100",
"<1,11,2>": "0x80000000"
},
"<1,12>": "0",
"<1,13>": "-2",
"<1,14>": "0",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": {
"<1,24,1>": "0",
"<1,24,2>": "0",
"<1,24,3>": "0",
"<1,24,4>": "0",
"<1,24,5>": "0",
"<1,24,6>": "0"
},
"<1,25>": "0",
"<1,26>": "0",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": {
"<1,32,1>": "0x7FFFE",
"<1,32,2>": "0xF001E988"
},
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*DATASET",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
"<1,37,1>": "0x10001",
"<1,37,2>": "0x10001"
},
"<1,38>": {
"<1,38,1>": "1",
"<1,38,2>": "1"
},
"<1,39>": "",
"<1,40>": "0",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": ""
}
},
"record3": {
"<1>": {
"<1,1>": "MDICLIENT",
"<1,2>": "RTIMDICLIENT",
"<1,3>": "MDICLIENT",
"<1,4>": "LSL_MAIN",
"<1,5>": "3",
"<1,6>": "7",
"<1,7>": "-625",
"<1,8>": "-607",
"<1,9>": "",
"<1,10>": {
"<1,10,1>": "0x56B00000",
"<1,10,2>": "0x0"
},
"<1,11>": {
"<1,11,1>": "0xC000",
"<1,11,2>": "0x80000000"
},
"<1,12>": "1",
"<1,13>": "-2",
"<1,14>": "0",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": "",
"<1,25>": "0",
"<1,26>": "0",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": {
"<1,32,1>": "0x7fffc",
"<1,32,2>": "0xf001c808"
},
"<1,33>": "",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "",
"<1,37>": "",
"<1,38>": "",
"<1,39>": "",
"<1,40>": "1"
},
"<2>": ""
},
"record4": {
"<1>": {
"<1,1>": {
"<1,1,1>": "MENU",
"<1,1,2>": "4",
"<1,1,3>": "",
"<1,1,4>": "",
"<1,1,5>": "0",
"<1,1,6>": "0",
"<1,1,7>": "0",
"<1,1,8>": "0",
"<1,1,9>": "12",
"<1,1,10>": "",
"<1,1,11>": "0",
"<1,1,12>": ""
},
"<1,2>": {
"<1,2,1>": "POPUP",
"<1,2,2>": "1",
"<1,2,3>": "",
"<1,2,4>": "&File",
"<1,2,5>": "0",
"<1,2,6>": "0",
"<1,2,7>": "0",
"<1,2,8>": "0",
"<1,2,9>": "",
"<1,2,10>": "",
"<1,2,11>": "0",
"<1,2,12>": ""
},
"<1,3>": {
"<1,3,1>": "ITEM",
"<1,3,2>": "",
"<1,3,3>": "",
"<1,3,4>": "E&xit\tAlt+F4",
"<1,3,5>": "0",
"<1,3,6>": "0",
"<1,3,7>": "0",
"<1,3,8>": "1139",
"<1,3,9>": "",
"<1,3,10>": "",
"<1,3,11>": "0",
"<1,3,12>": ""
},
"<1,4>": {
"<1,4,1>": "POPUP",
"<1,4,2>": "2",
"<1,4,3>": "",
"<1,4,4>": "&DataWindows",
"<1,4,5>": "0",
"<1,4,6>": "0",
"<1,4,7>": "0",
"<1,4,8>": "0",
"<1,4,9>": "",
"<1,4,10>": "",
"<1,4,11>": "0",
"<1,4,12>": ""
},
"<1,5>": {
"<1,5,1>": "ITEM",
"<1,5,2>": "",
"<1,5,3>": "",
"<1,5,4>": "&Company",
"<1,5,5>": "0",
"<1,5,6>": "0",
"<1,5,7>": "0",
"<1,5,8>": "0",
"<1,5,9>": "",
"<1,5,10>": "",
"<1,5,11>": "0",
"<1,5,12>": ""
},
"<1,6>": {
"<1,6,1>": "ITEM",
"<1,6,2>": "",
"<1,6,3>": "",
"<1,6,4>": "&Personal Names",
"<1,6,5>": "0",
"<1,6,6>": "0",
"<1,6,7>": "0",
"<1,6,8>": "0",
"<1,6,9>": "",
"<1,6,10>": "",
"<1,6,11>": "0",
"<1,6,12>": ""
},
"<1,7>": {
"<1,7,1>": "POPUP",
"<1,7,2>": "2",
"<1,7,3>": "",
"<1,7,4>": "&Messages",
"<1,7,5>": "0",
"<1,7,6>": "0",
"<1,7,7>": "0",
"<1,7,8>": "0",
"<1,7,9>": "",
"<1,7,10>": "",
"<1,7,11>": "0",
"<1,7,12>": ""
},
"<1,8>": {
"<1,8,1>": "ITEM",
"<1,8,2>": "",
"<1,8,3>": "",
"<1,8,4>": "&New",
"<1,8,5>": "0",
"<1,8,6>": "0",
"<1,8,7>": "0",
"<1,8,8>": "0",
"<1,8,9>": "",
"<1,8,10>": "",
"<1,8,11>": "0",
"<1,8,12>": ""
},
"<1,9>": {
"<1,9,1>": "ITEM",
"<1,9,2>": "",
"<1,9,3>": "",
"<1,9,4>": "&Check/View",
"<1,9,5>": "0",
"<1,9,6>": "0",
"<1,9,7>": "0",
"<1,9,8>": "0",
"<1,9,9>": "",
"<1,9,10>": "",
"<1,9,11>": "0",
"<1,9,12>": ""
},
"<1,10>": {
"<1,10,1>": "POPUP",
"<1,10,2>": "2",
"<1,10,3>": "",
"<1,10,4>": "&Help",
"<1,10,5>": "0",
"<1,10,6>": "0",
"<1,10,7>": "0",
"<1,10,8>": "0",
"<1,10,9>": "",
"<1,10,10>": "",
"<1,10,11>": "0",
"<1,10,12>": ""
},
"<1,11>": {
"<1,11,1>": "ITEM",
"<1,11,2>": "",
"<1,11,3>": "",
"<1,11,4>": "&Help\tF1",
"<1,11,5>": "0",
"<1,11,6>": "0",
"<1,11,7>": "0",
"<1,11,8>": "112",
"<1,11,9>": "",
"<1,11,10>": "",
"<1,11,11>": "0",
"<1,11,12>": ""
},
"<1,12>": {
"<1,12,1>": "ITEM",
"<1,12,2>": "",
"<1,12,3>": "",
"<1,12,4>": "&About\tCtrl+F1",
"<1,12,5>": "0",
"<1,12,6>": "0",
"<1,12,7>": "0",
"<1,12,8>": "624",
"<1,12,9>": "",
"<1,12,10>": "",
"<1,12,11>": "0",
"<1,12,12>": ""
}
},
"<2>": {
"<2,1>": "",
"<2,2>": {
"<2,2,1>": {
"<2,2,1,1>": "E",
"<2,2,1,2>": "CLOSE",
"<2,2,1,3>": "@WINDOW",
"<2,2,1,4>": "",
"<2,2,1,5>": "",
"<2,2,1,6>": ""
},
"<2,2,2>": {
"<2,2,2,1>": "R",
"<2,2,2,2>": "EXECUTE",
"<2,2,2,3>": "LSL2*OIWINEXE**COMPANY",
"<2,2,2,4>": {
"<2,2,2,4,1>": "CreateParam",
"<2,2,2,4,2>": "LSL_MAIN"
},
"<2,2,2,5>": "",
"<2,2,2,6>": ""
},
"<2,2,3>": {
"<2,2,3,1>": "R",
"<2,2,3,2>": "EXECUTE",
"<2,2,3,3>": "LSL2*OIWINEXE**P_NAMES",
"<2,2,3,4>": {
"<2,2,3,4,1>": "CreateParam",
"<2,2,3,4,2>": "LSL_MAIN"
},
"<2,2,3,5>": "",
"<2,2,3,6>": ""
},
"<2,2,4>": {
"<2,2,4,1>": "R",
"<2,2,4,2>": "EXECUTE",
"<2,2,4,3>": "LSL2*OIWINEXE**NOTES",
"<2,2,4,4>": {
"<2,2,4,4,1>": "CreateParam",
"<2,2,4,4,2>": "LSL_MAIN"
},
"<2,2,4,5>": "",
"<2,2,4,6>": ""
},
"<2,2,5>": {
"<2,2,5,1>": "R",
"<2,2,5,2>": "EXECUTE",
"<2,2,5,3>": "LSL2*OIWINEXE**NOTE_PTRS",
"<2,2,5,4>": {
"<2,2,5,4,1>": "CreateParam",
"<2,2,5,4,2>": "LSL_MAIN"
},
"<2,2,5,5>": "",
"<2,2,5,6>": ""
},
"<2,2,6>": {
"<2,2,6,1>": "E",
"<2,2,6,2>": "HELP",
"<2,2,6,3>": "@FOCUS",
"<2,2,6,4>": "",
"<2,2,6,5>": "",
"<2,2,6,6>": ""
},
"<2,2,7>": {
"<2,2,7,1>": "E",
"<2,2,7,2>": "NOTES",
"<2,2,7,3>": "@FOCUS",
"<2,2,7,4>": "",
"<2,2,7,5>": "",
"<2,2,7,6>": ""
},
"<2,2,8>": ""
},
"<2,3>": {
"<2,3,1>": "FILE.EXIT",
"<2,3,2>": "DATAWINDOWS.COMPANY",
"<2,3,3>": "DATAWINDOWS.PERSONAL_NAMES",
"<2,3,4>": "MESSAGES.NEW",
"<2,3,5>": "MESSAGES.CHECK/VIEW",
"<2,3,6>": "HELP.HELP",
"<2,3,7>": "HELP.ABOUT",
"<2,3,8>": ""
},
"<2,4>": "0"
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@
"<2>": "-2",
"<3>": "-1",
"<4>": "-1",
"<5>": "16777215",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "MS Sans Serif",
@ -143,11 +143,21 @@
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "0",
"<31>": "1",
"<32>": "0",
"<33>": "0",
"<34>": "16777215",
"<35>": "16777215"
"<33>": "1",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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