added LSL2 stored procedures
This commit is contained in:
963
LSL2/STPROC/SAP_SERVICES.txt
Normal file
963
LSL2/STPROC/SAP_SERVICES.txt
Normal file
@ -0,0 +1,963 @@
|
||||
Function SAP_Services(@Service, @Params)
|
||||
/***********************************************************************************************************************
|
||||
|
||||
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
|
||||
permission from Infineon
|
||||
|
||||
Name : SAP_Services
|
||||
|
||||
Description : Handler program for all module related services.
|
||||
|
||||
Notes : The generic parameters should contain all the necessary information to process the services. Often
|
||||
this will be information like the data Record and Key ID.
|
||||
|
||||
Parameters :
|
||||
Service [in] -- Name of the service being requested
|
||||
Param1-10 [in/out] -- Additional request parameter holders
|
||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||
|
||||
Metadata :
|
||||
|
||||
History : (Date, Initials, Notes)
|
||||
08/08/17 dmb Original programmer. - [EPIOI-8]
|
||||
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
$insert APP_INSERTS
|
||||
$insert SERVICE_SETUP
|
||||
$insert WO_MAT_EQUATES
|
||||
$insert PROD_VER_EQUATES
|
||||
$insert WO_LOG_EQUATES
|
||||
$insert COMPANY_EQUATES
|
||||
$insert SEMI_VEND_CODE_EQUATES
|
||||
$insert WM_OUT_EQUATES
|
||||
$Insert SAP_MU_TRANS_EQUATES
|
||||
$Insert NOTIFICATION_EQUATES
|
||||
$Insert EPI_PART_EQUATES
|
||||
|
||||
Equ Comma$ to ','
|
||||
Equ new_exist$ To 0 ; * Reduce Mode 0
|
||||
Equ next_cur$ To 1
|
||||
Equ add_exist$ to 2
|
||||
|
||||
Declare subroutine Error_Services, SAP_Services, Memory_Services, RList, Database_Services, obj_SAP, Logging_Services
|
||||
Declare subroutine ErrLog, Obj_Notes, Set_Status, Obj_Tables, Obj_Post_Log, Mona_Services, Reduce
|
||||
Declare function SRP_Array, SAP_Services, Memory_Services, Database_Services, SRP_Sort_Array, Work_Order_Services
|
||||
Declare function SRP_Math, SRP_Hash, Obj_WO_Mat, Obj_Tables, GaN_Services, Environment_Services, Logging_Services
|
||||
Declare function Date_Services, SRP_Datetime
|
||||
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WM_OUT'
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Function call log.csv'
|
||||
Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'SAPBatchNo' : @FM : 'SAPTxDTM' : @FM : 'RejectCassFlag' : @FM : 'Call Stack'
|
||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
GoToService else
|
||||
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
|
||||
end
|
||||
|
||||
Return Response else ''
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Services
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// AddCassCompTransaction
|
||||
//
|
||||
// Add a CassComp transaction to the outbound SAP queue.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service AddCassCompTransaction(WOMatKey)
|
||||
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
SAPBatchNo = WOMatRec<WO_MAT_SAP_BATCH_NO$>
|
||||
SAPTxDTM = WOMatRec<WO_MAT_SAP_TX_DTM$>
|
||||
RejectCass = (SAPBatchNo[-1, 1] EQ 'R')
|
||||
|
||||
// Log the service call
|
||||
CallStack = RetStack()
|
||||
Swap @FM with CRLF$ in CallStack
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = LoggingDTM
|
||||
LogData<2> = WOMatKey
|
||||
LogData<3> = SAPBatchNo
|
||||
LogData<4> = SAPTxDTM
|
||||
LogData<5> = RejectCass
|
||||
LogData<6> = CRLF$:CallStack
|
||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||
|
||||
If ( ( (SAPBatchNo EQ '') and (SAPTxDTM EQ '') ) or ( (RejectCass EQ True$) and (SAPTxDTM EQ '') ) ) then
|
||||
WONo = WOMatKey[1,'*']
|
||||
CassNo = WOMatKey[COL2()+1,'*']
|
||||
ProdOrdNo = XLATE('WO_LOG', WONo, WO_LOG_PROD_ORD_NO$,'X')
|
||||
ReactorType = Xlate('WO_MAT', WOMatKey, 'REACTOR_TYPE', 'X')
|
||||
If ReactorType NE 'GAN' then
|
||||
GRProps = obj_WO_Mat('GetGRProps',WOMatKey:@RM:WOMatRec)
|
||||
end else
|
||||
GRProps = GaN_Services('GetGaNGRProps', WOMatKey)
|
||||
end
|
||||
|
||||
GRWfrQty = GRProps[1,@FM]
|
||||
ScrapQty = GRProps[COL2()+1,@FM]
|
||||
ProdTWQty = GRProps[COL2()+1,@FM]
|
||||
AvailMUWfrQty = GRProps[COL2()+1,@FM]
|
||||
MUCassIDs = GRProps[COL2()+1,@FM]
|
||||
MUCassQtys = GRProps[COL2()+1,@FM]
|
||||
//Gets the First MU Cass. Used
|
||||
MUCassID = FIELD(MUCassIDs,@VM,1)
|
||||
MUCassQty = FIELD(MUCassQtys,@VM,1)
|
||||
MUBatchNo = XLATE('WO_MAT', MUCassID, WO_MAT_SAP_BATCH_NO$, 'X')
|
||||
//Gets all remaining MU Cass. Used
|
||||
UnTransCassIDs = FIELD(MUCassIds, @VM, 1, 25)
|
||||
UnTransCassQtys = FIELD(MUCassQtys, @VM, 1, 25)
|
||||
|
||||
IF UnTransCassIDs NE '' THEN
|
||||
//Writes them to the SAP_MU_TRANS_TABLE
|
||||
otParms = 'SAP_MU_TRANS':@RM ;* TableName
|
||||
otParms := WONo:'*':CassNo:@RM ;* TableKey
|
||||
otParms := @RM ;* TableVar
|
||||
otParms := UntransCassIDs:@FM:UntransCassQtys ;* TableRecord
|
||||
|
||||
obj_Tables('WriteRec', otParms)
|
||||
END
|
||||
|
||||
SupplierLotNo = WOMatRec<WO_MAT_LOT_NO$>
|
||||
|
||||
IF WOMatRec<WO_MAT_WMO_KEY$> = '' THEN
|
||||
CassID = WOMatRec<WO_MAT_RDS_NO$>[-1,'B':@VM]
|
||||
MakeupFlag = WOMatRec<WO_MAT_MAKEUP_BOX$>
|
||||
|
||||
END ELSE
|
||||
CassID = WOMatKey ;* WOMat Key used for WM_OUT as of 2/17/2012 JCH
|
||||
CONVERT '*' TO '.' IN CassID
|
||||
MakeupFlag = XLATE('WM_OUT', WOMatRec<WO_MAT_WMO_KEY$>, WM_OUT_MAKEUP_BOX$, 'X')
|
||||
END
|
||||
IF MakeupFlag = '' THEN MakeupFlag = 0
|
||||
IF MakeupFlag = 1 THEN GRWfrQty = AvailMUWfrQty
|
||||
IF MUBatchNo NE '' THEN
|
||||
IF MakeupFlag = 0 THEN
|
||||
MakeupFlag = '-'
|
||||
END ELSE
|
||||
MakeupFlag = 2
|
||||
END
|
||||
END
|
||||
|
||||
ProdVerRec = XLATE('PROD_VER', WOMatRec<WO_MAT_PROD_VER_NO$>, '', 'X')
|
||||
CustNo = ProdVerRec<PROD_VER_CUST_NO$>
|
||||
VendCd = XLATE('COMPANY', CustNo, COMPANY_VEND_CD$, 'X')
|
||||
SubPartNo = ProdVerRec<PROD_VER_SUB_PART_NO$>
|
||||
|
||||
IF VendCd NE '' THEN
|
||||
SubSuppCd = VendCd
|
||||
END ELSE
|
||||
IF SubPartNo MATCHES "6N'-'1A'-'2A" THEN
|
||||
SubSuppCd = FIELD(SubPartNo,'-',3)
|
||||
END ELSE
|
||||
SubSuppCd = WOMatRec<WO_MAT_SUB_VEND_CD$>
|
||||
SubSuppCd = XLATE('SEMI_VEND_CODE',SubSuppCd,SEMI_VEND_CODE_EPI_VEND_CD$,'X')
|
||||
END
|
||||
END
|
||||
|
||||
CustPartRev = ProdVerRec<PROD_VER_CUST_PART_REV$>
|
||||
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS'),'DT')
|
||||
* Getting Records with the DTM missing
|
||||
If CurrDTM = '' Then
|
||||
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS'),'DT')
|
||||
END
|
||||
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
If Error_Services('NoError') then
|
||||
WOMatRec<WO_MAT_SAP_TX_DTM$> = CurrDTM
|
||||
Database_Services('WriteDataRow', 'WO_MAT', WOmatKey, WOMatRec, True$, False$, True$)
|
||||
end
|
||||
|
||||
* Section for Local generation of SAP_BATCH_NO removed 8/10/2011 JCH
|
||||
atParms = 'CASS_COMP':@RM
|
||||
atParms := ProdOrdNo:@RM
|
||||
atParms := WONo:@RM
|
||||
atParms := CassNo:@RM
|
||||
atParms := GRWfrQty:@RM
|
||||
atParms := ScrapQty:@RM
|
||||
atParms := ProdTWQty:@RM
|
||||
atParms := CassID:@RM
|
||||
atParms := SupplierLotNo:@RM
|
||||
atParms := SubSuppCd:@RM
|
||||
atParms := CustPartRev:@RM
|
||||
atParms := MakeupFlag
|
||||
//atParms := MUBatchNo:@RM
|
||||
//atParms := MUCassQty
|
||||
|
||||
Copy = atParms
|
||||
Swap @RM with @FM in Copy
|
||||
|
||||
obj_SAP('AddTransaction', atParms)
|
||||
end else
|
||||
Error_Services('Add', 'SAP Batch No already exists for this lot.')
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetInboundPending
|
||||
//
|
||||
// Calculates and stores the current inbound pending count for SAP.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetInboundPending()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
|
||||
rv = Set_Status(0)
|
||||
LookBack = 15 /* Days */
|
||||
|
||||
KeyList = SAP_Services('GetInboundWOMatKeys', Date() - Lookback)
|
||||
|
||||
RowCount = DCount(KeyList, @FM)
|
||||
StatusCode = ''
|
||||
If Get_Status(StatusCode) Then
|
||||
Null
|
||||
end else
|
||||
OutboundPending = SAP_Services('GetOutboundPending')
|
||||
InboundPending = RowCount - OutboundPending
|
||||
If InboundPending < 0 then InboundPending = 0
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'INBOUND_PENDING', InboundPending, True$)
|
||||
Mona_Services('SendMetric', 'GRP_OPENINSIGHT_MES_OP_FE_SAP_INBOUND', 'InboundPending', InboundPending)
|
||||
end
|
||||
ClearSelect 0
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetInboundPending
|
||||
//
|
||||
// Gets the current inbound pending count for SAP.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetInboundPending()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
InboundPending = Database_Services('ReadDataRow', 'APP_INFO', 'INBOUND_PENDING')
|
||||
Response = InboundPending
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// MonitorSAPOutboundQueue
|
||||
//
|
||||
// Monitor each SAP outbound transactions pending and report the current outbound pending count for MonA
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service MonitorSAPOutboundQueue()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
hSAPComm = Database_Services('GetTableHandle', 'SAP_COMM')
|
||||
If Error_Services('NoError') then
|
||||
rv = Set_Status(0)
|
||||
SelectStatement = 'SELECT SAP_COMM'
|
||||
RList(SelectStatement, 5)
|
||||
If Get_Status(StatusCode) Then
|
||||
Null
|
||||
end else
|
||||
OutboundPendingScrapIn = 0
|
||||
OutboundPendingInventoryMove = 0
|
||||
OutboundPendingCassetteComplete = 0
|
||||
OutboundPendingLotOnHold = 0
|
||||
OutboundPendingLotOffHold = 0
|
||||
OutboundPendingWorkOrderStart = 0
|
||||
EOF = False$
|
||||
Loop
|
||||
Readnext SAPCommID else EOF = True$
|
||||
Until EOF
|
||||
Read SAPCommRow from hSAPComm, SAPCommID then
|
||||
TransactionType = SAPCommRow<1>
|
||||
Begin Case
|
||||
Case TransactionType _EQC 'SCRAP_IN'
|
||||
OutboundPendingScrapIn += 1
|
||||
Case TransactionType _EQC 'BATCHMOVE_IN'
|
||||
OutboundPendingInventoryMove += 1
|
||||
Case TransactionType _EQC 'CASS_COMP'
|
||||
OutboundPendingCassetteComplete += 1
|
||||
Case TransactionType _EQC 'ON_HOLD'
|
||||
OutboundPendingLotOnHold += 1
|
||||
Case TransactionType _EQC 'OFF_HOLD'
|
||||
OutboundPendingLotOffHold += 1
|
||||
Case TransactionType _EQC 'WO_START'
|
||||
OutboundPendingWorkOrderStart += 1
|
||||
End Case
|
||||
end
|
||||
Repeat
|
||||
// Output to MonA
|
||||
OSFile = 'SCRAP_IN: ' : OutboundPendingScrapIn :CRLF$
|
||||
OSFile := 'BATCHMOVE_IN: ' : OutboundPendingInventoryMove :CRLF$
|
||||
OSFile := 'CASS_COMP: ' : OutboundPendingCassetteComplete :CRLF$
|
||||
OSFile := 'ON_HOLD: ' : OutboundPendingLotOnHold :CRLF$
|
||||
OSFile := 'OFF_HOLD: ' : OutboundPendingLotOffHold :CRLF$
|
||||
OSFile := 'WO_START: ' : OutboundPendingWorkOrderStart
|
||||
OSWrite OSFile to Environment_Services('GetApplicationRootPath') : '\LogFiles\SAP Outbound Service\Queue.txt'
|
||||
end
|
||||
end
|
||||
ClearSelect 0
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetOutboundPending
|
||||
//
|
||||
// Calculates and stores the current outbound pending count for SAP.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetOutboundPending()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
hSAPComm = Database_Services('GetTableHandle', 'SAP_COMM')
|
||||
If Error_Services('NoError') then
|
||||
rv = Set_Status(0)
|
||||
SelectStatement = 'SELECT SAP_COMM'
|
||||
RList(SelectStatement, 5)
|
||||
If Get_Status(StatusCode) Then
|
||||
Null
|
||||
end else
|
||||
OutboundPending = 0
|
||||
EOF = False$
|
||||
Loop
|
||||
Readnext SAPCommID else EOF = True$
|
||||
Until EOF
|
||||
Read SAPCommRow from hSAPComm, SAPCommID then
|
||||
TransactionType = SAPCommRow<1>
|
||||
If TransactionType _EQC 'CASS_COMP' then
|
||||
OutboundPending += 1
|
||||
end
|
||||
end
|
||||
Repeat
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'OUTBOUND_PENDING', OutboundPending, True$)
|
||||
Mona_Services('SendMetric', 'GRP_OPENINSIGHT_MES_OP_FE_SAP_OUTBOUND', 'OutboundPending', OutboundPending)
|
||||
end
|
||||
end
|
||||
ClearSelect 0
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetOutboundPending
|
||||
//
|
||||
// Gets the current outbound pending count for SAP.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetOutboundPending()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
OutboundPending = Database_Services('ReadDataRow', 'APP_INFO', 'OUTBOUND_PENDING')
|
||||
Response = OutboundPending
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetInboundTransactions
|
||||
//
|
||||
// Gets the incoming SAP transactions and processes them.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetInboundTransactions()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
SAPHoldStartDateTime = SAP_Services('GetSAPHoldStartDateTime')
|
||||
SAPHoldStopDateTime = SAP_Services('GetSAPHoldStopDateTime')
|
||||
If (SAPHoldStartDateTime NE '') AND (SAPHoldStopDateTime NE '') AND (SAPHoldStopDateTime GT SAPHoldStartDateTime) then
|
||||
CurrentDateTime = Iconv(Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS'), 'DT')
|
||||
If (CurrentDateTime GT SAPHoldStartDateTime) AND (CurrentDateTime LT SAPHoldStopDateTime) then
|
||||
SAP_Services('SetSAPOutageFlag', 1)
|
||||
end else
|
||||
SAP_Services('SetSAPOutageFlag', 0)
|
||||
end
|
||||
end else
|
||||
SAP_Services('SetSAPOutageFlag', 0)
|
||||
end
|
||||
|
||||
SAPOutage = SAP_Services('GetSAPOutageFlag')
|
||||
If Not(SAPOutage) then
|
||||
TransLogOn = SAP_Services('GetTransactionLoggingFlag')
|
||||
obj_SAP('GetInbound', TransLogOn)
|
||||
If Get_Status(errCode) then
|
||||
ErrLog(errCode) ;* ErrLog clears status
|
||||
Recipients = Xlate('NOTIFICATION','SAP_COMM',NOTIFICATION_USER_ID$,'X')
|
||||
SentFrom = 'SAP Comm Server'
|
||||
Subject = 'SAP Communications Server Errors'
|
||||
Message = "Communications Errors logged during 'Get_Inbound' on the SAP Communications Server"
|
||||
AttachWindow = ''
|
||||
AttachKey = ''
|
||||
SendToGroup = ''
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create',Parms)
|
||||
If Get_Status(errCode) then ErrLog(errCode)
|
||||
end
|
||||
end
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SendOutboundTransactions
|
||||
//
|
||||
// Sends transactions to the SAP system.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SendOutboundTransactions()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
|
||||
SAPHoldStartDateTime = SAP_Services('GetSAPHoldStartDateTime')
|
||||
SAPHoldStopDateTime = SAP_Services('GetSAPHoldStopDateTime')
|
||||
If (SAPHoldStartDateTime NE '') AND (SAPHoldStopDateTime NE '') AND (SAPHoldStopDateTime GT SAPHoldStartDateTime) then
|
||||
CurrentDateTime = Iconv(Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTS'), 'DT')
|
||||
If (CurrentDateTime GT SAPHoldStartDateTime) AND (CurrentDateTime LT SAPHoldStopDateTime) then
|
||||
SAP_Services('SetSAPOutageFlag', 1)
|
||||
end else
|
||||
SAP_Services('SetSAPOutageFlag', 0)
|
||||
end
|
||||
end else
|
||||
SAP_Services('SetSAPOutageFlag', 0)
|
||||
end
|
||||
|
||||
SAPOutage = SAP_Services('GetSAPOutageFlag')
|
||||
If Not(SAPOutage) then
|
||||
TransLogOn = SAP_Services('GetTransactionLoggingFlag')
|
||||
TransQty = SAP_Services('GetSAPTransactionLimit')
|
||||
obj_SAP('SendOutbound',TransLogOn:@RM:TransQty) ;* Transmit transactions to the SAP system
|
||||
If Get_Status(errCode) then
|
||||
ErrLog(errCode) ;* ErrLog clears status
|
||||
Recipients = Xlate('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X')
|
||||
SentFrom = 'SAP Comm Server'
|
||||
Subject = 'SAP Communications Server Errors'
|
||||
Message = "Communications Errors logged during 'SendOutbound' on the SAP Communications Server"
|
||||
AttachWindow = ''
|
||||
AttachKey = ''
|
||||
SendToGroup = ''
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create', Parms)
|
||||
If Get_Status(errCode) then ErrLog(errCode)
|
||||
end
|
||||
end
|
||||
DateTimeStamp = Oconv(Date(), 'D4/') : ' ' : Oconv(Time(), 'MTHS')
|
||||
OSWrite DateTimeStamp to Environment_Services('GetApplicationRootPath') : '\LogFiles\SAP Outbound Service\Heartbeat.txt'
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SendReconcile
|
||||
//
|
||||
// Sends reconcile transactions to the SAP system.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SendReconcile()
|
||||
|
||||
obj_SAP('SendReconcile')
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetTransactionLoggingFlag
|
||||
//
|
||||
// Sets the transaction logging flag for SAP transactions.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetTransactionLoggingFlag(TransactionLoggingFlag)
|
||||
|
||||
If TransactionLoggingFlag NE '' then
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'TRANSACTION_LOGGING_FLAG', TransactionLoggingFlag)
|
||||
end else
|
||||
Error_Services('Add', 'TransactionLoggingFlag argument was missing in the ' : Service : '. service.')
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetTransactionLoggingFlag
|
||||
//
|
||||
// Gets the transaction logging flag for SAP transactions.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetTransactionLoggingFlag()
|
||||
|
||||
TransactionLoggingFlag = Database_Services('ReadDataRow', 'APP_INFO', 'TRANSACTION_LOGGING_FLAG')
|
||||
Response = TransactionLoggingFlag
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetSAPOutageFlag
|
||||
//
|
||||
// Sets the SAP outage flag.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetSAPOutageFlag(SAPOutageFlag)
|
||||
|
||||
If SAPOutageFlag NE '' then
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'SAP_OUTAGE_FLAG', SAPOutageFlag)
|
||||
end else
|
||||
Error_Services('Add', 'SAPOutageFlag argument was missing in the ' : Service : '. service.')
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetSAPOutageFlag
|
||||
//
|
||||
// Gets the SAP outage flag.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetSAPOutageFlag()
|
||||
|
||||
SAPOutageFlag = Database_Services('ReadDataRow', 'APP_INFO', 'SAP_OUTAGE_FLAG')
|
||||
Response = SAPOutageFlag
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetSAPTransactionLimit
|
||||
//
|
||||
// Sets the SAP transaction limit.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetSAPTransactionLimit(SAPTransactionLimit)
|
||||
|
||||
If SAPTransactionLimit NE '' then
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'SAP_TRANSACTION_LIMIT', SAPTransactionLimit)
|
||||
end else
|
||||
Error_Services('Add', 'SAPTransactionLimit argument was missing in the ' : Service : '. service.')
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetSAPTransactionLimit
|
||||
//
|
||||
// Gets the SAP transaction limit.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetSAPTransactionLimit()
|
||||
|
||||
SAPTransactionLimit = Database_Services('ReadDataRow', 'APP_INFO', 'SAP_TRANSACTION_LIMIT')
|
||||
Response = SAPTransactionLimit
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetSAPHoldStartDateTime
|
||||
//
|
||||
// Sets the SAP hold start date and time.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetSAPHoldStartDateTime(SAPHoldStartDateTime)
|
||||
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'SAP_HOLD_START_DATE_TIME', SAPHoldStartDateTime)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetSAPHoldStartDateTime
|
||||
//
|
||||
// Gets the SAP hold start date and time.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetSAPHoldStartDateTime()
|
||||
|
||||
SAPHoldStartDateTime = Database_Services('ReadDataRow', 'APP_INFO', 'SAP_HOLD_START_DATE_TIME')
|
||||
Response = SAPHoldStartDateTime
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// SetSAPHoldStopDateTime
|
||||
//
|
||||
// Sets the SAP hold stop date and time.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service SetSAPHoldStopDateTime(SAPHoldStopDateTime)
|
||||
|
||||
Database_Services('WriteDataRow', 'APP_INFO', 'SAP_HOLD_STOP_DATE_TIME', SAPHoldStopDateTime)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// GetSAPHoldStopDateTime
|
||||
//
|
||||
// Gets the SAP hold stop date and time.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service GetSAPHoldStopDateTime()
|
||||
|
||||
SAPHoldStopDateTime = Database_Services('ReadDataRow', 'APP_INFO', 'SAP_HOLD_STOP_DATE_TIME')
|
||||
Response = SAPHoldStopDateTime
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service PrintSpectrumLabel(WONo,StepNo,CassNo)
|
||||
|
||||
EQU SIK_FIXED_DATA$ To 1
|
||||
EQU SIK_P_BNR$ TO 2
|
||||
EQU SIK_GRVP$ TO 3
|
||||
EQU SIK_I_GRVP$ TO 4
|
||||
EQU SIK_M_QUANTITY$ TO 5
|
||||
EQU SIK_M_QUANTITY1$ TO 6
|
||||
EQU SIK_M_LOTNO$ TO 7
|
||||
EQU SIK_DATECODE$ TO 8
|
||||
EQU SIK_LOTCOUNT$ TO 9
|
||||
EQU SIK_SERIALNO$ TO 10
|
||||
EQU SIK_M_CODE$ TO 11
|
||||
EQU SIK_M_COA$ TO 12
|
||||
EQU SIK_P_TEXT2_3$ TO 13
|
||||
EQU SIK_P_SALES_PRODUCT$ TO 14
|
||||
EQU SIK_BLANK_LINE$ TO 15
|
||||
EQU SIK_FIXED_DATA_2$ TO 16
|
||||
EQU SIK_LABEL_ID$ TO 17
|
||||
EQU SIK_PRT_PORT$ TO 18
|
||||
If WONo NE '' AND CassNo NE '' then
|
||||
WoMatKey = WONo : '*' : CassNo
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
|
||||
SAPBatchNo = WOMatRec<WO_MAT_SAP_BATCH_NO$>
|
||||
IF SAPBatchNo NE '' then
|
||||
WOLogKey = WONo
|
||||
EpiPartNo = XLATE('WO_LOG', WOLogKey, WO_LOG_EPI_PART_NO$, 'X')
|
||||
ZPVMMatNum = XLATE('EPI_PART', EpiPartNo, EPI_PART_VARM_PART_NO$, 'X')
|
||||
ZPVMPartDesc = XLATE('EPI_PART', EpiPartNo, EPI_PART_EPI_PART_DESC$ , 'X')
|
||||
SAPYieldQty = XLATE('WO_MAT', WoMatKey, 'SAP_YIELD', 'X')
|
||||
ShipDate = XLATE('WO_MAT', WoMatKey, WO_MAT_SAP_TX_DTM$, 'X')
|
||||
ShipYear = SRP_Datetime('Year', ShipDate)
|
||||
ShipYear = ShipYear[3,4]
|
||||
ShipWW = Date_Services('GetWeekNum', ShipDate)
|
||||
ShipDtCd = ShipYear : ShipWW
|
||||
SpectrumFileName = SAPBatchNo : '.sik'
|
||||
SpectrumDirectory = XLATE('APP_INFO', 'SPECTRUM_FILE_PATH', 1, 'X')
|
||||
SpectrumExportPath = SpectrumDirectory : SpectrumFileName
|
||||
|
||||
SikData = ''
|
||||
SikData<SIK_FIXED_DATA$> = 'POKE EBSOFTLD.SYSTEM POOL'
|
||||
SikData<SIK_P_BNR$> = 'P_BNR' : Tab$ : ZPVMMatNum
|
||||
SikData<SIK_GRVP$> = 'GRVP' : Tab$ : 1; *Default
|
||||
SikData<SIK_I_GRVP$> = 'I_GRVP' : Tab$ : 25; *Default
|
||||
SikData<SIK_M_QUANTITY$> = 'M_QUANTITY' : Tab$ : SAPYieldQty
|
||||
SikData<SIK_M_QUANTITY1$> = 'M_QUANTITY1' : Tab$ : SAPYieldQty
|
||||
SikData<SIK_M_LOTNO$> = 'M_LOTNO' : Tab$ : SAPBatchNo
|
||||
SikData<SIK_DATECODE$> = 'M_DATECODE' : Tab$ : ShipDtCd; *Need to send a datecode in format of YYWW, so need to find a way to generate a correct work week. Something already exists I'm sure
|
||||
SikData<SIK_LOTCOUNT$> = 'LOTCOUNT' : Tab$ : 1; *Default
|
||||
SikData<SIK_SERIALNO$> = 'SERIALNO' : Tab$ : 00001; *Default
|
||||
SikData<SIK_M_CODE$> = 'M_COD' : Tab$ : 'US'; *Default
|
||||
SikData<SIK_M_COA$> = 'M_COA' : Tab$ : ''
|
||||
SikData<SIK_P_TEXT2_3$> = 'P_TEXT2_3' : Tab$ : ZPVMPartDesc;
|
||||
SikData<SIK_P_SALES_PRODUCT$> = 'P_SALES_PRODUCT' : Tab$ : ZPVMPartDesc;
|
||||
SikData<SIK_BLANK_LINE$> = '';*Intentionally left blank. Example file has a blank line here.
|
||||
SikData<SIK_FIXED_DATA_2$> = 'EXECUTE EBSOFTLD.SYSTEM PRINT'
|
||||
SikData<SIK_LABEL_ID$> = 'LABEL_ID' : Tab$ : 'BPL_CYSC'; *Default
|
||||
SikData<SIK_PRT_PORT$> = 'PRT_PORT' : Tab$ : 'AUCPL01SMALLLABEL'; *This is the printer. This will change once a permanent printer is assigned to us.
|
||||
swap @FM with CRLF$ in SikData
|
||||
OSWrite SikData to SpectrumExportPath
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. SAP Batch number for WOMat Record ' : WoMatKey : ' does not exist.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end else
|
||||
ErrorMsg = 'Error in ':Service:' service. WO No or Cass No not provided.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// ProcessOutboundHolds
|
||||
//
|
||||
// Checks to see if SAP transactions are ready to transmit. This is currently used when an SAP batch number is not yet
|
||||
// assigned to a work order when the outbound SAP transaction is created.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service ProcessOutboundHolds()
|
||||
|
||||
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
||||
Lock hSysLists, ServiceKeyID then
|
||||
hSAPHold = Database_Services('GetTableHandle', 'SAP_HOLD')
|
||||
If Error_Services('NoError') then
|
||||
rv = Set_Status(0)
|
||||
SelectStatement = 'SELECT SAP_HOLD BY TRANS_DTM'
|
||||
RList(SelectStatement, 5)
|
||||
If Get_Status(StatusCode) Then
|
||||
Null
|
||||
end else
|
||||
EOF = False$
|
||||
Loop
|
||||
Readnext SAPHoldID else EOF = True$
|
||||
Until EOF
|
||||
Read SAPHoldRow from hSAPHold, SAPHoldID then
|
||||
WOMatKey = SAPHoldRow<2>
|
||||
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
|
||||
If SAPBatchNo NE '' then
|
||||
TransAction = SAPHoldRow<1>
|
||||
Sloc = SAPHoldRow<3>
|
||||
NewMatHoldFlag = SAPHoldRow<4>
|
||||
Set_Status(0)
|
||||
obj_SAP('AddTransaction',TransAction:@RM:SAPBatchNo:@RM:Sloc:@RM:NewMatHoldFlag)
|
||||
ErrorCode = ''
|
||||
If Get_Status(ErrorCode) then
|
||||
ErrorMsg = 'Error calling Obj_SAP in the ':Service:' service. Error code: ':ErrorCode
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end else
|
||||
Delete hSAPHold, SAPHoldID else
|
||||
ErrorMsg = 'Error deleting SAPHold: ':SAPHoldID:' in the ':Service' service.'
|
||||
Error_Services('Add', ErrorMsg)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Repeat
|
||||
end
|
||||
end
|
||||
ClearSelect 0
|
||||
Unlock hSysLists, ServiceKeyID else Null
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// RetransmitCassComp
|
||||
//
|
||||
// Input:
|
||||
// WOMatKey - [Required]
|
||||
//
|
||||
// Retransmits CASS_COMP transactions to SAP. This can be used in the event that a CASS_COMP transaction failed to post
|
||||
// to SAP.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service RetransmitCassComp(WOMatKey)
|
||||
|
||||
WONo = WOMatKey[1,'*']
|
||||
CassNo = WOMatKey[COL2()+1,'*']
|
||||
|
||||
ProdOrdNo = XLATE('WO_LOG', WONo, WO_LOG_PROD_ORD_NO$, 'X')
|
||||
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
|
||||
|
||||
GRProps = obj_WO_Mat('GetGRProps',WOMatKey:@RM:WOMatRec)
|
||||
|
||||
GRWfrQty = GRProps[1,@FM]
|
||||
ScrapQty = GRProps[COL2()+1,@FM]
|
||||
ProdTWQty = GRProps[COL2()+1,@FM]
|
||||
AvailMUWfrQty = GRProps[COL2()+1,@FM]
|
||||
MUCassIDs = GRProps[COL2()+1,@FM]
|
||||
MUCassQtys = GRProps[COL2()+1,@FM]
|
||||
|
||||
MUCassID = FIELD(MUCassIDs,@VM,1)
|
||||
MUCassQty = FIELD(MUCassQtys,@VM,1)
|
||||
MUBatchNo = XLATE('WO_MAT',MUCassID,WO_MAT_SAP_BATCH_NO$,'X')
|
||||
|
||||
UnTransCassIDs = FIELD(MUCassIds,@VM,2,25)
|
||||
UnTransCassQtys = FIELD(MUCassQtys,@VM,2,25)
|
||||
|
||||
IF UnTransCassIDs NE '' THEN
|
||||
|
||||
otParms = 'SAP_MU_TRANS':@RM ;* TableName
|
||||
otParms := WONo:'*':CassNo:@RM ;* TableKey
|
||||
otParms := @RM ;* TableVar
|
||||
otParms := UntransCassIDs:@FM:UntransCassQtys ;* TableRecord
|
||||
|
||||
obj_Tables('WriteRec',otParms)
|
||||
END
|
||||
|
||||
SupplierLotNo = WOMatRec<WO_MAT_LOT_NO$>
|
||||
|
||||
IF WOMatRec<WO_MAT_WMO_KEY$> = '' THEN
|
||||
CassID = WOMatRec<WO_MAT_RDS_NO$>[-1,'B':@VM]
|
||||
MakeupFlag = WOMatRec<WO_MAT_MAKEUP_BOX$>
|
||||
|
||||
END ELSE
|
||||
CassID = WOMatKey ;* WOMat Key used for WM_OUT as of 2/17/2012 JCH
|
||||
|
||||
CONVERT '*' TO '.' IN CassID
|
||||
|
||||
MakeupFlag = XLATE('WM_OUT',WOMatRec<WO_MAT_WMO_KEY$>,WM_OUT_MAKEUP_BOX$,'X')
|
||||
END
|
||||
|
||||
IF MakeupFlag = '' THEN MakeupFlag = 0
|
||||
|
||||
IF MakeupFlag = 1 THEN GRWfrQty = AvailMUWfrQty
|
||||
|
||||
IF MUBatchNo NE '' THEN
|
||||
IF MakeupFlag = 0 THEN
|
||||
MakeupFlag = '-'
|
||||
END ELSE
|
||||
MakeupFlag = 2
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
ProdVerRec = XLATE('PROD_VER',WOMatRec<WO_MAT_PROD_VER_NO$>,'','X')
|
||||
CustNo = ProdVerRec<PROD_VER_CUST_NO$>
|
||||
|
||||
VendCd = XLATE('COMPANY',CustNo,COMPANY_VEND_CD$,'X')
|
||||
|
||||
SubPartNo = ProdVerRec<PROD_VER_SUB_PART_NO$>
|
||||
|
||||
IF VendCd NE '' THEN
|
||||
SubSuppCd = VendCd
|
||||
END ELSE
|
||||
IF SubPartNo MATCHES "6N'-'1A'-'2A" THEN
|
||||
SubSuppCd = FIELD(SubPartNo,'-',3)
|
||||
END ELSE
|
||||
SubSuppCd = WOMatRec<WO_MAT_SUB_VEND_CD$>
|
||||
SubSuppCd = XLATE('SEMI_VEND_CODE',SubSuppCd,SEMI_VEND_CODE_EPI_VEND_CD$,'X')
|
||||
END
|
||||
END
|
||||
|
||||
CustPartRev = ProdVerRec<PROD_VER_CUST_PART_REV$>
|
||||
|
||||
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS'),'DT')
|
||||
|
||||
* Getting Records with the DTM missing
|
||||
|
||||
If CurrDTM = '' Then
|
||||
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTHS'),'DT')
|
||||
END
|
||||
|
||||
oPLParms = 'WO_MAT':@RM
|
||||
oPLParms := WOMatKey:@RM
|
||||
oPLParms := WO_MAT_SAP_TX_DTM$:@RM
|
||||
oPLParms := CurrDTM
|
||||
|
||||
obj_Post_Log('Create',oPLParms)
|
||||
|
||||
* Section for Local generation of SAP_BATCH_NO removed 8/10/2011 JCH
|
||||
|
||||
atParms = 'CASS_COMP':@RM
|
||||
atParms := ProdOrdNo:@RM
|
||||
atParms := WONo:@RM
|
||||
atParms := CassNo:@RM
|
||||
atParms := GRWfrQty:@RM
|
||||
atParms := ScrapQty:@RM
|
||||
atParms := ProdTWQty:@RM
|
||||
atParms := CassID:@RM
|
||||
atParms := SupplierLotNo:@RM
|
||||
atParms := SubSuppCd:@RM
|
||||
atParms := CustPartRev:@RM
|
||||
atParms := MakeupFlag:@RM
|
||||
atParms := MUBatchNo:@RM
|
||||
atParms := MUCassQty
|
||||
|
||||
obj_SAP('AddTransaction',atParms)
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service SendUnTransMU(WOMatKey, BatchNo, MUBox)
|
||||
|
||||
//First: Get a list of untransacted MU wafers
|
||||
UnTransRec = Database_Services('ReadDataRow', 'SAP_MU_TRANS', WOMatKey)
|
||||
If UnTransRec<1> NE '' then
|
||||
for each MUCass in UnTransRec<SAP_MU_TRANS_MU_CASS_ID$> using @VM setting mPos
|
||||
WONo = Field(WOMatKey, '*', 1)
|
||||
Material = Xlate('WO_LOG', WONo, 'EPI_PART_NO', 'X')
|
||||
BatchFrom = Xlate('WO_MAT', MUCass, 'SAP_BATCH_NO', 'X')
|
||||
BatchTo = BatchNo
|
||||
MakeupBox = MUBox
|
||||
TransQty = UnTransRec<SAP_MU_TRANS_MU_CASS_QTY$, mPos>
|
||||
If MakeupBox EQ True$ then
|
||||
// Current box is a makeup box and new box is a makeup box. We want to update
|
||||
// the batch number in SAP.
|
||||
SAPSLocFrom = '0400'
|
||||
SAPSLocTo = '0400'
|
||||
end else
|
||||
SAPSLocFrom = '0400'
|
||||
SAPSLocTo = '0500'
|
||||
end
|
||||
obj_SAP('AddTransaction','BATCHMOVE_IN':@RM:Material:@RM:BatchFrom:@RM:BatchTo:@RM:SAPSLocFrom:@RM:SAPSLocTo:@RM:TransQty)
|
||||
ErrCode = ''
|
||||
IF NOT(Get_Status(ErrCode)) then
|
||||
Database_Services('DeleteDataRow', 'SAP_MU_TRANS', WOMatKey)
|
||||
end else
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\SAP'
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' SendMUTrans.csv'
|
||||
Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'BatchFrom' : @FM : 'BatchTo'
|
||||
objMuTransLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
LogData = ''
|
||||
LogData<1> = LoggingDTM
|
||||
LogData<2> = WOMatKey
|
||||
LogData<3> = BatchFrom
|
||||
LogData<4> = BatchTo
|
||||
Logging_Services('AppendLog', objMuTransLog, LogData, @RM, @FM)
|
||||
end
|
||||
Next MUCass
|
||||
end
|
||||
|
||||
end service
|
||||
|
||||
|
||||
Service GetInboundWOMatKeys(LookbackDate)
|
||||
|
||||
Set_Status(0)
|
||||
If Num(LookbackDate) then LookbackDate = OConv(LookbackDate, 'D4/')
|
||||
RowCount = 0
|
||||
KeyList = ''
|
||||
TableName = "WO_MAT"
|
||||
Flag = ""
|
||||
Done = False$
|
||||
CursorVar = ""
|
||||
|
||||
GoSub ClearCursors
|
||||
|
||||
SortList = "SAP_TX_DT"
|
||||
ReduceScript = "WITH {SAP_BATCH_NO} EQ '' AND WITH {SAP_TX_DT} GE '":LookbackDate:"'"
|
||||
Mode = NEXT_CUR$
|
||||
|
||||
Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag)
|
||||
If Flag then
|
||||
Select TableName By SortList Using Cursorvar then
|
||||
Loop
|
||||
ReadNext key Using Cursorvar By AT Else Done = TRUE$
|
||||
Until Done
|
||||
KeyList<-1> = Key
|
||||
Repeat
|
||||
end
|
||||
End
|
||||
Response = KeyList
|
||||
|
||||
end service
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal GoSubs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ClearCursors:
|
||||
|
||||
For Counter = 0 To 8
|
||||
ClearSelect Counter
|
||||
Next Counter
|
||||
|
||||
return
|
||||
|
||||
|
Reference in New Issue
Block a user