I_CacheMRPMfgOrder

DDL: I_CACHEMRPMFGORDER SQL: ICACHEMRPMFGORD Type: view COMPOSITE Package: ODATA_PP_MRP

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)

SourceAliasJoin Type
I_ManufacturingOrder MfgOrder inner
I_MRPMfgOrderItem MfgOrderItem from
I_MRPPlanningSegment MRPPlanningSegment inner
I_MaterialShortageDefinition ShortageDefinition left_outer

Associations (6)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
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)

KeyFieldSource TableSource FieldDescription
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'
  )