added LSL2 stored procedures
This commit is contained in:
249
LSL2/STPROC/COMM_DIALOG_SAP_COMM.txt
Normal file
249
LSL2/STPROC/COMM_DIALOG_SAP_COMM.txt
Normal file
@ -0,0 +1,249 @@
|
||||
COMPILE FUNCTION Comm_Dialog_SAP_Comm( Instruction, Parm1 )
|
||||
|
||||
/*
|
||||
Commuter Module for SAP Communications Window
|
||||
|
||||
J.C. Henry, Inc. - John C. Henry
|
||||
|
||||
*/
|
||||
|
||||
DECLARE SUBROUTINE Center_Window,StatusLine,Set_Property,End_Dialog, Send_Event, Set_Status, Adios, obj_SAP, obj_Notes, obj_Post_Log, RList, SAP_Services
|
||||
DECLARE SUBROUTINE ErrMsg, Send_Message, obj_Tables, Post_Event, Send_INfo, ShowWindow, obj_Appwindow, Send_Dyn,ErrLog, obj_WO_Mat_Log, Sleepery, Yield, SRP_Stopwatch, SRP_TCPClient
|
||||
DECLARE FUNCTION Get_Property, Get_Status,Dialog_Box, FindWindow, Utility, SAP_Services, Database_Services, SRP_TCPClient
|
||||
|
||||
$INSERT QUOTE_SIGS_EQU
|
||||
$INSERT NOTIFICATION_EQU
|
||||
$INSERT APPCOLORS
|
||||
$INSERT LOGICAL
|
||||
|
||||
EQU CRLF$ TO \0D0A\
|
||||
EQU InBoundLimit$ TO 20
|
||||
EQU OutBoundLimit$ TO 10
|
||||
EQU DEFAULT_INTERVAL$ TO 10 /* Seconds */
|
||||
|
||||
$INSERT ENVIRON_CONSTANTS
|
||||
|
||||
ErrTitle = 'Error in Comm_Dialog_SAP_Comm routine'
|
||||
ErrorMsg = ''
|
||||
|
||||
Instructions = 'Create'
|
||||
Instructions := @FM:'Timer'
|
||||
Instructions := @FM:'StartStop'
|
||||
Instructions := @FM:'CommStartStop'
|
||||
Instructions := @FM:'Close'
|
||||
|
||||
RetVal = ''
|
||||
|
||||
BEGIN CASE
|
||||
CASE Instruction = 'Create' ; GOSUB Create
|
||||
CASE Instruction = 'Timer' ; GOSUB Timer
|
||||
CASE Instruction EQ @Window : '.LOG_ON' AND Parm1 EQ 'CLICK' ; GoSub LOG_ON.CLICK
|
||||
CASE Instruction EQ @Window : '.TRANS_QTY' AND Parm1 EQ 'LOSTFOCUS' ; GoSub TRANS_QTY.LOSTFOCUS
|
||||
CASE Instruction EQ @Window : '.SAP_HOLD_START_DTM' AND Parm1 EQ 'LOSTFOCUS' ; GoSub SAP_HOLD_START_DTM.LOSTFOCUS
|
||||
CASE Instruction EQ @Window : '.SAP_HOLD_STOP_DTM' AND Parm1 EQ 'LOSTFOCUS' ; GoSub SAP_HOLD_STOP_DTM.LOSTFOCUS
|
||||
CASE Instruction = 'Close' ; GOSUB Close
|
||||
CASE 1
|
||||
ErrorMsg = 'Unknown Instruction ':QUOTE(Instruction):' passed to routine'
|
||||
|
||||
END CASE
|
||||
|
||||
|
||||
IF ErrorMsg NE '' THEN
|
||||
ErrMsg(ErrTitle:@SVM:ErrorMsg)
|
||||
END
|
||||
|
||||
|
||||
RETURN RetVal
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Create:
|
||||
* * * * * * *
|
||||
|
||||
obj_Appwindow('Create',@WINDOW)
|
||||
|
||||
otParms = 'SYSOBJ':@RM:'SAP_COMM'
|
||||
obj_Tables('LockRec',otParms) ;* Places lock on fictional record
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrorMsg = ErrTitle:@SVM:'Another SAP Communications Server is already running.'
|
||||
ErrMsg(ErrorMsg)
|
||||
Post_Event(@WINDOW,'CLOSE')
|
||||
RETURN
|
||||
END
|
||||
|
||||
Set_Property(@WINDOW,'@LOCKED',1) ;* Set ad-hoc property '@LOCKED' to true
|
||||
Set_Property(@WINDOW,'TIMER','0':@FM:'1000') ;* Set timer event to start in 1000 msecs (1 second). Do not set for auto-repeat. Let the TIMER event handle this.
|
||||
|
||||
Set_Property(@WINDOW:'.TRANS_QTY', 'INVALUE', SAP_Services('GetSAPTransactionLimit'))
|
||||
Set_Property(@WINDOW:'.SAP_HOLD_START_DTM', 'INVALUE', SAP_Services('GetSAPHoldStartDateTime'))
|
||||
Set_Property(@WINDOW:'.SAP_HOLD_STOP_DTM', 'INVALUE', SAP_Services('GetSAPHoldStopDateTime'))
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
LOG_ON.CLICK:
|
||||
|
||||
LoggingFlag = Get_Property(@Window : '.LOG_ON', 'CHECK')
|
||||
SAP_Services('SetTransactionLoggingFlag', LoggingFlag)
|
||||
|
||||
return
|
||||
|
||||
|
||||
TRANS_QTY.LOSTFOCUS:
|
||||
|
||||
TransactionLimit = Get_Property(@Window : '.TRANS_QTY', 'TEXT')
|
||||
SAP_Services('SetSAPTransactionLimit', TransactionLimit)
|
||||
|
||||
return
|
||||
|
||||
|
||||
SAP_HOLD_START_DTM.LOSTFOCUS:
|
||||
|
||||
HoldStartDTM = Get_Property(@Window : '.SAP_HOLD_START_DTM', 'INVALUE')
|
||||
SAP_Services('SetSAPHoldStartDateTime', HoldStartDTM)
|
||||
|
||||
return
|
||||
|
||||
|
||||
SAP_HOLD_STOP_DTM.LOSTFOCUS:
|
||||
|
||||
HoldStopDTM = Get_Property(@Window : '.SAP_HOLD_STOP_DTM', 'INVALUE')
|
||||
SAP_Services('SetSAPHoldStopDateTime', HoldStopDTM)
|
||||
|
||||
return
|
||||
|
||||
* * * * * * *
|
||||
Close:
|
||||
* * * * * * *
|
||||
|
||||
UNLOCK ALL
|
||||
NumWindows = Utility('WINCOUNT')
|
||||
If NumWindows EQ 1 then Set_Property('SYSTEM','IDLEPROC','ADIOS')
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Timer:
|
||||
* * * * * * *
|
||||
|
||||
Set_Status(0)
|
||||
|
||||
Set_Property(@WINDOW:'.CURR_TIME','TEXT',OCONV( Time(), 'MTHS' )) ;* Clock on window
|
||||
|
||||
LastTime = Get_Property(@WINDOW,'@LAST_TIME')
|
||||
|
||||
* * * Added 1/29/2015 JCH/DKK * * *
|
||||
|
||||
*** Used to temporarily stop the SAP interface during specified time periods, like SAP-PI outage, EOM procesing, VM backups.
|
||||
|
||||
SAPOutage = SAP_Services('GetSAPOutageFlag')
|
||||
IF SAPOutage THEN
|
||||
Set_Property(@WINDOW:'.BACKUP_HOLD','VISIBLE',1)
|
||||
END ELSE
|
||||
Set_Property(@WINDOW:'.BACKUP_HOLD','VISIBLE',0)
|
||||
END
|
||||
|
||||
|
||||
IF LastTime > Time() THEN
|
||||
Set_Property(@WINDOW,'@LAST_TIME', Time()) ;* Midnight -> clock resets to 0
|
||||
LastTime = Time()
|
||||
// Call the SRPEngineService and pass it the command
|
||||
Command = 'RUN SAP_SERVICES "SendReconcile"'
|
||||
TCPServerSettings@ = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TCPIP_SETTINGS')
|
||||
TcpClientHandle = 0
|
||||
If SRP_TcpClient(TcpClientHandle, 'CONNECT', TCPServerSettings@<1>, TCPServerSettings@<2>) then
|
||||
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
|
||||
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
|
||||
end
|
||||
* obj_SAP('SendReconcile') ;* WIP Recom data sent to SAP once each day at midnight
|
||||
END
|
||||
|
||||
CommOn = Get_Property(@WINDOW,'@COMM_ACTIVE')
|
||||
CommOnTime = Get_Property(@WINDOW,'@COMM_ACTIVE_TIME')
|
||||
|
||||
IF CommOn THEN
|
||||
Send_Info('Comm Active...')
|
||||
IF Time() - CommOnTime > 22 THEN
|
||||
Set_Property(@WINDOW,'@COMM_ACTIVE',0) ;* FTP window timeout takes about 21 seconds
|
||||
Set_Property(@WINDOW,'@COMM_ACTIVE_TIME','') ;* Hold off retrying until
|
||||
END
|
||||
|
||||
END ELSE
|
||||
Interval = DEFAULT_INTERVAL$
|
||||
IF Time() >= (LastTime + Interval) Then ;* SAP_Comm cycle time setting = 10 sec - changed to 8 sec -dkk 1/14/15
|
||||
|
||||
Set_Property(@WINDOW,'@LAST_TIME', Time())
|
||||
|
||||
END ;* End of comm interval time check
|
||||
|
||||
END ;* End of check for @COMM_ON flag
|
||||
|
||||
|
||||
*********************************************
|
||||
* Refresh the SAP Buffer Outbound Qty Count *
|
||||
*********************************************
|
||||
|
||||
OutboundQty = SAP_Services('GetOutboundPending')
|
||||
|
||||
Set_Property(@WINDOW:'.OUTBOUND_QTY','TEXT', OutboundQty)
|
||||
|
||||
If (OutboundQty >= OutBoundLimit$) Then
|
||||
OutBoundMsgSent = Get_Property(@Window,'@OutBoundMsgSent')
|
||||
If (OutBoundMsgSent NE True$) Then
|
||||
Recipients = XLATE('NOTIFICATION', 'FI_SUPPORT', 'USER_ID', 'X')
|
||||
SentFrom = 'OI Admin'
|
||||
Subject = 'SAP Comm OUTBOUND Pending Buffer'
|
||||
Message = 'SAP Comm OUTBOUND Pending Buffer is filling up with ':OutboundQty:' records not sent. Check SAP interface.'
|
||||
AttachWindow = ''
|
||||
AttachKey = ''
|
||||
SendToGroup = ''
|
||||
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create',Parms)
|
||||
|
||||
Set_Property(@WINDOW,'@OutBoundMsgSent', True$)
|
||||
end
|
||||
|
||||
end else
|
||||
Set_Property(@WINDOW,'@OutBoundMsgSent', False$)
|
||||
end
|
||||
|
||||
|
||||
************************************************
|
||||
* Refresh the SAP Buffer Inbound Pending Count *
|
||||
************************************************
|
||||
Set_Status(0)
|
||||
|
||||
InboundPending = SAP_Services('GetInboundPending')
|
||||
If InboundPending < 0 then InboundPending = 0
|
||||
Set_Property(@WINDOW:'.INBOUND_PENDING','TEXT', InboundPending)
|
||||
|
||||
If (InboundPending >= InBoundLimit$) Then
|
||||
|
||||
InBoundMsgSent = Get_Property(@Window,'@InBoundMsgSent')
|
||||
If (InBoundMsgSent NE True$) Then
|
||||
Recipients = XLATE('NOTIFICATION', 'FI_SUPPORT', 'USER_ID', 'X')
|
||||
SentFrom = 'OI Admin'
|
||||
Subject = 'SAP Comm INBOUND Pending Buffer'
|
||||
Message = 'SAP Comm INBOUND Pending Buffer is filling up with ':InBoundPending:' records not received. Check SAP interface.'
|
||||
AttachWindow = ''
|
||||
AttachKey = ''
|
||||
SendToGroup = ''
|
||||
|
||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||
obj_Notes('Create',Parms)
|
||||
|
||||
Set_Property(@WINDOW,'@InBoundMsgSent', True$)
|
||||
end
|
||||
|
||||
end else
|
||||
Set_Property(@WINDOW,'@InBoundMsgSent', False$)
|
||||
end
|
||||
|
||||
Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield()
|
||||
Sleepery(500)
|
||||
Set_Property(@WINDOW,'TIMER','0':@FM:'1000') ;* Set the next timer event to start in 1000 msecs (1 second).
|
||||
|
||||
RETURN
|
Reference in New Issue
Block a user