I_CacheMRPMfgOrder
Cache MRP Manufacturing Orders
I_CacheMRPMfgOrder is a Composite CDS View that provides data about "Cache MRP Manufacturing Orders" in SAP S/4HANA. It reads from 4 data sources (I_ManufacturingOrder, I_MRPMfgOrderItem, I_MRPPlanningSegment, I_MaterialShortageDefinition) and exposes 69 fields with key fields MRPPlant, MRPElement, MRPElementItem, MRPPlanningSegment, MRPPlanningSegmentType. It has 6 associations to related views. Part of development package ODATA_PP_MRP.
Data Sources (4)
| Source | Alias | Join Type |
|---|---|---|
| I_ManufacturingOrder | MfgOrder | inner |
| I_MRPMfgOrderItem | MfgOrderItem | from |
| I_MRPPlanningSegment | MRPPlanningSegment | inner |
| I_MaterialShortageDefinition | ShortageDefinition | left_outer |
Associations (6)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..*] | P_MRPProdDemandAggregation | _ProdDemandAggr | MfgOrder.ManufacturingOrder = _ProdDemandAggr.SourceMRPElement and MfgOrderItem.MRPPlanningSegmentType = _ProdDemandAggr.MRPPlanningSegmentType and MfgOrderItem.MRPPlanningSegment = _ProdDemandAggr.MRPPlanningSegment and ShortageDefinition.MaterialShortageProfile = _ProdDemandAggr.MaterialShortageProfile and ( _ProdDemandAggr.SourceMRPElementCategory = 'BR' or _ProdDemandAggr.SourceMRPElementCategory = 'FE' ) |
| [0..1] | I_CacheSupplyDemandItem | _CacheSupDemItem | $projection.MaterialShortageProfile = _CacheSupDemItem.MaterialShortageProfile and $projection.MaterialShortageProfileCount = _CacheSupDemItem.NumberOfShortages and $projection.MRPElement = _CacheSupDemItem.MRPElement and $projection.MRPPlant = _CacheSupDemItem.MRPPlant and $projection.Material = _CacheSupDemItem.Material and $projection.MRPPlanningSegmentType = _CacheSupDemItem.MRPPlanningSegmentType and $projection.MRPPlanningSegment = _CacheSupDemItem.MRPPlanningSegment and ( _CacheSupDemItem.MRPElementCategory = 'BR' or _CacheSupDemItem.MRPElementCategory = 'FE' ) |
| [1..1] | I_CacheMaterial | _CacheMaterial | $projection.MRPPlant = _CacheMaterial.MRPPlant and $projection.Material = _CacheMaterial.Material and $projection.MRPArea = _CacheMaterial.MRPArea |
| [0..1] | I_WBSElementBasicData | _WBSElement | MfgOrderItem.WBSElementInternalID = _WBSElement.WBSElementInternalID and MfgOrderItem.InventorySpecialStockType = 'Q' |
| [0..1] | I_UnitOfMeasure | _UnitOfMeasure | $projection.MaterialBaseUnit = _UnitOfMeasure.UnitOfMeasure |
| [0..1] | I_MaterialShortageDefinition | _ShortageDefinition | $projection.MaterialShortageProfile = _ShortageDefinition.MaterialShortageProfile and _ShortageDefinition.HasMfgOrderComponentCheckRule = 'X' |
Annotations (9)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | ICACHEMRPMFGORD | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| EndUserText.label | Cache MRP Manufacturing Orders | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| VDM.viewType | #COMPOSITE | view |
Fields (69)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | MRPPlant | I_MRPMfgOrderItem | MRPPlant | |
| KEY | MRPElement | I_MRPMfgOrderItem | OrderID | |
| KEY | MRPElementItem | |||
| KEY | MRPPlanningSegment | I_MRPPlanningSegment | MRPPlanningSegment | |
| KEY | MRPPlanningSegmentType | I_MRPPlanningSegment | MRPPlanningSegmentType | |
| KEY | MaterialShortageProfile | I_MaterialShortageDefinition | MaterialShortageProfile | |
| KEY | MaterialShortageProfileCount | I_MaterialShortageDefinition | MaterialShortageProfileCount | |
| KEY | Material | I_MRPMfgOrderItem | Material | |
| MRPController | I_ManufacturingOrder | MRPController | ||
| FactoryCalendar | _CacheMaterial | FactoryCalendar | ||
| ProductionPlant | I_MRPMfgOrderItem | ProductionPlant | ||
| MRPArea | I_MRPMfgOrderItem | MRPArea | ||
| StorageLocation | I_MRPMfgOrderItem | StorageLocation | ||
| ManufacturingOrderType | I_ManufacturingOrder | ManufacturingOrderType | ||
| ManufacturingOrderText | I_ManufacturingOrder | ManufacturingOrderText | ||
| MaterialProcurementCategory | _CacheMaterial | MaterialProcurementCategory | ||
| LateSupplyLatenessWorkdays | ||||
| NumberOfUncoveredDemandItems | _ProdDemandAggr | NumberOfUncoveredDemandItems | ||
| MRPElementOpenQuantity | ||||
| MaximumUncoveredQuantity | _ProdDemandAggr | MaximumUncoveredQuantity | ||
| MaximumDelayedQuantity | _ProdDemandAggr | MaximumDelayedQuantity | ||
| MfgOrderPlannedTotalQty | I_ManufacturingOrder | MfgOrderPlannedTotalQty | ||
| MRPElementDelayedQuantity | ||||
| MfgOrderActualStartDate | I_ManufacturingOrder | MfgOrderActualStartDate | ||
| MfgOrderActualEndDate | I_ManufacturingOrder | MfgOrderActualEndDate | ||
| MfgOrderActualReleaseDate | I_ManufacturingOrder | MfgOrderActualReleaseDate | ||
| MfgOrderConfirmedEndDate | I_ManufacturingOrder | MfgOrderConfirmedEndDate | ||
| MfgOrderScheduledStartDate | I_ManufacturingOrder | MfgOrderScheduledStartDate | ||
| MfgOrderScheduledEndDate | I_ManufacturingOrder | MfgOrderScheduledEndDate | ||
| MfgOrderScheduledReleaseDate | I_ManufacturingOrder | MfgOrderScheduledReleaseDate | ||
| MfgOrderCreationDate | I_ManufacturingOrder | MfgOrderCreationDate | ||
| MfgOrderPlannedStartDate | I_ManufacturingOrder | MfgOrderPlannedStartDate | ||
| MfgOrderPlannedEndDate | I_ManufacturingOrder | MfgOrderPlannedEndDate | ||
| MRPElementAvailyOrRqmtDate | I_MRPMfgOrderItem | PlannedEndDate | ||
| MfgOrderPlannedReleaseDate | I_ManufacturingOrder | MfgOrderPlannedReleaseDate | ||
| MaterialReplnmtLeadDurnEndDate | _CacheMaterial | MaterialReplnmtLeadDurnEndDate | ||
| MaximumDelayDate | _CacheSupDemItem | MaximumDelayDate | ||
| ProductionLine | ||||
| ProductionVersion | I_ManufacturingOrder | ProductionVersion | ||
| ProductionVersionText | ||||
| ProductionSupervisor | I_ManufacturingOrder | ProductionSupervisor | ||
| OrderIsReleased | I_MRPMfgOrderItem | OrderIsReleased | ||
| ComponentShortageDefinition | ||||
| MaterialGoodsReceiptDuration | ||||
| DurnPlndStatusToTodayInWrkdays | ||||
| ProductionUnit | I_ManufacturingOrder | ProductionUnit | ||
| UnitOfMeasureNumberOfDecimals | _UnitOfMeasure | UnitOfMeasureNumberOfDecimals | ||
| UnitOfMeasureDspNmbrOfDcmls | _UnitOfMeasure | UnitOfMeasureDspNmbrOfDcmls | ||
| MfgOrderItemQtyToBaseQtyDnmntr | I_MRPMfgOrderItem | MfgOrderItemQtyToBaseQtyDnmntr | ||
| MfgOrderItemQtyToBaseQtyNmrtr | I_MRPMfgOrderItem | MfgOrderItemQtyToBaseQtyNmrtr | ||
| WBSElementInternalID | ||||
| InventorySpecialStockType | I_MRPMfgOrderItem | InventorySpecialStockType | ||
| MaterialCompIsProcuredDirectly | ||||
| ProjectendasProjectNetwork | ||||
| WBSElement | _WBSElement | WBSElementExternalID | ||
| PlanningSegmentDocument | I_MRPPlanningSegment | PlanningSegmentDocument | ||
| PlanningSegmentDocumentItem | I_MRPPlanningSegment | PlanningSegmentDocumentItem | ||
| Reservation | I_ManufacturingOrder | Reservation | ||
| Associations_CacheSupDemItem | ||||
| _CacheMaterial | _CacheMaterial | |||
| _Order | I_MRPMfgOrderItem | _Order | ||
| _MRPPlant | I_MRPMfgOrderItem | _MRPPlant | ||
| _Material | I_MRPMfgOrderItem | _Material | ||
| _MfgOrderType | I_ManufacturingOrder | _MfgOrderType | ||
| _ProductionPlant | I_MRPMfgOrderItem | _ProductionPlant | ||
| _StorageLocation | I_MRPMfgOrderItem | _StorageLocation | ||
| _UnitOfMeasure | _UnitOfMeasure | |||
| _WBSElement | _WBSElement | |||
| _ShortageDefinition | _ShortageDefinition |
@AbapCatalog.sqlViewName: 'ICACHEMRPMFGORD'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'Cache MRP Manufacturing Orders'
@AccessControl: {authorizationCheck: #CHECK,
personalData.blocking: #REQUIRED
}
@ObjectModel: {
usageType: {serviceQuality: #C, sizeCategory: #XL, dataClass: #MIXED }
}
@VDM.viewType: #COMPOSITE
define view I_CacheMRPMfgOrder
as select from I_MRPMfgOrderItem as MfgOrderItem
inner join I_ManufacturingOrder as MfgOrder on MfgOrderItem.OrderID = MfgOrder.ManufacturingOrder
inner join I_MRPPlanningSegment as MRPPlanningSegment on MfgOrderItem.MRPPlant = MRPPlanningSegment.MRPPlant
and MfgOrderItem.Material = MRPPlanningSegment.Material
and MfgOrderItem.MRPArea = MRPPlanningSegment.MRPArea
and MfgOrderItem.MRPPlanningSegmentType = MRPPlanningSegment.MRPPlanningSegmentType
and MfgOrderItem.MRPPlanningSegment = MRPPlanningSegment.MRPPlanningSegment
left outer join I_MaterialShortageDefinition as ShortageDefinition on MRPPlanningSegment.MaterialShortageProfile = ShortageDefinition.MaterialShortageProfile
association [0..*] to P_MRPProdDemandAggregation as _ProdDemandAggr on MfgOrder.ManufacturingOrder = _ProdDemandAggr.SourceMRPElement
and MfgOrderItem.MRPPlanningSegmentType = _ProdDemandAggr.MRPPlanningSegmentType
and MfgOrderItem.MRPPlanningSegment = _ProdDemandAggr.MRPPlanningSegment
and ShortageDefinition.MaterialShortageProfile = _ProdDemandAggr.MaterialShortageProfile
// and ShortageDefinition.MaterialShortageProfileCount = _ProdDemandAggr.MaterialShortageProfileCount
and (
_ProdDemandAggr.SourceMRPElementCategory = 'BR'
or _ProdDemandAggr.SourceMRPElementCategory = 'FE'
)
association [0..1] to I_CacheSupplyDemandItem as _CacheSupDemItem on $projection.MaterialShortageProfile = _CacheSupDemItem.MaterialShortageProfile
and $projection.MaterialShortageProfileCount = _CacheSupDemItem.NumberOfShortages
and $projection.MRPElement = _CacheSupDemItem.MRPElement
and $projection.MRPPlant = _CacheSupDemItem.MRPPlant
and $projection.Material = _CacheSupDemItem.Material
and $projection.MRPPlanningSegmentType = _CacheSupDemItem.MRPPlanningSegmentType
and $projection.MRPPlanningSegment = _CacheSupDemItem.MRPPlanningSegment
and (
_CacheSupDemItem.MRPElementCategory = 'BR'
or _CacheSupDemItem.MRPElementCategory = 'FE'
)
association [1..1] to I_CacheMaterial as _CacheMaterial on $projection.MRPPlant = _CacheMaterial.MRPPlant
and $projection.Material = _CacheMaterial.Material
and $projection.MRPArea = _CacheMaterial.MRPArea
association [0..1] to I_WBSElementBasicData as _WBSElement on MfgOrderItem.WBSElementInternalID = _WBSElement.WBSElementInternalID
and MfgOrderItem.InventorySpecialStockType = 'Q'
association [0..1] to I_UnitOfMeasure as _UnitOfMeasure on $projection.MaterialBaseUnit = _UnitOfMeasure.UnitOfMeasure
association [0..1] to I_MaterialShortageDefinition as _ShortageDefinition on $projection.MaterialShortageProfile = _ShortageDefinition.MaterialShortageProfile
and _ShortageDefinition.HasMfgOrderComponentCheckRule = 'X'
{
key MfgOrderItem.MRPPlant,
key MfgOrderItem.OrderID as MRPElement,
key cast(MfgOrderItem.OrderItem as abap.char( 4 )) as MRPElementItem,
key cast(case MfgOrder.ManufacturingOrderCategory
when '10' then 'FE'
when '40' then 'BR'
else ''
end as mrpelementcategory preserving type) as MRPElementCategory,
key MRPPlanningSegment.MRPPlanningSegment,
key MRPPlanningSegment.MRPPlanningSegmentType,
key ShortageDefinition.MaterialShortageProfile,
key ShortageDefinition.MaterialShortageProfileCount,
key MfgOrderItem.Material,
MfgOrder.MRPController,
_CacheMaterial.FactoryCalendar,
MfgOrderItem.ProductionPlant,
MfgOrderItem.MRPArea,
MfgOrderItem.StorageLocation,
MfgOrder.ManufacturingOrderType,
MfgOrder.ManufacturingOrderText,
_CacheMaterial.MaterialProcurementCategory,
cast(_CacheSupDemItem.MaximumDelayInWorkdays as materialdelayinworkdays preserving type) as LateSupplyLatenessWorkdays, //=LatenessDurationInWorkDay=MaterialDelay
cast(case coalesce(_ProdDemandAggr.MaximumUncoveredQuantity, 0)
when 0 then _ProdDemandAggr.MaximumDelayInDays
else 999
end as maximumdelayindays preserving type) as MaximumDelayInDays,
cast(case coalesce(_ProdDemandAggr.MaximumUncoveredQuantity, 0)
when 0 then _ProdDemandAggr.MaximumDelayInWorkdays
else 999
end as maximumdelayinworkdays preserving type) as MaximumDelayInWorkdays,
cast(case coalesce(_CacheSupDemItem.MRPElementDelayedQuantity, 0)
when 0 then ''
else 'X'
end as manufacturingorderislate preserving type) as ManufacturingOrderIsLate,
_ProdDemandAggr.NumberOfUncoveredDemandItems,
@Semantics.quantity.unitOfMeasure: 'ProductionUnit'
@DefaultAggregation: #SUM
cast(MfgOrderItem.ItemQuantity - MfgOrderItem.MfgOrderItemGoodsReceiptQty - MfgOrderItem.MfgOrderItemActualDeviationQty as mrpelementopenquantity) as MRPElementOpenQuantity,
_ProdDemandAggr.MaximumUncoveredQuantity,
_ProdDemandAggr.MaximumDelayedQuantity,
MfgOrder.MfgOrderPlannedTotalQty,
coalesce(_CacheSupDemItem.MRPElementDelayedQuantity, 0) as MRPElementDelayedQuantity,
// _CacheSupDemItem.MRPElementDelayedQuantity,
MfgOrder.MfgOrderActualStartDate,
MfgOrder.MfgOrderActualEndDate,
MfgOrder.MfgOrderActualReleaseDate,
MfgOrder.MfgOrderConfirmedEndDate,
MfgOrder.MfgOrderScheduledStartDate,
MfgOrder.MfgOrderScheduledEndDate,
MfgOrder.MfgOrderScheduledReleaseDate,
MfgOrder.MfgOrderCreationDate,
MfgOrder.MfgOrderPlannedStartDate,
MfgOrder.MfgOrderPlannedEndDate,
MfgOrderItem.PlannedEndDate as MRPElementAvailyOrRqmtDate,
MfgOrder.MfgOrderPlannedReleaseDate,
_CacheMaterial.MaterialReplnmtLeadDurnEndDate,
_CacheSupDemItem.MaximumDelayDate,
MfgOrder._ProductionVersion.ProductionLine,
MfgOrder.ProductionVersion,
MfgOrder._ProductionVersion.ProductionVersionText,
MfgOrder.ProductionSupervisor,
//MfgOrder._ProductionVersion.Plant as ProductionVersionPlant,
MfgOrderItem.OrderIsReleased,
concat( _ShortageDefinition.MaterialShortageProfile, cast(_ShortageDefinition.MaterialShortageProfileCount as abap.char(3))) as ComponentShortageDefinition,
case
when MfgOrder.MfgOrderActualStartDate <> '00000000'
then 'X'
else ''
end as MfgOrderProgressHasStarted,
case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'
then 'X'
else ''
end as MfgOrderProgressHasEnded,
-- Progress Status
cast(case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'//afko.gltri instead of getri
then '4' //'none'
when MfgOrder.MfgOrderActualStartDate <> '00000000'//afko.gstri
then '3' //'finish'
when MfgOrder.MfgOrderActualReleaseDate <> '00000000'//afko.ftrmi
then '2' //'start'
else '1' //'release'
end as mfgorderprogressstatus) as MfgOrderProgressStatus,
-- Next Progress Status
case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'
then '0' //'none'
when MfgOrder.MfgOrderActualStartDate <> '00000000'
then '4' //'finish'
when MfgOrder.MfgOrderActualReleaseDate <> '00000000'
then '3' //'start'
else '2' //'release'
end as MfgOrderProgressNextStatus,
-- Status Date
cast(case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'
then MfgOrder.MfgOrderConfirmedEndDate
when MfgOrder.MfgOrderActualStartDate <> '00000000'
then MfgOrder.MfgOrderActualStartDate
when MfgOrder.MfgOrderActualReleaseDate <> '00000000'
then MfgOrder.MfgOrderActualReleaseDate
else MfgOrder.MfgOrderCreationDate
end as mfgorderstatusactualdate preserving type) as MfgOrderStatusActualDate,
-- Next Status Date
cast(case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'
then '00000000' //??????
when MfgOrder.MfgOrderActualStartDate <> '00000000'
then MfgOrder.MfgOrderPlannedEndDate //afko.gltrp
when MfgOrder.MfgOrderActualReleaseDate <> '00000000'
then MfgOrder.MfgOrderPlannedStartDate //afko.gstrp
else MfgOrder.MfgOrderScheduledReleaseDate //afko.ftrms
end as mfgordernextstatusdate preserving type) as MfgOrderNextStatusPlannedDate,
-- Planned Status Date
cast(case
when MfgOrder.MfgOrderConfirmedEndDate <> '00000000'
then MfgOrder.MfgOrderPlannedEndDate
when MfgOrder.MfgOrderActualStartDate <> '00000000'
then MfgOrder.MfgOrderPlannedStartDate
when MfgOrder.MfgOrderActualReleaseDate <> '00000000'
then MfgOrder.MfgOrderScheduledReleaseDate
else MfgOrder.MfgOrderCreationDate //aufk.erdat
end as mfgorderstatusplanneddate preserving type) as MfgOrderStatusPlannedDate,
-- Durations
MfgOrderItem.MaterialGoodsReceiptDuration,
@ObjectModel: {
virtualElement: true,
readOnly: true,
virtualElementCalculatedBy: 'ABAP:CL_PP_MRP_MFG_ORDER_EXIT'
}
cast( 0 as durnplndstatustotodayinwrkdays) as DurnPlndStatusToTodayInWrkdays,
-- Units
cast(MfgOrderItem.BaseUnit as msehi preserving type ) as MaterialBaseUnit,
@Semantics.unitOfMeasure:true
MfgOrder.ProductionUnit,
_UnitOfMeasure.UnitOfMeasureNumberOfDecimals, //TargetQuantityUnitDcmls, for rounding
_UnitOfMeasure.UnitOfMeasureDspNmbrOfDcmls, //TargetQuantityUnitDisplayDcmls
MfgOrderItem.MfgOrderItemQtyToBaseQtyDnmntr,
MfgOrderItem.MfgOrderItemQtyToBaseQtyNmrtr,
-- Segment fields
MfgOrderItem.WBSElementInternalID,
MfgOrderItem.InventorySpecialStockType,
MRPPlanningSegment._Reservation.MaterialCompIsProcuredDirectly,
case
when MRPPlanningSegment.MRPPlanningSegmentType = '24'
then
case
when MRPPlanningSegment._Reservation.ReferenceOrder <> ''
then MRPPlanningSegment._Reservation.ReferenceOrder
else
MRPPlanningSegment._Reservation.PlannedOrder
end
else
_WBSElement._Project.Project
end as ProjectNetwork,
_WBSElement.WBSElementExternalID as WBSElement,
MRPPlanningSegment.PlanningSegmentDocument,
MRPPlanningSegment.PlanningSegmentDocumentItem,
MfgOrder.Reservation,
-- Associations
_CacheSupDemItem,
_CacheMaterial,
MfgOrderItem._Order,
MfgOrderItem._MRPPlant,
MfgOrderItem._Material,
MfgOrder._MfgOrderType,
MfgOrderItem._ProductionPlant,
MfgOrderItem._StorageLocation,
_UnitOfMeasure,
_WBSElement,
_ShortageDefinition
}
where
(
MfgOrderItem.OrderCategory = '10'
or MfgOrderItem.OrderCategory = '40'
)
and MfgOrderItem.IsCompletelyDelivered = ''
and MfgOrderItem.OrderItemIsNotRelevantForMRP = ''
and(
MRPPlanningSegment.MRPPlanningSegmentType = '02'
or MRPPlanningSegment.MRPPlanningSegmentType = '00'
or MRPPlanningSegment.MRPPlanningSegmentType = '20'
or MRPPlanningSegment.MRPPlanningSegmentType = '22'
or MRPPlanningSegment.MRPPlanningSegmentType = '24'
)
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA