@AbapCatalog.sqlViewName: 'PRSHSIMOPINSEC'
@AccessControl.authorizationCheck: #NOT_REQUIRED@VDM.private: true@VDM.viewType: #CONSUMPTION@ClientHandling.algorithm: #SESSION_VARIABLE/*
CONTRACT**********************************************************************************************************************
Name: Read Simulated Operation duration and convert it to seconds
Specification: This view reads the simulated operation duration and converts it to seconds.Planned work and duration
is calculaed if they are not maintained. Number of resources is defaulted to 1 if its not maintained.
This view also determines the start date andend date for the distribution of demand work from the
simulated start andend date. Few due operations might have been dispatched in a different session.
These Operations are also filtered in this view.
Requires: NA
Ensures: Duration and Number of capacities of simulated operations is read and converted into seconds
Owners: AN
Contributors: CF
Unit Test required Y/N: Yes
Additional comments
END OF CONTRACT***************************************************************************************************************
*/defineview P_RSHSmltdOpInSeconds
asselectdistinctfrom I_RSHMaintSchedSmltdOp as SimulatedOperations
innerjoin I_MaintOrderOperAndSubOper as OperationDetails on OperationDetails.MaintOrderRoutingNumber = SimulatedOperations.MaintOrderRoutingNumber
and OperationDetails.MaintOrderOperationCounter = SimulatedOperations.MaintOrderOperationCounter
innerjoin P_RSHMaintSchedSmltdDueStatus as OperationStatus on SimulatedOperations.MaintOrderRoutingNumber = OperationStatus.MaintOrderRoutingNumber
and SimulatedOperations.MaintOrderOperationCounter = OperationStatus.MaintOrderOperationCounter
{
key SimulatedOperations.MaintSchedSimlnUUID,
key OperationDetails.MaintenanceOrder,
key OperationDetails.MaintenanceOrderOperation,
key OperationDetails.MaintenanceOrderSubOperation,
MaintPriority,
MaintPriorityType,
MaintPriorityColorCode,
OrderType,
SimulatedOperations.ActivityType,
OperationDetails.OperationControlKey as OperationControlKey,
case SimulatedWorkCenterInternalID
when '00000000'
then WorkCenterInternalID
else SimulatedWorkCenterInternalID
endas WorkCenterInternalID,
case OperationStatus.ProcessingStatus
when 20
then SimulatedOperations.ProcessingStatus
else OperationStatus.ProcessingStatus endas ProcessingStatus,
SimulatedOperations.MaintOrdOpSimulationStatus,
SimulatedOperations.MaintOrdOpSimulatedStartDate,
SimulatedOperations.MaintOrdOpSimulatedEndDate,
// Determine from which date the operation is consuming (either from simulated start or simulation/week start)
casewhen
MaintOrdOpSimulatedStartDate = '00000000'
then _MaintSchedSimulation.MaintSchedSimulationStartDate
else MaintOrdOpSimulatedStartDate
endas ConsumingStartDate,
// Determine until which date the operation is consuming (either from simulated endor simulation/week end)
casewhen
MaintOrdOpSimulatedEndDate = '99991231'
then _MaintSchedSimulation.MaintSchedSimulationEndDate
else MaintOrdOpSimulatedEndDate
endas ConsumingEndDate,
SimulatedOperations.NumberOfResources as NumberOfCapacities,
//Determine the seconds between midnight and the planned start time
casewhen
SimulatedOperations.MaintOrdOpSimulatedStartTime = '240000'
then 86400
elsecast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 1, 2) asabap.numc(2) ) asabap.int4 ) * 3600
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 3, 2) asabap.numc(2) ) asabap.int4 ) * 60
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 5, 2) asabap.numc(2) ) asabap.int4 )
endas SimulatedStartTimeInSeconds,
//Determine the seconds between midnight and the planned end time
casewhen
SimulatedOperations.MaintOrdOpSimulatedEndTime = '240000'
then 86400
elsecast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 1, 2) asabap.numc(2) ) asabap.int4 ) * 3600
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 3, 2) asabap.numc(2) ) asabap.int4 ) * 60
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 5, 2) asabap.numc(2) ) asabap.int4 )
endas SimulatedEndTimeInSeconds,
// Determine from which time capacity is consumed by this operation
casewhen
SimulatedOperations.MaintOrdOpSimulatedStartTime = '240000'
then 86400
elsecast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 1, 2) asabap.numc(2) ) asabap.int4 ) * 3600
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 3, 2) asabap.numc(2) ) asabap.int4 ) * 60
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedStartTime, 5, 2) asabap.numc(2) ) asabap.int4 )
endas ConsumingStartTimeInSeconds,
// Determine until which time capacity is consumed by this operation
casewhen
SimulatedOperations.MaintOrdOpSimulatedEndTime = '240000'
or MaintOrdOpSimulatedEndDate = '00000000' //if no end date was scheduled, end time is initial but should be end of day for capacity calculations
then 86400
elsecast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 1, 2) asabap.numc(2) ) asabap.int4 ) * 3600
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 3, 2) asabap.numc(2) ) asabap.int4 ) * 60
+ cast( cast( substring(SimulatedOperations.MaintOrdOpSimulatedEndTime, 5, 2) asabap.numc(2) ) asabap.int4 )
endas ConsumingEndTimeInSeconds,
//Duration is calculated if it isnot maintained
casewhen ( ( SimulatedOperations.OperationDuration = 0 or SimulatedOperations.OperationDuration isnull ) and SimulatedOperations.OperationPlannedWork > 0 )
thencast ( SimulatedOperations.OperationPlannedWork asabap.fltp ) / cast ( SimulatedOperations.NumberOfResources asabap.fltp )
else
SimulatedOperations.OperationDuration endas OperationDuration,
SimulatedOperations.OperationDurationUnit as OperationDurationUnit,
//Planned work is calculated if it isnot maintained
casewhen SimulatedOperations.OperationPlannedWork = 0 or SimulatedOperations.OperationPlannedWork isnullthen SimulatedOperations.OperationDuration * SimulatedOperations.NumberOfResources
else
SimulatedOperations.OperationPlannedWork endas OperationPlannedWork,
SimulatedOperations.OperationPlannedWorkUnit as OperationPlannedWorkUnit,
_MaintSchedSimulation.MaintSchedSimulationStartDate,
_MaintSchedSimulation.MaintSchedSimulationEndDate
}
where
(
OperationStatus.ProcessingStatus = 20
or(
OperationStatus.ProcessingStatus = 30
and MaintOrdOpSimulationStatus = '30'
)
)
and UserIsAssignedToOpWrkCtr = 'X'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_MAINTORDEROPERANDSUBOPER",
"I_RSHMAINTSCHEDSIMULATION",
"I_RSHMAINTSCHEDSMLTDOP",
"P_RSHMAINTSCHEDSMLTDDUESTATUS"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/