I_PlannedOrderComponent

DDL: I_PLANNEDORDERCOMPONENT SQL: IPPPLNDORDCOMP Type: view BASIC

Planned Order Component

I_PlannedOrderComponent is a Basic CDS View (Dimension) that provides data about "Planned Order Component" in SAP S/4HANA. It reads from 2 data sources (I_PlannedOrder, resb) and exposes 62 fields with key fields Reservation, ReservationItem, RecordType. It has 62 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_PlannedOrder plaf inner
resb resb from

Associations (62)

CardinalityTargetAliasCondition
[1..1] I_ReservationDocumentHeader _Reservation $projection.Reservation = _Reservation.Reservation
[1..1] I_ReservationDocumentItem _ReservationItem $projection.Reservation = _ReservationItem.Reservation and $projection.ReservationItem = _ReservationItem.ReservationItem and $projection.RecordType = _ReservationItem.RecordType
[0..1] I_ReservationDocRecordType _ReservationDocRecordType $projection.RecordType = _ReservationDocRecordType.RecordType
[1..1] I_PlannedOrderType _PlannedOrderType $projection.PlannedOrderType = _PlannedOrderType.PlannedOrderType
[1..1] I_MaterialRequirementType _RequirementType $projection.RequirementType = _RequirementType.RequirementType
[1..1] I_MaterialGroup _MaterialGroup $projection.MaterialGroup = _MaterialGroup.MaterialGroup
[1..1] I_Material _Material $projection.Material = _Material.Material
[1..1] I_Product _Product $projection.Material = _Product.Product
[1..*] I_ProductUnitsOfMeasure _ProductUnitsOfMeasure $projection.Material = _ProductUnitsOfMeasure.Product
[1..1] I_Plant _Plant $projection.Plant = _Plant.Plant
[1..1] I_ProductPlant _ProductPlant $projection.Material = _ProductPlant.Product and $projection.Plant = _ProductPlant.Plant
[1..1] I_ProductPlantBasic _ProductPlant2 $projection.Material = _ProductPlant2.Product and $projection.Plant = _ProductPlant2.Plant
[1..1] I_ProductSupplyPlanning _ProductSupplyPlanning $projection.Material = _ProductSupplyPlanning.Product and $projection.Plant = _ProductSupplyPlanning.Plant
[0..1] I_ProductStorageLocation _ProductStorageLocation $projection.Material = _ProductStorageLocation.Product and $projection.Plant = _ProductStorageLocation.Plant and $projection.StorageLocation = _ProductStorageLocation.StorageLocation
[0..1] I_ProductStorageLocationBasic _ProductStorageLocation2 $projection.Material = _ProductStorageLocation2.Product and $projection.Plant = _ProductStorageLocation2.Plant and $projection.StorageLocation = _ProductStorageLocation2.StorageLocation
[0..1] I_ProductPlantMRP _ProductPlantMRPArea $projection.Material = _ProductPlantMRPArea.Product and $projection.Plant = _ProductPlantMRPArea.Plant and $projection.MRPArea = _ProductPlantMRPArea.MRPArea
[0..1] I_MRPController _MRPController $projection.Plant = _MRPController.Plant and $projection.MRPController = _MRPController.MRPController
[0..1] I_MRPArea _MRPArea $projection.MRPArea = _MRPArea.MRPArea
[0..1] I_ProductionSupervisor _ProductionSupervisor $projection.Plant = _ProductionSupervisor.Plant and $projection.ProductionSupervisor = _ProductionSupervisor.ProductionSupervisor
[0..1] I_ProductionVersion _ProductionVersion $projection.Material = _ProductionVersion.Material and $projection.Plant = _ProductionVersion.Plant and $projection.ProductionVersion = _ProductionVersion.ProductionVersion
[0..1] I_SalesOrder _SalesOrder $projection.SalesOrder = _SalesOrder.SalesOrder
[0..1] I_SalesOrderItem _SalesOrderItem $projection.SalesOrder = _SalesOrderItem.SalesOrder and $projection.SalesOrderItem = _SalesOrderItem.SalesOrderItem
[0..1] I_WBSElementBasicData _WBSElement $projection.WBSElementInternalID = _WBSElement.WBSElementInternalID
[0..1] I_WBSElementBasicData _WBSElementBasic $projection.WBSElementInternalID_2 = _WBSElementBasic.WBSElementInternalID
[0..1] I_BOMExplosionDate _BOMExplosion $projection.BOMExplosion = _BOMExplosion.BOMExplosionDateID
[0..1] I_BillOfMaterialItemBasic _BillOfMaterialItem $projection.BillOfMaterialCategory = _BillOfMaterialItem.BillOfMaterialCategory and $projection.BillOfMaterialInternalID = _BillOfMaterialItem.BillOfMaterial and $projection.BOMItem = _BillOfMaterialItem.BillOfMaterialItemNodeNumber and $projection.BOMItemInternalChangeCount = _BillOfMaterialItem.BOMItemInternalChangeCount
[0..1] I_BillOfMaterialItemBasic _BillOfMaterialItemBasic $projection.BillOfMaterialCategory = _BillOfMaterialItemBasic.BillOfMaterialCategory and $projection.BillOfMaterialInternalID_2 = _BillOfMaterialItemBasic.BillOfMaterial and $projection.BOMItem = _BillOfMaterialItemBasic.BillOfMaterialItemNodeNumber and $projection.BOMItemInternalChangeCount = _BillOfMaterialItemBasic.BOMItemInternalChangeCount
[0..1] I_BillOfMaterialItemCategory _BOMItemCategory $projection.BOMItemCategory = _BOMItemCategory.BillOfMaterialItemCategory
[0..1] I_PurchasingInfoRecordApi01 _PurchasingInfoRecord $projection.PurchasingInfoRecord = _PurchasingInfoRecord.PurchasingInfoRecord
[0..1] I_PurchasingGroup _PurchasingGroup $projection.PurchasingGroup = _PurchasingGroup.PurchasingGroup
[0..1] I_PurchaseOrderAPI01 _PurchaseOrder $projection.PurchaseOrder = _PurchaseOrder.PurchaseOrder
[0..1] I_PurchaseOrderItemAPI01 _PurchaseOrderItem $projection.PurchaseOrder = _PurchaseOrderItem.PurchaseOrder and $projection.PurchaseOrderItem = _PurchaseOrderItem.PurchaseOrderItem
[0..1] I_Purchaserequisition _PurchaseRequisition $projection.PurchaseRequisition = _PurchaseRequisition.PurchaseRequisition
[0..1] I_PurchaseRequisition_Api01 _PurchaseRequisitionItem $projection.PurchaseRequisition = _PurchaseRequisitionItem.PurchaseRequisition and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem.PurchaseRequisitionItem
[0..1] I_PurchaseRequisitionItemAPI01 _PurchaseRequisitionItem2 $projection.PurchaseRequisition = _PurchaseRequisitionItem2.PurchaseRequisition and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem2.PurchaseRequisitionItem
[0..1] I_Supplier _Supplier $projection.Supplier = _Supplier.Supplier
[0..1] I_SupplierCompanyByPlant _SupplierCompanyByPlant $projection.Plant = _SupplierCompanyByPlant.Plant and $projection.Supplier = _SupplierCompanyByPlant.Supplier
[0..1] I_StorageLocation _StorageLocation $projection.Plant = _StorageLocation.Plant and $projection.StorageLocation = _StorageLocation.StorageLocation
[0..*] I_Batch _Batch $projection.Material = _Batch.Material and $projection.Batch = _Batch.Batch
[0..1] I_Batch _Batch_2 $projection.Material = _Batch_2.Material and $projection.Plant = _Batch_2.Plant and $projection.Batch = _Batch_2.Batch
[1..1] I_DebitCreditCode _DebitCreditCode $projection.DebitCreditCode = _DebitCreditCode.DebitCreditCode
[1..1] I_GoodsMovementType _GoodsMovementType $projection.GoodsMovementType = _GoodsMovementType.GoodsMovementType
[1..1] I_InventorySpecialStockType _InventorySpecialStockType $projection.InventorySpecialStockType = _InventorySpecialStockType.InventorySpecialStockType
[0..1] I_InvtrySpecialStockValnType _InventorySpecialStockValnType $projection.InventorySpecialStockValnType = _InventorySpecialStockValnType.InventorySpecialStockValnType
[0..1] I_ConsumptionPosting _ConsumptionPosting $projection.ConsumptionPosting = _ConsumptionPosting.ConsumptionPosting
[0..1] I_ProductionSupplyArea _SupplyArea $projection.Plant = _SupplyArea.Plant and $projection.SupplyArea = _SupplyArea.ProductionSupplyArea
[0..1] I_Warehouse _Warehouse $projection.Warehouse = _Warehouse.Warehouse
[0..1] I_MatlCompDiscontinuationType _MatlCompDiscontinuationType $projection.MatlCompDiscontinuationType = _MatlCompDiscontinuationType.MatlCompDiscontinuationType
[0..1] I_MatlCompProvisionType _ProvisionType $projection.MaterialProvisionType = _ProvisionType.MaterialProvisionType
[0..1] I_MatlCompSparePartType _SparePartType $projection.MatlComponentSparePartType = _SparePartType.MatlComponentSparePartType
[0..1] I_BusinessArea _BusinessArea $projection.BusinessArea = _BusinessArea.BusinessArea
[0..1] I_AccountAssignmentCategory _AccountAssignmentCategory $projection.AccountAssignmentCategory = _AccountAssignmentCategory.AccountAssignmentCategory
[0..1] I_CommitmentItemShortID _CommitmentItemShortID $projection.CommitmentItemShortID = _CommitmentItemShortID.CommitmentItemShortID
[0..1] I_Product _Assembly $projection.Assembly = _Assembly.Product
[0..1] I_Product _FollowUpMaterial $projection.FollowUpMaterial = _FollowUpMaterial.Product
[1..1] I_UnitOfMeasure _BaseUnit $projection.BaseUnit = _BaseUnit.UnitOfMeasure
[1..1] I_UnitOfMeasure _EntryUnit $projection.EntryUnit = _EntryUnit.UnitOfMeasure
[0..1] I_UnitOfMeasure _OpLeadTimeOffsetUnit $projection.OperationLeadTimeOffsetUnit = _OpLeadTimeOffsetUnit.UnitOfMeasure
[0..1] I_Currency _Currency $projection.Currency = _Currency.Currency
[0..1] I_ChangeMaster _ChangeNumber $projection.ChangeNumber = _ChangeNumber.ChangeNumber -- to root
[1..1] I_PlannedOrder _PlannedOrder $projection.PlannedOrder = _PlannedOrder.PlannedOrder -- to extension
[1..1] E_ReservationDocumentItem _Extension $projection.Reservation = _Extension.Reservation and $projection.ReservationItem = _Extension.ReservationItem and $projection.RecordType = _Extension.RecordType

