I_CACHEMRPMFGORDER

CDS View

Cache MRP Manufacturing Orders

I_CACHEMRPMFGORDER is a CDS View in S/4HANA. Cache MRP Manufacturing Orders. It contains 61 fields. 2 CDS views read from this table.

CDS Views using this table (2)

ViewTypeJoinVDMDescription
C_CacheMRPMfgOrder view from CONSUMPTION MRP Manufacturing Orders
I_MRPManufacturingOrder view_entity from COMPOSITE MRP Manufacturing Order

Fields (61)

KeyField CDS FieldsUsed in Views
KEY Material Material 2
KEY MaterialShortageProfile MaterialShortageProfile 2
KEY MaterialShortageProfileCount MaterialShortageProfileCount 2
KEY MRPElement MRPElement 1
KEY MRPElementCategory MRPElementCategory 2
KEY MRPPlanningSegment MRPPlanningSegment 2
KEY MRPPlant MRPPlant 2
_CacheMaterial _CacheMaterial 1
_Material _Material 2
_MfgOrderType _MfgOrderType 1
_MRPPlant _MRPPlant 1
_Order _Order 1
_ProductionPlant _ProductionPlant 1
_ShortageDefinition _ShortageDefinition 1
_StorageLocation _StorageLocation 2
ComponentShortageDefinition ComponentShortageDefinition 2
DurnPlndStatusToTodayInWrkdays DurnPlndStatusToTodayInWrkdays 1
FactoryCalendar FactoryCalendar 2
LateSupplyLatenessWorkdays LateSupplyLatenessWorkdays 2
ManufacturingOrderIsLate ManufacturingOrderIsLate 2
ManufacturingOrderText ManufacturingOrderText 1
ManufacturingOrderType ManufacturingOrderType 2
MaterialBaseUnit MaterialBaseUnit 1
MaterialCompIsProcuredDirectly MaterialCompIsProcuredDirectly 1
MaterialGoodsReceiptDuration MaterialGoodsReceiptDuration 2
MaximumDelayDate MaximumDelayDate 1
MaximumDelayInDays MaximumDelayInDays 2
MaximumDelayInWorkdays MaximumDelayInWorkdays 2
MfgOrderActualReleaseDate MfgOrderActualReleaseDate 1
MfgOrderNextStatusPlannedDate MfgOrderNextStatusPlannedDate 2
MfgOrderPlannedEndDate MfgOrderPlannedEndDate 2
MfgOrderPlannedReleaseDate MfgOrderPlannedReleaseDate 2
MfgOrderPlannedStartDate MfgOrderPlannedStartDate 2
MfgOrderPlannedTotalQty MfgOrderPlannedTotalQty 2
MfgOrderProgressNextStatus MfgOrderProgressNextStatus 1
MfgOrderProgressStatus MfgOrderProgressStatus 2
MfgOrderScheduledEndDate MfgOrderScheduledEndDate 1
MfgOrderScheduledReleaseDate MfgOrderScheduledReleaseDate 1
MfgOrderScheduledStartDate MfgOrderScheduledStartDate 1
MfgOrderStatusActualDate MfgOrderStatusActualDate 2
MfgOrderStatusPlannedDate MfgOrderStatusPlannedDate 1
MRPArea MRPArea 2
MRPController MRPController 2
MRPElementAvailyOrRqmtDate MRPElementAvailyOrRqmtDate 1
MRPElementDelayedQuantity MRPElementDelayedQuantity 1
MRPElementOpenQuantity MRPElementOpenQuantity 2
NumberOfUncoveredDemandItems NumberOfUncoveredDemandItems 1
PlanningSegmentDocument PlanningSegmentDocument 1
PlanningSegmentDocumentItem PlanningSegmentDocumentItem 1
ProductionLine ProductionLine 2
ProductionPlant ProductionPlant 2
ProductionSupervisor ProductionSupervisor 2
ProductionUnit ProductionUnit 2
ProductionVersion ProductionVersion 2
ProductionVersionText ProductionVersionText 2
Reservation Reservation 1
StorageLocation StorageLocation 2
UnitOfMeasureDspNmbrOfDcmls UnitOfMeasureDspNmbrOfDcmls 1
UnitOfMeasureNumberOfDecimals UnitOfMeasureNumberOfDecimals 1
WBSElement WBSElement 1
WBSElementInternalID WBSElementInternalID 1
@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'
  )