@AbapCatalog.sqlViewName: 'PMPEOPER'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #CONSUMPTION
@VDM.private: true
define view P_MfgProcgExecOperation
as select from I_MfgOrderOperationDelayBasic as MfgOrderOperationDelayBasic
left outer to one join I_OpActyNtwkInstanceBasic as OpActyNtwkInstance on OpActyNtwkInstance.OpActyNtwkInstance = MfgOrderOperationDelayBasic.ProduceOpActyNtwkInstance
inner join I_OrderItem as OrderItem on OrderItem.OrderID = MfgOrderOperationDelayBasic.ManufacturingOrder
and OrderItem.OrderItem = '0001'
-- Joins for holds: For performance reasons each hold type is joined separetly here
left outer to one join P_MatlNmbrOfProdnHolds as MatlNmbrOfProdnHolds on MatlNmbrOfProdnHolds.Material = OrderItem.Material
left outer to one join P_WrkCtrNmbrOfProdnHolds as WrkCtrNmbrOfProdnHolds on WrkCtrNmbrOfProdnHolds.WorkCenterInternalID = MfgOrderOperationDelayBasic.WorkCenterInternalID
and WrkCtrNmbrOfProdnHolds.WorkCenterTypeCode = MfgOrderOperationDelayBasic.WorkCenterTypeCode
left outer to one join P_OrderNmbrOfProdnHolds as OrderNmbrOfProdnHolds on OrderNmbrOfProdnHolds.ManufacturingOrder = MfgOrderOperationDelayBasic.ManufacturingOrder
left outer to one join P_OperNmbrOfProdnHolds as OperNmbrOfProdnHolds on OperNmbrOfProdnHolds.OrderInternalID = MfgOrderOperationDelayBasic.OrderInternalBillOfOperations
and OperNmbrOfProdnHolds.OrderOperationInternalID = MfgOrderOperationDelayBasic.OrderIntBillOfOperationsItem
left outer to one join P_MfgOrderOpNmbrOfOpActyOnHold as MfgOrderOpNmbrOfOpActyOnHold on MfgOrderOpNmbrOfOpActyOnHold.OrderInternalID = MfgOrderOperationDelayBasic.OrderInternalBillOfOperations
and MfgOrderOpNmbrOfOpActyOnHold.OrderOperationInternalID = MfgOrderOperationDelayBasic.OrderIntBillOfOperationsItem
{
key MfgOrderOperationDelayBasic.OrderInternalBillOfOperations,
key MfgOrderOperationDelayBasic.OrderIntBillOfOperationsItem,
MfgOrderOperationDelayBasic.ManufacturingOrder,
MfgOrderOperationDelayBasic.ManufacturingOrderCategory,
MfgOrderOperationDelayBasic.ManufacturingOrderType,
MfgOrderOperationDelayBasic.Reservation,
MfgOrderOperationDelayBasic.ProdnProcgIsFlexible,
MfgOrderOperationDelayBasic.ManufacturingOrderSequence,
MfgOrderOperationDelayBasic.ProductionPlant,
MfgOrderOperationDelayBasic.ManufacturingOrderOperation,
MfgOrderOperationDelayBasic.MfgOrderOperationText,
MfgOrderOperationDelayBasic.ProduceOpActyNtwkInstance,
OrderItem.Material,
OrderItem.WBSElementInternalID_2 as WBSElementInternalID,
MfgOrderOperationDelayBasic.WorkCenterInternalID,
MfgOrderOperationDelayBasic.WorkCenterTypeCode,
MfgOrderOperationDelayBasic.PlantTimeZone,
MfgOrderOperationDelayBasic.OpLtstSchedldExecStrtDte,
MfgOrderOperationDelayBasic.OpLtstSchedldExecStrtTme,
MfgOrderOperationDelayBasic.OpLtstSchedldExecStrtDteTme,
MfgOrderOperationDelayBasic.OpLtstSchedldExecEndDte,
MfgOrderOperationDelayBasic.OpLtstSchedldExecEndTme,
MfgOrderOperationDelayBasic.OpLtstSchedldExecEndDteTme,
MfgOrderOperationDelayBasic.OpActualExecutionStartDate,
MfgOrderOperationDelayBasic.OpActualExecutionStartTime,
MfgOrderOperationDelayBasic.OpActualExecutionStartDateTime,
MfgOrderOperationDelayBasic.OpActualExecutionEndDate,
MfgOrderOperationDelayBasic.OpActualExecutionEndTime,
MfgOrderOperationDelayBasic.OpActualExecutionEndDateTime,
-- Quantities
MfgOrderOperationDelayBasic.OpPlannedScrapQuantity,
MfgOrderOperationDelayBasic.OpPlannedTotalQuantity,
MfgOrderOperationDelayBasic.OpTotalConfirmedYieldQty,
MfgOrderOperationDelayBasic.OpTotalConfirmedScrapQty,
cast(0 as lmnga) as OpExecutionCompletedQuantity,
MfgOrderOperationDelayBasic.OperationUnit,
MfgOrderOperationDelayBasic.OperationExecutionStartIsLate,
OpActyNtwkInstance.OpActyNtwkInstance,
OpActyNtwkInstance.OperationActivityNetwork,
OpActyNtwkInstance.OpActyNtwkVersionCounter,
OpActyNtwkInstance.OpActyConfIsSFIBased,
-- Status fields
MfgOrderOperationDelayBasic.OperationIsClosed,
MfgOrderOperationDelayBasic.OperationIsTechlyCompleted,
MfgOrderOperationDelayBasic.OperationIsDelivered,
MfgOrderOperationDelayBasic.OperationIsPartiallyDelivered,
MfgOrderOperationDelayBasic.OperationIsPartiallyConfirmed,
MfgOrderOperationDelayBasic.OperationIsPrinted,
MfgOrderOperationDelayBasic.OperationIsReleased,
MfgOrderOperationDelayBasic.OperationIsCreated,
MfgOrderOperationDelayBasic.OperationIsScheduled,
MfgOrderOperationDelayBasic.OperationIsConfirmed,
MfgOrderOperationDelayBasic.OperationIsDeleted,
MfgOrderOperationDelayBasic.OperationExecutionEndIsLate,
MfgOrderOperationDelayBasic.OperationYieldDeviationQty,
case MfgOrderOperationDelayBasic.OperationExecutionStartIsLate
when 'X' then
case when (MfgOrderOperationDelayBasic.OperationIsPartiallyConfirmed = ' ' and MfgOrderOperationDelayBasic.OperationIsReleased = 'X' and MfgOrderOperationDelayBasic.OperationIsConfirmed = '' and (MfgOrderOperationDelayBasic.PlannedCurrentStrtDateDvtnDurn > 0 ))
then (cast(MfgOrderOperationDelayBasic.PlannedCurrentStrtDateDvtnDurn as abap.fltp) / 3600.00)
else (cast(MfgOrderOperationDelayBasic.PlannedActualStartDateDvtnDurn as abap.fltp) / 3600.00)
end
else 0
end as ExecutionStartLatenessInHours,
case MfgOrderOperationDelayBasic.OperationExecutionEndIsLate
when 'X' then
case when (MfgOrderOperationDelayBasic.OperationIsConfirmed = ' ' and MfgOrderOperationDelayBasic.OperationIsPartiallyConfirmed = 'X' and MfgOrderOperationDelayBasic.OperationIsConfirmed = '' and (MfgOrderOperationDelayBasic.PlannedCurrentEndDateDvtnDurn > 0 ) )
then (cast(MfgOrderOperationDelayBasic.PlannedCurrentEndDateDvtnDurn as abap.fltp) / 3600.00)
else (cast(MfgOrderOperationDelayBasic.PlannedActualEndDateDvtnDurn as abap.fltp) / 3600.00)
end
else 0
end as ExecutionEndLatenessInHours,
case MfgOrderOperationDelayBasic.OperationExecutionStartIsLate
when 'X' then
case when (MfgOrderOperationDelayBasic.OperationIsPartiallyConfirmed = ' ' and MfgOrderOperationDelayBasic.OperationIsReleased = 'X' and MfgOrderOperationDelayBasic.OperationIsConfirmed = '' and (MfgOrderOperationDelayBasic.PlannedCurrentStrtDateDvtnDurn > 0 ))
then (cast(MfgOrderOperationDelayBasic.PlannedCurrentStrtDateDvtnDurn as abap.fltp) / 60.00)
else (cast(MfgOrderOperationDelayBasic.PlannedActualStartDateDvtnDurn as abap.fltp) / 60.00)
end
else 0
end as ExecutionStartLatenessInMins,
case MfgOrderOperationDelayBasic.OperationExecutionEndIsLate
when 'X' then
case when (MfgOrderOperationDelayBasic.OperationIsConfirmed = ' ' and MfgOrderOperationDelayBasic.OperationIsPartiallyConfirmed = 'X' and MfgOrderOperationDelayBasic.OperationIsConfirmed = '' and (MfgOrderOperationDelayBasic.PlannedCurrentEndDateDvtnDurn > 0 ) )
then (cast(MfgOrderOperationDelayBasic.PlannedCurrentEndDateDvtnDurn as abap.fltp) / 60.00)
else (cast(MfgOrderOperationDelayBasic.PlannedActualEndDateDvtnDurn as abap.fltp) / 60.00)
end
else 0
end as ExecutionEndLatenessInMinutes,
cast(MfgOrderOperationDelayBasic.PlannedCurrentStrtDateDvtnDurn as abap.fltp)/ 86400.00 as OperationStartDeviationDays,
cast(MfgOrderOperationDelayBasic.PlannedCurrentEndDateDvtnDurn as abap.fltp)/ 86400.00 as PlannedEndDateDvtnInDays,
OrderItem.EffectivityParameterVariant,
--Hold Info
cast(coalesce(MatlNmbrOfProdnHolds.NumberOfHolds, 0) as mpe_number_of_holds preserving type) as NumberOfMaterialHolds,
cast(coalesce(WrkCtrNmbrOfProdnHolds.NumberOfHolds, 0) as mpe_number_of_holds preserving type) as NumberOfWorkCenterHolds,
cast(coalesce(OrderNmbrOfProdnHolds.NumberOfHolds, 0) as mpe_number_of_holds preserving type) as NumberOfOrderHolds,
cast(coalesce(OperNmbrOfProdnHolds.NumberOfHolds, 0) as mpe_number_of_holds preserving type) as NumberOfOperationHolds,
cast(coalesce(MfgOrderOpNmbrOfOpActyOnHold.OpActyWithoutHold, 0) as mpe_number_of_holds) as NumberOfOperationActivityHolds,
OrderItem._Material,
MfgOrderOperationDelayBasic._WorkCenter,
MfgOrderOperationDelayBasic._ProductionPlant,
OpActyNtwkInstance._OpActyNtwkInternalId,
OpActyNtwkInstance._OperationActivityNetwork,
case when OpActyNtwkInstance.OpActyNtwkInstance is null then '' else 'X' end as OrderIsShopFloorOrder,
OrderItem._WBSElementBasicData2 as _WBSElementBasicData
}
where
MfgOrderOperationDelayBasic.ManufacturingOrderCategory = '10'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_MFGORDEROPERATIONDELAYBASIC",
"I_OPACTYNTWKINSTANCEBASIC",
"I_ORDERITEM",
"P_MATLNMBROFPRODNHOLDS",
"P_MFGORDEROPNMBROFOPACTYONHOLD",
"P_OPERNMBROFPRODNHOLDS",
"P_ORDERNMBROFPRODNHOLDS",
"P_WRKCTRNMBROFPRODNHOLDS"
],
"ASSOCIATED":
[
"I_MATERIAL",
"I_OPACTYNTWKINTERNALID",
"I_OPERATIONACTIVITYNETWORK",
"I_PLANT",
"I_WBSELEMENTBASICDATA",
"I_WORKCENTER"
],
"BASE":
[
"I_MFGORDEROPERATIONDELAYBASIC",
"I_OPACTYNTWKINSTANCEBASIC",
"I_ORDERITEM"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/