@AbapCatalog.sqlViewName: 'IMFGORDERDURN'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@AccessControl.privilegedAssociations: ['_MRPController', '_ProductionSupervisor', '_CreatedByUser', '_LastChangedByUser', '_LongText']
@Analytics.dataCategory: #DIMENSION
@ClientHandling.algorithm: #SESSION_VARIABLE
@ClientHandling.type: #CLIENT_DEPENDENT
@Consumption.ranked: true
@Metadata.allowExtensions: true
@ObjectModel.modelingPattern: #NONE
@ObjectModel.supportedCapabilities: [#CDS_MODELING_DATA_SOURCE, #SQL_DATA_SOURCE, #SEARCHABLE_ENTITY]
@ObjectModel.representativeKey: 'ManufacturingOrder'
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #XL, dataClass: #MIXED}
@Search.searchable: true
@VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
@VDM.viewType: #COMPOSITE
@EndUserText.label: 'Manufacturing Order Duration'
define view I_MfgOrderDuration
as select from I_ManufacturingOrder as ord
// inner join P_OrderStatusBasicAggrgn as stat on stat.ObjectInternalID = ord.ObjectInternalID // Status -> inefficient access without StatusObject (OBJNR)
left outer to one join I_StatusObjectStatusBasic as _isCreated on _isCreated.StatusObject = ord.ObjectInternalID and _isCreated.StatusCode = 'I0001' and _isCreated.StatusIsInactive = '' //and _isCreated.StatusObject like 'OR%'// OrderIscreated
left outer to one join I_StatusObjectStatusBasic as _isReleased on _isReleased.StatusObject = ord.ObjectInternalID and _isReleased.StatusCode = 'I0002' and _isReleased.StatusIsInactive = '' //and _isReleased.StatusObject like 'OR%'// OrderIsReleased
left outer to one join I_StatusObjectStatusBasic as _isPrinted on _isPrinted.StatusObject = ord.ObjectInternalID and _isPrinted.StatusCode = 'I0007' and _isPrinted.StatusIsInactive = '' //and _isPrinted.StatusObject like 'OR%'// OrderIsPrinted
left outer to one join I_StatusObjectStatusBasic as _isConfirmed on _isConfirmed.StatusObject = ord.ObjectInternalID and _isConfirmed.StatusCode = 'I0009' and _isConfirmed.StatusIsInactive = '' //and _isConfirmed.StatusObject like 'OR%'// OrderIsConfirmed
left outer to one join I_StatusObjectStatusBasic as _isPartConf on _isPartConf.StatusObject = ord.ObjectInternalID and _isPartConf.StatusCode = 'I0010' and _isPartConf.StatusIsInactive = '' //and _isPartConf.StatusObject like 'OR%'// OrderIsPartiallyConfirmed
left outer to one join I_StatusObjectStatusBasic as _isDelivered on _isDelivered.StatusObject = ord.ObjectInternalID and _isDelivered.StatusCode = 'I0012' and _isDelivered.StatusIsInactive = '' //and _isDelivered.StatusObject like 'OR%'// OrderIsDelivered
left outer to one join I_StatusObjectStatusBasic as _isDeleted on _isDeleted.StatusObject = ord.ObjectInternalID and _isDeleted.StatusCode = 'I0013' and _isDeleted.StatusIsInactive = '' //and _isDeleted.StatusObject like 'OR%'// OrderIsDeleted
left outer to one join I_StatusObjectStatusBasic as _isPreCosted on _isPreCosted.StatusObject = ord.ObjectInternalID and _isPreCosted.StatusCode = 'I0016' and _isPreCosted.StatusIsInactive = '' //and _isPreCosted.StatusObject like 'OR%'// OrderIsPreCosted
left outer to one join I_StatusObjectStatusBasic as _SRuleIsCreated on _SRuleIsCreated.StatusObject = ord.ObjectInternalID and _SRuleIsCreated.StatusCode = 'I0028' and _SRuleIsCreated.StatusIsInactive = '' //and _SRuleIsCreated.StatusObject like 'OR%'// SettlementRuleIsCreated
left outer to one join I_StatusObjectStatusBasic as _isPartRel on _isPartRel.StatusObject = ord.ObjectInternalID and _isPartRel.StatusCode = 'I0042' and _isPartRel.StatusIsInactive = '' //and _isPartRel.StatusObject like 'OR%'// OrderIsPartiallyReleased
left outer to one join I_StatusObjectStatusBasic as _isLocked on _isLocked.StatusObject = ord.ObjectInternalID and _isLocked.StatusCode = 'I0043' and _isLocked.StatusIsInactive = '' //and _isLocked.StatusObject like 'OR%'// OrderIsLocked
left outer to one join I_StatusObjectStatusBasic as _isTechCompl on _isTechCompl.StatusObject = ord.ObjectInternalID and _isTechCompl.StatusCode = 'I0045' and _isTechCompl.StatusIsInactive = '' //and _isTechCompl.StatusObject like 'OR%'// OrderIsTechnicallyCompleted
left outer to one join I_StatusObjectStatusBasic as _isClosed on _isClosed.StatusObject = ord.ObjectInternalID and _isClosed.StatusCode = 'I0046' and _isClosed.StatusIsInactive = '' //and _isClosed.StatusObject like 'OR%'// OrderIsClosed
left outer to one join I_StatusObjectStatusBasic as _isPartDeliv on _isPartDeliv.StatusObject = ord.ObjectInternalID and _isPartDeliv.StatusCode = 'I0074' and _isPartDeliv.StatusIsInactive = '' //and _isPartDeliv.StatusObject like 'OR%'// OrderIsPartiallyDelivered
left outer to one join I_StatusObjectStatusBasic as _isMarkedDel on _isMarkedDel.StatusObject = ord.ObjectInternalID and _isMarkedDel.StatusCode = 'I0076' and _isMarkedDel.StatusIsInactive = '' //and _isMarkedDel.StatusObject like 'OR%'// OrderIsMarkedForDeletion
left outer to one join I_StatusObjectStatusBasic as _isSRuleManual on _isSRuleManual.StatusObject = ord.ObjectInternalID and _isSRuleManual.StatusCode = 'I0102' and _isSRuleManual.StatusIsInactive = '' //and _isSRuleManual.StatusObject like 'OR%'// SettlementRuleIsCrtedManually
left outer to one join I_StatusObjectStatusBasic as _isScheduled on _isScheduled.StatusObject = ord.ObjectInternalID and _isScheduled.StatusCode = 'I0117' and _isScheduled.StatusIsInactive = '' //and _isScheduled.StatusObject like 'OR%'// OrderIsScheduled
left outer to one join I_StatusObjectStatusBasic as _hasGenerOper on _hasGenerOper.StatusObject = ord.ObjectInternalID and _hasGenerOper.StatusCode = 'I0328' and _hasGenerOper.StatusIsInactive = '' //and _hasGenerOper.StatusObject like 'OR%'// OrderHasGeneratedOperations
left outer to one join I_StatusObjectStatusBasic as _inBatches on _inBatches.StatusObject = ord.ObjectInternalID and _inBatches.StatusCode = 'I0369' and _inBatches.StatusIsInactive = '' //and _inBatches.StatusObject like 'OR%'// OrderIsToBeHandledInBatches
left outer to one join I_StatusObjectStatusBasic as _AvNotChecked on _AvNotChecked.StatusObject = ord.ObjectInternalID and _AvNotChecked.StatusCode = 'I0420' and _AvNotChecked.StatusIsInactive = '' //and _AvNotChecked.StatusObject like 'OR%'// MaterialAvailyIsNotChecked
left outer to one join I_StatusObjectStatusBasic as _isShopFloor on _isShopFloor.StatusObject = ord.ObjectInternalID and _isShopFloor.StatusCode = 'I0665' and _isShopFloor.StatusIsInactive = '' //and _isShopFloor.StatusObject like 'OR%'// OrderIsShopFloorOrder
left outer to one join I_StatusObjectStatusBasic as _isPartCollRel on _isPartCollRel.StatusObject = ord.ObjectInternalID and _isPartCollRel.StatusCode = 'I0394' and _isPartCollRel.StatusIsInactive = '' //and _isPartCollRel.StatusObject like 'OR%'// OrderInCollvOrdersIsReleased
association [0..1] to I_ProductionVersion as _ProductionVersion on $projection.Material = _ProductionVersion.Material
and $projection.ProductionPlant = _ProductionVersion.Plant
and $projection.ProductionVersion = _ProductionVersion.ProductionVersion
association [1..1] to I_CalendarDate as _PlannedStartDate on $projection.MfgOrderPlannedStartDate = _PlannedStartDate.CalendarDate
association [1..1] to I_CalendarDate as _PlannedEndDate on $projection.MfgOrderPlannedEndDate = _PlannedEndDate.CalendarDate
{
// Key
@ObjectModel.text.element: ['ManufacturingOrderText']
@Search: {defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8}
key ord.ManufacturingOrder,
// Category and Type
@ObjectModel.foreignKey.association: '_MfgOrderCategory'
ord.ManufacturingOrderCategory,
@ObjectModel.foreignKey.association: '_MfgOrderType'
ord.ManufacturingOrderType,
// Text
@Semantics.text: true
ord.ManufacturingOrderText,
ord.ManufacturingOrderHasLongText,
@ObjectModel.foreignKey.association: '_LongTextLanguage'
ord.LongTextLanguageCode,
// Attributes
@ObjectModel.foreignKey.association: '_MfgOrderImportance'
ord.ManufacturingOrderImportance,
ord.IsMarkedForDeletion as MfgOrderIsToBeDeleted,
ord.MfgOrderHasMultipleItems,
ord.MfgOrderIsPartOfCollvOrder,
ord.ProdnProcgIsFlexible,
// System Status
case when _isCreated.StatusCode is null then '' else 'X' end as OrderIsCreated,
case when _isReleased.StatusCode is null then '' else 'X' end as OrderIsReleased,
case when _isPrinted.StatusCode is null then '' else 'X' end as OrderIsPrinted,
case when _isConfirmed.StatusCode is null then '' else 'X' end as OrderIsConfirmed,
case when _isPartConf.StatusCode is null then '' else 'X' end as OrderIsPartiallyConfirmed,
case when _isDelivered.StatusCode is null then '' else 'X' end as OrderIsDelivered,
case when _isDeleted.StatusCode is null then '' else 'X' end as OrderIsDeleted,
case when _isPreCosted.StatusCode is null then '' else 'X' end as OrderIsPreCosted,
case when _SRuleIsCreated.StatusCode is null then '' else 'X' end as SettlementRuleIsCreated,
case when _isPartRel.StatusCode is null then '' else 'X' end as OrderIsPartiallyReleased,
case when _isLocked.StatusCode is null then '' else 'X' end as OrderIsLocked,
case when _isTechCompl.StatusCode is null then '' else 'X' end as OrderIsTechnicallyCompleted,
case when _isClosed.StatusCode is null then '' else 'X' end as OrderIsClosed,
case when _isPartDeliv.StatusCode is null then '' else 'X' end as OrderIsPartiallyDelivered,
case when _isMarkedDel.StatusCode is null then '' else 'X' end as OrderIsMarkedForDeletion,
case when _isSRuleManual.StatusCode is null then '' else 'X' end as SettlementRuleIsCrtedManually,
case when _isScheduled.StatusCode is null then '' else 'X' end as OrderIsScheduled,
case when _hasGenerOper.StatusCode is null then '' else 'X' end as OrderHasGeneratedOperations,
case when _inBatches.StatusCode is null then '' else 'X' end as OrderIsToBeHandledInBatches,
case when _AvNotChecked.StatusCode is null then '' else 'X' end as MaterialAvailyIsNotChecked,
case when _isShopFloor.StatusCode is null then '' else 'X' end as OrderIsShopFloorOrder,
case when _isPartCollRel.StatusCode is null then '' else 'X' end as OrderInCollvOrdersIsReleased,
// Admin
@Semantics.systemDate.createdAt: true
ord.CreationDate as MfgOrderCreationDate,
@Semantics.systemTime.createdAt: true
ord.CreationTime as MfgOrderCreationTime,
@Semantics.user.createdBy: true
ord.CreatedByUser,
@Semantics.systemDate.lastChangedAt: true
ord.LastChangeDate,
@Semantics.systemTime.lastChangedAt: true
ord.LastChangeTime,
@Semantics.user.lastChangedBy: true
ord.LastChangedByUser,
// Header Material data
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MaterialStdVH', element: 'Material' } } ]
@ObjectModel.foreignKey.association: '_Material'
ord.Material,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductStdVH', element: 'Product' } } ]
ord.Product, // Needed for associton _ProductPlant (MARC)
@ObjectModel.foreignKey.association: '_StorageLocation'
ord.StorageLocation,
@Semantics.text: true
ord.GoodsRecipientName,
@Semantics.text: true
ord.UnloadingPointName,
@ObjectModel.foreignKey.association: '_InventoryUsabilityCode'
ord.InventoryUsabilityCode,
ord.MaterialGoodsReceiptDuration,
ord.QuantityDistributionKey,
ord.StockSegment,
ord.NumberOfSerialNumbers,
ord.ExtdQualityCheckIsRequired,
// Assignments
@ObjectModel.foreignKey.association: '_OrderInternalID'
ord.MfgOrderInternalID as OrderInternalBillOfOperations,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderStdVH', element: 'ManufacturingOrder' } } ]
@ObjectModel.foreignKey.association: '_SuperiorOrder'
ord.SuperiorOrder as MfgOrderSuperiorMfgOrder,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderStdVH', element: 'ManufacturingOrder' } } ]
@ObjectModel.foreignKey.association: '_ReferenceOrder'
ord.ReferenceOrder,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderStdVH', element: 'ManufacturingOrder' } } ]
@ObjectModel.foreignKey.association: '_LeadingOrder'
ord.LeadingOrder,
@ObjectModel.foreignKey.association: '_Currency'
ord.Currency,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlantStdVH', element: 'Plant' } } ]
@ObjectModel.foreignKey.association: '_Plant'
ord.ProductionPlant,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlantStdVH', element: 'Plant' } } ]
@ObjectModel.foreignKey.association: '_MRPPlant'
ord.PlanningPlant as MRPPlant,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MRPAreaVH', element: 'MRPArea' } } ]
@ObjectModel.foreignKey.association: '_MRPArea'
ord.MRPArea,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_BatchStdVH', element: 'Batch' } } ]
@ObjectModel.foreignKey.association: '_Batch_2'
ord.Batch,
@ObjectModel.foreignKey.association: '_MRPController'
ord.MRPController,
@ObjectModel.foreignKey.association: '_ProductionSupervisor'
ord.ProductionSupervisor,
@ObjectModel.foreignKey.association: '_ResponsiblePlannerGroup'
ord.ResponsiblePlannerGroup,
@ObjectModel.foreignKey.association: '_ProductionSchedulingProfile'
ord.ProductionSchedulingProfile,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductionVersionStdVH', element: 'ProductionVersion' } } ]
@ObjectModel.foreignKey.association: '_ProductionVersion'
ord.ProductionVersion,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlannedOrderStdVH', element: 'PlannedOrder' } } ]
@ObjectModel.foreignKey.association: '_PlannedOrder'
ord.PlannedOrder,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_SalesDocumentStdVH', element: 'SalesDocument' } } ]
@ObjectModel.foreignKey.association: '_SalesOrder'
ord.SalesOrder,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_SalesDocumentItemStdVH', element: 'SalesDocumentItem' } } ]
@ObjectModel.foreignKey.association: '_SalesOrderItem'
ord.SalesOrderItem,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'WBSElementInternalID_2'
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_WBSElmntByIntKeyStdVH', element: 'WBSElementInternalID' } } ]
@ObjectModel.foreignKey.association: '_WBSElement'
ord.WBSElementInternalID,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_WBSElementBasicDataStdVH', element: 'WBSElementInternalID' } } ]
@ObjectModel.foreignKey.association: '_WBSElementBasicData2'
ord.WBSElementInternalID_2,
@ObjectModel.foreignKey.association: '_Reservation'
ord.Reservation,
@ObjectModel.foreignKey.association: '_ConfirmationGroup'
ord.MfgOrderConfirmation,
ord.NumberOfMfgOrderConfirmations,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_CapacityRequirementStdVH', element: 'CapacityRequirement' } } ]
@ObjectModel.foreignKey.association: '_CapacityRequirement'
ord.CapacityRequirement,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_InspectionLotStdVH', element: 'InspectionLot' } } ]
@ObjectModel.foreignKey.association: '_InspectionLot'
ord.InspectionLot,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_ChangeMasterStdVH', element: 'ChangeNumber' } } ]
@ObjectModel.foreignKey.association: '_ChangeNumber'
ord.ChangeNumber,
@ObjectModel.foreignKey.association: '_BasicSchedulingType'
ord.BasicSchedulingType,
@ObjectModel.foreignKey.association: '_ForecastSchedulingType'
ord.ForecastSchedulingType,
ord.ObjectInternalID,
ord.ProductConfiguration,
ord.EffectivityParameterVariant,
ord.ConditionApplication,
ord.CapacityActiveVersion,
ord.CapacityRqmtHasNotToBeCreated,
ord.OrderSequenceNumber,
ord.MfgOrderSplitStatus,
// Assignments BOO
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MaterialStdVH', element: 'Material' } } ]
@ObjectModel.foreignKey.association: '_BillOfOperationsMaterial'
ord.BillOfOperationsMaterial,
@ObjectModel.foreignKey.association: '_BillOfOperationsType'
ord.BillOfOperationsType,
@VDM.lifecycle.status: #DEPRECATED // default data element change -> deprecated to avoid RTT2 error in ATC
@VDM.lifecycle.successor: 'BillOfOperationsGroup'
@ObjectModel.foreignKey.association: '_BillOfOperationsGroup'
ord.BillOfOperations,
@ObjectModel.foreignKey.association: '_BillOfOperationsGroup2'
ord.BillOfOperationsGroup,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_BillOfOperationsStdVH', element: 'BillOfOperationsVariant' } } ]
@ObjectModel.foreignKey.association: '_BillOfOperations'
ord.BillOfOperationsVariant,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_BOOChgStateStdVH', element: 'BOOInternalVersionCounter' } } ]
@ObjectModel.foreignKey.association: '_BillOfOperationsChangeState'
ord.BOOInternalVersionCounter,
@ObjectModel.foreignKey.association: '_BillOfOperationsApplication'
ord.BillOfOperationsApplication,
@ObjectModel.foreignKey.association: '_BillOfOperationsUsage'
ord.BillOfOperationsUsage,
ord.BillOfOperationsVersion,
ord.BOOExplosionDate,
ord.BOOValidityStartDate,
// Assignments BOM
ord.BillOfMaterialCategory,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'BillOfMaterialInternalID'
ord.BillOfMaterial, // with conv. exit NUMCV
ord.BillOfMaterialInternalID, // with conv. exit ALPHA
ord.BillOfMaterialVariant,
ord.BillOfMaterialVariantUsage,
ord.BillOfMaterialVersion,
ord.BOMExplosionDate,
ord.BOMValidityStartDate,
// Assignments FI/CO
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_BusinessAreaStdVH', element: 'BusinessArea' } } ]
@ObjectModel.foreignKey.association: '_BusinessArea'
ord.BusinessArea,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_CompanyCodeStdVH', element: 'CompanyCode' } } ]
@ObjectModel.foreignKey.association: '_CompanyCode'
ord.CompanyCode,
@ObjectModel.foreignKey.association: '_ControllingArea'
ord.ControllingArea,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProfitCenterStdVH', element: 'ProfitCenter' } } ]
ord.ProfitCenter,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_CostCenterStdVH', element: 'CostCenter' } } ]
ord.CostCenter,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_CostCenterStdVH', element: 'CostCenter' } } ]
ord.ResponsibleCostCenter,
@ObjectModel.foreignKey.association: '_CostElement'
ord.CostElement,
ord.CostingSheet,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_GLAccountStdVH', element: 'GLAccount' } } ]
@ObjectModel.foreignKey.association: '_GLAccount'
ord.GLAccount,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductCostCtrlgOrderStdVH', element: 'OrderID' } } ]
@ObjectModel.foreignKey.association: '_ProductCostCollector'
ord.ProductCostCollector,
@ObjectModel.foreignKey.association: '_ActualCostsCostingVariant'
ord.ActualCostsCostingVariant,
@ObjectModel.foreignKey.association: '_PlannedCostsCostingVariant'
ord.PlannedCostsCostingVariant,
@ObjectModel.foreignKey.association: '_ControllingObjectClass'
ord.ControllingObjectClass,
@ObjectModel.foreignKey.association: '_FunctionalArea'
ord.FunctionalArea,
ord.EventBasedPostingMethod,
// Dates
@Semantics.calendarItem.dtStart: true
ord.MfgOrderPlannedStartDate,
ord.MfgOrderPlannedStartTime,
@Semantics.calendarItem.dtEnd: true
ord.MfgOrderPlannedEndDate,
ord.MfgOrderPlannedEndTime,
ord.MfgOrderPlannedReleaseDate,
@Semantics.calendarItem.dtStart: true
ord.MfgOrderScheduledStartDate,
ord.MfgOrderScheduledStartTime,
@Semantics.calendarItem.dtEnd: true
ord.MfgOrderScheduledEndDate,
ord.MfgOrderScheduledEndTime,
ord.MfgOrderScheduledReleaseDate,
@Semantics.calendarItem.dtStart: true
ord.MfgOrderActualStartDate,
ord.MfgOrderActualStartTime,
@Semantics.calendarItem.dtEnd: true
ord.MfgOrderActualEndDate,
ord.MfgOrderActualReleaseDate,
ord.MfgOrderItemActualDeliveryDate as MfgOrderActualDeliveryDate,
@Semantics.calendarItem.dtEnd: true
ord.MfgOrderConfirmedEndDate,
ord.MfgOrderConfirmedEndTime,
@Semantics.businessDate.at: true
ord.MfgOrderTotalCommitmentDate,
// Delay Durations
@Semantics.calendarItem.duration: true
case ord.MfgOrderScheduledStartTime
when '240000' then // function dats_tims_to_tstmp does not work with time 24:00
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledStartDate, cast('235959' as tims), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
tstmp_current_utctimestamp(),'INITIAL') + 1
else
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledStartDate, ord.MfgOrderScheduledStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
tstmp_current_utctimestamp(),'INITIAL')
end as CurrentStartDelayInSeconds,
@Semantics.calendarItem.duration: true
case ord.MfgOrderScheduledEndTime
when '240000' then // function dats_tims_to_tstmp does not work with time 24:00
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledEndDate, cast('235959' as tims), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
tstmp_current_utctimestamp(),'INITIAL') + 1
else
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledEndDate, ord.MfgOrderScheduledEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
// tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledEndDate, cast('135955' as tims), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
tstmp_current_utctimestamp(),'INITIAL')
end as CurrentEndDelayInSeconds,
@Semantics.calendarItem.duration: true
case ord.MfgOrderScheduledStartTime
when '240000' then // function dats_tims_to_tstmp does not work with time 24:00
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledStartDate, cast('235959' as tims), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
dats_tims_to_tstmp( ord.MfgOrderActualStartDate, ord.MfgOrderActualStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'INITIAL') + 1
else
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledStartDate, ord.MfgOrderScheduledStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
dats_tims_to_tstmp( ord.MfgOrderActualStartDate, ord.MfgOrderActualStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'INITIAL')
end as ConfirmedStartDelayInSeconds,
@Semantics.calendarItem.duration: true
case ord.MfgOrderScheduledEndTime
when '240000' then // function dats_tims_to_tstmp does not work with time 24:00
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledEndDate, cast('235959' as tims), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
dats_tims_to_tstmp( ord.MfgOrderConfirmedEndDate, ord.MfgOrderConfirmedEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'INITIAL') + 1
else
tstmp_seconds_between(dats_tims_to_tstmp( ord.MfgOrderScheduledEndDate, ord.MfgOrderScheduledEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') ,
dats_tims_to_tstmp( ord.MfgOrderConfirmedEndDate, ord.MfgOrderConfirmedEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'INITIAL')
end as ConfirmedEndDelayInSeconds,
// Quantities and UoM
@Semantics.unitOfMeasure: true
ord.ProductionUnit,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.MfgOrderPlannedTotalQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.MfgOrderPlannedScrapQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
cast((ord.MfgOrderPlannedTotalQty - ord.MfgOrderPlannedScrapQty) as plannedyieldquantity) as MfgOrderPlannedYieldQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.MfgOrderConfirmedYieldQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.MfgOrderConfirmedScrapQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.MfgOrderConfirmedReworkQty,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.ExpectedDeviationQuantity,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@Aggregation.default: #SUM
ord.ActualDeliveredQuantity,
ord.ChangeToScheduledDatesIsMade,
// Fashion Manufacturing Fields
ord.MasterProductionOrder,
ord.ProductSeasonYear,
ord.ProductSeason,
ord.ProductCollection,
ord.ProductTheme,
// Associations
ord._MfgOrderCategory,
ord._MfgOrderType,
ord._MfgOrderLongText,
ord._MfgOrderImportance,
ord._OrderTypeDetails,
ord._SuperiorOrder,
ord._ReferenceOrder,
ord._LeadingOrder,
ord._CreatedByUser,
ord._LastChangedByUser,
ord._LongTextLanguage,
ord._ProductionUnit,
ord._Currency,
ord._OrderInternalID,
ord._BillOfOperationsMaterial,
ord._BillOfOperationsType,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_BillOfOperationsGroup2'
ord._BillOfOperationsGroup,
ord._BillOfOperationsGroup2,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_BillOfOperations2'
ord._BillOfOperations,
ord._BillOfOperations2,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_BillOfOperationsChangeState2'
ord._BillOfOperationsChangeState,
ord._BillOfOperationsChangeState2,
ord._BillOfOperationsApplication,
ord._BillOfOperationsUsage,
ord._ConfirmationGroup,
ord._Reservation,
ord._ProductionPlant as _Plant,
ord._PlanningPlant as _MRPPlant,
ord._Material,
ord._StorageLocation,
ord._InventoryUsabilityCode,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_Batch_2'
ord._Batch, // 0..* cardinality
ord._Batch_2, // 0..1 cardinality
ord._MRPArea,
ord._MRPController,
ord._ProductionSupervisor,
ord._ProductionSchedulingProfile,
ord._ResponsiblePlannerGroup,
_ProductionVersion,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_ProductPlant2'
ord._ProductPlant,
ord._ProductPlant2,
ord._CapacityRequirement,
ord._ChangeNumber,
ord._InspectionLot,
ord._SalesOrder,
ord._SalesOrderItem,
ord._SalesDocument,
ord._SalesDocumentItem,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_WBSElementBasicData2'
ord._WBSElement,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_WBSElementBasicData2'
ord._WBSElementBasicData,
ord._WBSElementBasicData2,
ord._PlannedOrder,
ord._BusinessArea,
ord._ProfitCenter,
ord._CostCenter,
ord._CostElement,
ord._ResponsibleCostCenter,
ord._CompanyCode,
ord._ControllingArea,
ord._GLAccount,
ord._ProductCostCollector,
ord._ControllingObjectClass,
ord._FunctionalArea,
ord._ActualCostsCostingVariant,
ord._PlannedCostsCostingVariant,
ord._BasicSchedulingType,
ord._ForecastSchedulingType,
_PlannedStartDate,
_PlannedEndDate,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_MfgOrderLongText'
ord._LongText,
ord._RFM_MasterProductOrder
};