Annotations (19)

NameValueLevelField
AbapCatalog.sqlViewName IPPPLNDORDCOMP view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #MANDATORY view
Analytics.dataCategory #DIMENSION view
Analytics.dataExtraction.enabled true view
Analytics.internalName #LOCAL view
ClientHandling.algorithm #SESSION_VARIABLE view
ClientHandling.type #CLIENT_DEPENDENT view
Metadata.allowExtensions true view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.modelingPattern #NONE view
ObjectModel.representativeKey ReservationItem view
ObjectModel.sapObjectNodeType.name PlannedOrderComponent view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
VDM.viewType #BASIC view
EndUserText.label Planned Order Component view

Fields (62)

KeyFieldSource TableSource FieldDescription
KEY Reservation resb rsnum
KEY ReservationItem
KEY RecordType
PlannedOrder I_PlannedOrder PlannedOrder
PlannedOrderType I_PlannedOrder PlannedOrderType
MatlCompRequirementDate
MatlCompRequirementTime
ReservationIsFinallyIssued resb kzear
MatlCompIsMarkedForDeletion
MaterialComponentIsMissing resb xfehl
IsBulkMaterialComponent resb schgt
MatlCompIsMarkedForBackflush resb rgekz
MatlCompIsTextItem resb txtps
MatlCompIsConfigurable resb kfpos
RequirementType
MaterialGroup resb matkl
Material resb matnr
Plant resb werks
MRPArea I_PlannedOrder MRPArea
MRPController I_PlannedOrder MRPController
ProductionSupervisor I_PlannedOrder ProductionSupervisor
ProductionVersion I_PlannedOrder ProductionVersion
pbdnrasRequirementPlan
SalesOrder
SalesOrderItem
WBSElementInternalID
WBSElementInternalID_2
ProductConfiguration resb cuobj
ChangeNumber
SortField resb sortf
MatlCompFreeDefinedAttribute resb sortf
MaterialRevisionLevel
MaterialPlanningRelevance
BillOfMaterialCategory
BillOfMaterialInternalID resb stlnr
BillOfMaterialInternalID_2
BillOfMaterialVariant resb stlal
BOMItem
BOMItemInternalChangeCount resb stpoz
BOMItemCategory
BillOfMaterialItemNumber resb posnr
BillOfMaterialItemNumber_2
BOMItemDescription resb potx1
BOMItemText2 resb potx2
BOMExplosion
PurchasingGroup
Supplier resb lifnr
DeliveryDurationInDays
GoodsMovementIsAllowed resb xwaok
StorageLocation
Batch resb charg
DebitCreditCode
GoodsMovementType resb bwart
InventorySpecialStockType
InventorySpecialStockValnType
ConsumptionPosting
SupplyArea
MaterialStaging resb berkz
Warehouse resb lgnum
StorageType resb lgtyp
StorageBin resb lgpla
BusinessArea resb gsber
@AbapCatalog.sqlViewName: 'IPPPLNDORDCOMP'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@AccessControl.privilegedAssociations: ['_MRPController', '_ProductionSupervisor']
@Analytics.dataCategory: #DIMENSION
@Analytics.dataExtraction.enabled: true
@Analytics.internalName: #LOCAL
@ClientHandling.algorithm: #SESSION_VARIABLE
@ClientHandling.type: #CLIENT_DEPENDENT
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.modelingPattern: #NONE
@ObjectModel.supportedCapabilities: [#SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #EXTRACTION_DATA_SOURCE, #ANALYTICAL_DIMENSION, #CDS_MODELING_ASSOCIATION_TARGET]
@ObjectModel.representativeKey: 'ReservationItem'
@ObjectModel.sapObjectNodeType.name: 'PlannedOrderComponent'
@ObjectModel.usageType: {serviceQuality: #B, sizeCategory: #L, dataClass: #TRANSACTIONAL}
@VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
@VDM.viewType: #BASIC
@EndUserText.label: 'Planned Order Component'

/*+[hideWarning] { "IDS" : [ "CALCULATED_FIELD_CHECK" ]  } */
define view I_PlannedOrderComponent
  as select from resb         as resb
    inner join I_PlannedOrder as plaf on resb.plnum = plaf.PlannedOrder

  association [1..1] to I_ReservationDocumentHeader    as _Reservation                 on  $projection.Reservation = _Reservation.Reservation
  association [1..1] to I_ReservationDocumentItem      as _ReservationItem             on  $projection.Reservation     = _ReservationItem.Reservation
                                                                                       and $projection.ReservationItem = _ReservationItem.ReservationItem
                                                                                       and $projection.RecordType      = _ReservationItem.RecordType
  association [0..1] to I_ReservationDocRecordType     as _ReservationDocRecordType    on  $projection.RecordType  = _ReservationDocRecordType.RecordType
  association [1..1] to I_PlannedOrderType             as _PlannedOrderType            on  $projection.PlannedOrderType = _PlannedOrderType.PlannedOrderType
  association [1..1] to I_MaterialRequirementType      as _RequirementType             on  $projection.RequirementType = _RequirementType.RequirementType  
  association [1..1] to I_MaterialGroup                as _MaterialGroup               on  $projection.MaterialGroup = _MaterialGroup.MaterialGroup
  association [1..1] to I_Material                     as _Material                    on  $projection.Material = _Material.Material
  association [1..1] to I_Product                      as _Product                     on  $projection.Material = _Product.Product
  association [1..*] to I_ProductUnitsOfMeasure        as _ProductUnitsOfMeasure       on  $projection.Material = _ProductUnitsOfMeasure.Product
  association [1..1] to I_Plant                        as _Plant                       on  $projection.Plant = _Plant.Plant
  association [1..1] to I_ProductPlant                 as _ProductPlant                on  $projection.Material = _ProductPlant.Product
                                                                                       and $projection.Plant    = _ProductPlant.Plant
  association [1..1] to I_ProductPlantBasic            as _ProductPlant2               on  $projection.Material = _ProductPlant2.Product
                                                                                       and $projection.Plant    = _ProductPlant2.Plant
  association [1..1] to I_ProductSupplyPlanning        as _ProductSupplyPlanning       on  $projection.Material = _ProductSupplyPlanning.Product
                                                                                       and $projection.Plant    = _ProductSupplyPlanning.Plant
  association [0..1] to I_ProductStorageLocation       as _ProductStorageLocation      on  $projection.Material        = _ProductStorageLocation.Product
                                                                                       and $projection.Plant           = _ProductStorageLocation.Plant
                                                                                       and $projection.StorageLocation = _ProductStorageLocation.StorageLocation
  association [0..1] to I_ProductStorageLocationBasic  as _ProductStorageLocation2     on  $projection.Material        = _ProductStorageLocation2.Product
                                                                                       and $projection.Plant           = _ProductStorageLocation2.Plant
                                                                                       and $projection.StorageLocation = _ProductStorageLocation2.StorageLocation        
  association [0..1] to I_ProductPlantMRP              as _ProductPlantMRPArea         on  $projection.Material = _ProductPlantMRPArea.Product
                                                                                       and $projection.Plant    = _ProductPlantMRPArea.Plant
                                                                                       and $projection.MRPArea  = _ProductPlantMRPArea.MRPArea
  association [0..1] to I_MRPController                as _MRPController               on  $projection.Plant         = _MRPController.Plant
                                                                                       and $projection.MRPController = _MRPController.MRPController
  association [0..1] to I_MRPArea                      as _MRPArea                     on  $projection.MRPArea = _MRPArea.MRPArea
  association [0..1] to I_ProductionSupervisor         as _ProductionSupervisor        on  $projection.Plant                = _ProductionSupervisor.Plant
                                                                                       and $projection.ProductionSupervisor = _ProductionSupervisor.ProductionSupervisor
  association [0..1] to I_ProductionVersion            as _ProductionVersion           on  $projection.Material          = _ProductionVersion.Material
                                                                                       and $projection.Plant             = _ProductionVersion.Plant
                                                                                       and $projection.ProductionVersion = _ProductionVersion.ProductionVersion
  association [0..1] to I_SalesOrder                   as _SalesOrder                  on  $projection.SalesOrder = _SalesOrder.SalesOrder
  association [0..1] to I_SalesOrderItem               as _SalesOrderItem              on  $projection.SalesOrder     = _SalesOrderItem.SalesOrder
                                                                                       and $projection.SalesOrderItem = _SalesOrderItem.SalesOrderItem
  association [0..1] to I_WBSElementBasicData          as _WBSElement                  on  $projection.WBSElementInternalID   = _WBSElement.WBSElementInternalID
  association [0..1] to I_WBSElementBasicData          as _WBSElementBasic             on  $projection.WBSElementInternalID_2 = _WBSElementBasic.WBSElementInternalID
  association [0..1] to I_BOMExplosionDate             as _BOMExplosion                on  $projection.BOMExplosion = _BOMExplosion.BOMExplosionDateID
  association [0..1] to I_BillOfMaterialItemBasic      as _BillOfMaterialItem          on  $projection.BillOfMaterialCategory     = _BillOfMaterialItem.BillOfMaterialCategory
                                                                                       and $projection.BillOfMaterialInternalID   = _BillOfMaterialItem.BillOfMaterial
                                                                                       and $projection.BOMItem                    = _BillOfMaterialItem.BillOfMaterialItemNodeNumber
                                                                                       and $projection.BOMItemInternalChangeCount = _BillOfMaterialItem.BOMItemInternalChangeCount
  association [0..1] to I_BillOfMaterialItemBasic      as _BillOfMaterialItemBasic     on  $projection.BillOfMaterialCategory     = _BillOfMaterialItemBasic.BillOfMaterialCategory
                                                                                       and $projection.BillOfMaterialInternalID_2 = _BillOfMaterialItemBasic.BillOfMaterial
                                                                                       and $projection.BOMItem                    = _BillOfMaterialItemBasic.BillOfMaterialItemNodeNumber
                                                                                       and $projection.BOMItemInternalChangeCount = _BillOfMaterialItemBasic.BOMItemInternalChangeCount
  association [0..1] to I_BillOfMaterialItemCategory   as _BOMItemCategory             on  $projection.BOMItemCategory = _BOMItemCategory.BillOfMaterialItemCategory
  association [0..1] to I_PurchasingInfoRecordApi01    as _PurchasingInfoRecord        on  $projection.PurchasingInfoRecord = _PurchasingInfoRecord.PurchasingInfoRecord
  association [0..1] to I_PurchasingGroup              as _PurchasingGroup             on  $projection.PurchasingGroup = _PurchasingGroup.PurchasingGroup
  association [0..1] to I_PurchaseOrderAPI01           as _PurchaseOrder               on  $projection.PurchaseOrder = _PurchaseOrder.PurchaseOrder
  association [0..1] to I_PurchaseOrderItemAPI01       as _PurchaseOrderItem           on  $projection.PurchaseOrder     = _PurchaseOrderItem.PurchaseOrder
                                                                                       and $projection.PurchaseOrderItem = _PurchaseOrderItem.PurchaseOrderItem
  association [0..1] to I_Purchaserequisition          as _PurchaseRequisition         on  $projection.PurchaseRequisition = _PurchaseRequisition.PurchaseRequisition
  association [0..1] to I_PurchaseRequisition_Api01    as _PurchaseRequisitionItem     on  $projection.PurchaseRequisition     = _PurchaseRequisitionItem.PurchaseRequisition
                                                                                       and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem.PurchaseRequisitionItem
  association [0..1] to I_PurchaseRequisitionItemAPI01 as _PurchaseRequisitionItem2    on  $projection.PurchaseRequisition     = _PurchaseRequisitionItem2.PurchaseRequisition
                                                                                       and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem2.PurchaseRequisitionItem
  association [0..1] to I_Supplier                     as _Supplier                    on  $projection.Supplier = _Supplier.Supplier
  association [0..1] to I_SupplierCompanyByPlant       as _SupplierCompanyByPlant      on  $projection.Plant    = _SupplierCompanyByPlant.Plant 
                                                                                       and $projection.Supplier = _SupplierCompanyByPlant.Supplier
  association [0..1] to I_StorageLocation              as _StorageLocation             on  $projection.Plant           = _StorageLocation.Plant
                                                                                       and $projection.StorageLocation = _StorageLocation.StorageLocation
  association [0..*] to I_Batch                        as _Batch                       on  $projection.Material = _Batch.Material
                                                                                       and $projection.Batch    = _Batch.Batch
  association [0..1] to I_Batch                        as _Batch_2                     on  $projection.Material = _Batch_2.Material
                                                                                       and $projection.Plant    = _Batch_2.Plant
                                                                                       and $projection.Batch    = _Batch_2.Batch    
  association [1..1] to I_DebitCreditCode              as _DebitCreditCode             on  $projection.DebitCreditCode = _DebitCreditCode.DebitCreditCode
  association [1..1] to I_GoodsMovementType            as _GoodsMovementType           on  $projection.GoodsMovementType = _GoodsMovementType.GoodsMovementType
  association [1..1] to I_InventorySpecialStockType    as _InventorySpecialStockType   on  $projection.InventorySpecialStockType = _InventorySpecialStockType.InventorySpecialStockType
  association [0..1] to I_InvtrySpecialStockValnType  as _InventorySpecialStockValnType on $projection.InventorySpecialStockValnType = _InventorySpecialStockValnType.InventorySpecialStockValnType
  association [0..1] to I_ConsumptionPosting           as _ConsumptionPosting          on  $projection.ConsumptionPosting = _ConsumptionPosting.ConsumptionPosting
  association [0..1] to I_ProductionSupplyArea         as _SupplyArea                  on  $projection.Plant      = _SupplyArea.Plant
                                                                                       and $projection.SupplyArea = _SupplyArea.ProductionSupplyArea
  association [0..1] to I_Warehouse                    as _Warehouse                   on  $projection.Warehouse = _Warehouse.Warehouse
  association [0..1] to I_MatlCompDiscontinuationType  as _MatlCompDiscontinuationType on  $projection.MatlCompDiscontinuationType = _MatlCompDiscontinuationType.MatlCompDiscontinuationType
  association [0..1] to I_MatlCompProvisionType        as _ProvisionType               on  $projection.MaterialProvisionType = _ProvisionType.MaterialProvisionType
  association [0..1] to I_MatlCompSparePartType        as _SparePartType               on  $projection.MatlComponentSparePartType = _SparePartType.MatlComponentSparePartType
  association [0..1] to I_BusinessArea                 as _BusinessArea                on  $projection.BusinessArea = _BusinessArea.BusinessArea
  association [0..1] to I_AccountAssignmentCategory    as _AccountAssignmentCategory   on  $projection.AccountAssignmentCategory = _AccountAssignmentCategory.AccountAssignmentCategory
  association [0..1] to I_CommitmentItemShortID        as _CommitmentItemShortID       on  $projection.CommitmentItemShortID = _CommitmentItemShortID.CommitmentItemShortID
  association [0..1] to I_Product                      as _Assembly                    on  $projection.Assembly = _Assembly.Product
  association [0..1] to I_Product                      as _FollowUpMaterial            on  $projection.FollowUpMaterial = _FollowUpMaterial.Product
  association [1..1] to I_UnitOfMeasure                as _BaseUnit                    on  $projection.BaseUnit = _BaseUnit.UnitOfMeasure
  association [1..1] to I_UnitOfMeasure                as _EntryUnit                   on  $projection.EntryUnit = _EntryUnit.UnitOfMeasure
  association [0..1] to I_UnitOfMeasure                as _OpLeadTimeOffsetUnit        on  $projection.OperationLeadTimeOffsetUnit = _OpLeadTimeOffsetUnit.UnitOfMeasure
  association [0..1] to I_Currency                     as _Currency                    on  $projection.Currency = _Currency.Currency
  association [0..1] to I_ChangeMaster                 as _ChangeNumber                on  $projection.ChangeNumber = _ChangeNumber.ChangeNumber
  -- to root
  association [1..1] to I_PlannedOrder                 as _PlannedOrder                on  $projection.PlannedOrder = _PlannedOrder.PlannedOrder
  -- to extension
  association [1..1] to E_ReservationDocumentItem      as _Extension                   on  $projection.Reservation     = _Extension.Reservation
                                                                                       and $projection.ReservationItem = _Extension.ReservationItem
                                                                                       and $projection.RecordType      = _Extension.RecordType
{
      // Key

      @ObjectModel.foreignKey.association: '_Reservation'
  key resb.rsnum                                                    as Reservation,
      @ObjectModel.text.element: ['BOMItemDescription']
  key cast(resb.rspos as pph_rspos preserving type)                 as ReservationItem,
      @ObjectModel.foreignKey.association: '_ReservationDocRecordType'
  key cast(resb.rsart as pph_rsart preserving type)                 as RecordType,

      // Order data

      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlannedOrderStdVH', element: 'PlannedOrder' } } ]
      @ObjectModel.foreignKey.association: '_PlannedOrder'
      plaf.PlannedOrder,
      @ObjectModel.foreignKey.association: '_PlannedOrderType'
      plaf.PlannedOrderType,

      // Date and Time

      @Semantics.businessDate.at: true
      cast(resb.bdter as pph_bdter preserving type)                 as MatlCompRequirementDate,
      cast(resb.bdztp as pph_bdztp preserving type)                 as MatlCompRequirementTime,

      // Attributes

      resb.kzear                                                    as ReservationIsFinallyIssued,
      cast(resb.xloek as pph_xloek preserving type)                 as MatlCompIsMarkedForDeletion,
      resb.xfehl                                                    as MaterialComponentIsMissing,
      resb.schgt                                                    as IsBulkMaterialComponent,
      resb.rgekz                                                    as MatlCompIsMarkedForBackflush,
      resb.txtps                                                    as MatlCompIsTextItem,
      resb.kfpos                                                    as MatlCompIsConfigurable,

      // Assignments

      @ObjectModel.foreignKey.association: '_RequirementType'      
      cast(resb.bdart as pph_bdart preserving type)                 as RequirementType,
      @ObjectModel.foreignKey.association: '_MaterialGroup'
      resb.matkl                                                    as MaterialGroup,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductStdVH', element: 'Product' } } ]
      @ObjectModel.foreignKey.association: '_Material'
      resb.matnr                                                    as Material,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlantStdVH', element: 'Plant' } } ]
      @ObjectModel.foreignKey.association: '_Plant'
      resb.werks                                                    as Plant,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_MRPAreaVH', element: 'MRPArea' } } ]
      @ObjectModel.foreignKey.association: '_MRPArea'
      plaf.MRPArea,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_MRPControllerVH', element: 'MRPController' } } ]   
      @ObjectModel.foreignKey.association: '_MRPController'
      plaf.MRPController,
      @ObjectModel.foreignKey.association: '_ProductionSupervisor'
      plaf.ProductionSupervisor,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductionVersionBasicStdVH', element: 'ProductionVersion' } } ]
      @ObjectModel.foreignKey.association: '_ProductionVersion'
      plaf.ProductionVersion,
--    @ObjectModel.foreignKey.association: '_RequirementPlan'
      resb.pbdnr                                                    as RequirementPlan,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_SalesOrderStdVH', element: 'SalesOrder' } } ]
      @ObjectModel.foreignKey.association: '_SalesOrder'
      cast(resb.kdauf as co_kdauf preserving type)                  as SalesOrder,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_SalesOrderItemStdVH', element: 'SalesOrderItem' } } ]
      @ObjectModel.foreignKey.association: '_SalesOrderItem'
      cast(resb.kdpos as co_kdpos preserving type)                  as SalesOrderItem,
      @API.element.releaseState: #DEPRECATED
      @API.element.successor: 'WBSElementInternalID_2'
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_WBSElementBasicDataStdVH', element: 'WBSElementInternalID' } } ]
      @ObjectModel.foreignKey.association: '_WBSElement'
      cast(resb.pspel as pph_pspel preserving type)                 as WBSElementInternalID,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_WBSElementBasicDataStdVH', element: 'WBSElementInternalID' } } ]
      @ObjectModel.foreignKey.association: '_WBSElementBasic'
      cast(resb.pspel as ps_s4_pspnr preserving type)               as WBSElementInternalID_2,
      resb.cuobj                                                    as ProductConfiguration,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ChangeMasterStdVH', element: 'ChangeNumber' } } ]
      @ObjectModel.foreignKey.association: '_ChangeNumber'
      cast(resb.aennr as changenumber preserving type)              as ChangeNumber,      
      @API.element.releaseState: #DEPRECATED
      @API.element.successor: 'MatlCompFreeDefinedAttribute'
      resb.sortf                                                    as SortField,   
      resb.sortf                                                    as MatlCompFreeDefinedAttribute,
      cast(resb.revlv as vdm_qm_revlv preserving type)              as MaterialRevisionLevel,
      cast(resb.no_disp as vdm_no_disp preserving type)             as MaterialPlanningRelevance,

      // Assignments BOM

      cast(resb.stlty as pph_stlty preserving type)                 as BillOfMaterialCategory,
      @API.element.releaseState: #DEPRECATED
      @API.element.successor: 'BillOfMaterialInternalID_2'
      resb.stlnr                                                    as BillOfMaterialInternalID,
      cast(resb.stlnr as pph_stnum preserving type)                 as BillOfMaterialInternalID_2,
      resb.stlal                                                    as BillOfMaterialVariant,
      cast(resb.stlkn as pph_stlkn preserving type)                 as BOMItem,
      resb.stpoz                                                    as BOMItemInternalChangeCount,
      cast(resb.postp as pph_postp preserving type)                 as BOMItemCategory,
      @API.element.releaseState: #DEPRECATED
      @API.element.successor: 'BillOfMaterialItemNumber_2'
      @ObjectModel.text.element: ['BOMItemDescription']
      resb.posnr                                                    as BillOfMaterialItemNumber,
      @ObjectModel.text.element: ['BOMItemDescription']
      cast(resb.posnr as vdm_sposn preserving type)                 as BillOfMaterialItemNumber_2,
      @Semantics.text: true
      resb.potx1                                                    as BOMItemDescription,
      @Semantics.text: true
      resb.potx2                                                    as BOMItemText2,
      @ObjectModel.foreignKey.association: '_BOMExplosion'
      cast(resb.sernr as pph_sernr preserving type)                 as BOMExplosion,

      // Assignments Purchasing

--    @ObjectModel.foreignKey.association: '_PurchasingInfoRecord'
      cast(resb.infnr as pph_infnr preserving type)                 as PurchasingInfoRecord,
      @ObjectModel.foreignKey.association: '_PurchasingGroup'
      cast(resb.ekgrp as pph_ekgrp preserving type)                 as PurchasingGroup,
--    @ObjectModel.foreignKey.association: '_PurchaseRequisition'
      cast(resb.banfn as co_banfn  preserving type)                 as PurchaseRequisition,
--    @ObjectModel.foreignKey.association: '_PurchaseRequisitionItem'
      cast(resb.bnfpo as co_bnfpo  preserving type)                 as PurchaseRequisitionItem,
--    @ObjectModel.foreignKey.association: '_PurchaseOrder'
      cast(resb.ebeln as vdm_purchaseorder     preserving type)     as PurchaseOrder,
--    @ObjectModel.foreignKey.association: '_PurchaseOrderItem'
      cast(resb.ebelp as vdm_purchaseorderitem preserving type)     as PurchaseOrderItem,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_Supplier_VH', element: 'Supplier' } } ]
      @ObjectModel.foreignKey.association: '_Supplier'
      resb.lifnr                                                    as Supplier,
      cast(resb.lifzt as pph_lifzt preserving type)                 as DeliveryDurationInDays,

      // Goods Movement data

      resb.xwaok                                                    as GoodsMovementIsAllowed,
      @ObjectModel.foreignKey.association: '_StorageLocation'
      cast(resb.lgort as pph_lgort preserving type)                 as StorageLocation,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_BatchStdVH', element: 'Batch' } } ]
      @ObjectModel.foreignKey.association: '_Batch_2'
      resb.charg                                                    as Batch,
      @ObjectModel.foreignKey.association: '_DebitCreditCode'
      cast(resb.shkzg as pph_shkzg preserving type)                 as DebitCreditCode,
      @ObjectModel.foreignKey.association: '_GoodsMovementType'
      resb.bwart                                                    as GoodsMovementType,
      @ObjectModel.foreignKey.association: '_InventorySpecialStockType'
      cast(resb.sobkz as inventoryspecialstocktype preserving type) as InventorySpecialStockType,
      @ObjectModel.foreignKey.association: '_InventorySpecialStockValnType'
      cast(resb.kzbws as pph_kzbws preserving type)                 as InventorySpecialStockValnType,
      @ObjectModel.foreignKey.association: '_ConsumptionPosting'
      cast(resb.kzvbr as pph_kzvbr preserving type)                 as ConsumptionPosting,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProductionSupplyAreaStdVH', element: 'ProductionSupplyArea' } } ]
      @ObjectModel.foreignKey.association: '_SupplyArea'
      cast(resb.prvbe as pph_prvbe preserving type)                 as SupplyArea,

      // Assignments WM

      resb.berkz                                                    as MaterialStaging,
      @ObjectModel.foreignKey.association: '_Warehouse'
      resb.lgnum                                                    as Warehouse,
      resb.lgtyp                                                    as StorageType,
      resb.lgpla                                                    as StorageBin,

      // Assignments FI/CO

      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_BusinessAreaStdVH', element: 'BusinessArea' } } ]
      @ObjectModel.foreignKey.association: '_BusinessArea'
      resb.gsber                                                    as BusinessArea,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_GLAccountStdVH', element: 'GLAccount' } } ]
      resb.saknr                                                    as GLAccount,
      @ObjectModel.foreignKey.association: '_AccountAssignmentCategory'
      cast(resb.knttp as pph_knttp preserving type)                 as AccountAssignmentCategory,
      @API.element.releaseState: #DEPRECATED
      @API.element.successor: 'CommitmentItemShortID'
      cast(resb.fipos as bbpfipos  preserving type)                 as CommitmentItem,
      cast(resb.fipos as fmis_ci_internalname preserving type)      as CommitmentItemShortID,
      cast(resb.fistl as bbpfistl  preserving type)                 as FundsCenter,

      // Variable-size item data

      resb.rohps                                                    as MaterialCompIsVariableSized,
      cast(resb.roanz as vdm_roanz)                                 as NumberOfVariableSizeComponents,
      @Semantics.unitOfMeasure: true
      cast(resb.rokme as pph_rokme preserving type)                 as VariableSizeComponentUnit,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeComponentUnit'
      @Aggregation.default: #SUM
      cast(resb.romen as pph_romen preserving type)                 as VariableSizeComponentQuantity,
      @Semantics.unitOfMeasure: true
      resb.romei                                                    as VariableSizeDimensionUnit,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      @Aggregation.default: #MAX
      resb.roms1                                                    as VariableSizeDimension1,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      @Aggregation.default: #MAX
      resb.roms2                                                    as VariableSizeDimension2,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      @Aggregation.default: #MAX
      resb.roms3                                                    as VariableSizeDimension3,
      resb.rform                                                    as FormulaKey,

      // Alternative item data

      resb.alpos                                                    as MaterialCompIsAlternativeItem,
      cast(resb.alpgr as pph_alpgr preserving type)                 as AlternativeItemGroup,
      cast(resb.alpst as pph_alpst preserving type)                 as AlternativeItemStrategy,
      cast(resb.alprf as pph_alprf preserving type)                 as AlternativeItemPriority,
      resb.ewahr                                                    as UsageProbabilityPercent,
      cast(case resb.alpos
        when 'X' then resb.splrv
        else '0000'
      end as vdm_splrv_alt preserving type)                         as AlternativeMstrReservationItem,

      // Phantom assembly

      cast(resb.dumps as pph_dumps preserving type)                 as MaterialComponentIsPhantomItem,
      resb.aufwg                                                    as OrderPathValue,
      resb.aufst                                                    as OrderLevelValue,
      @ObjectModel.foreignKey.association: '_Assembly'
      resb.baugr                                                    as Assembly,
      resb.bauwg