I_MfgOrderMaterialDocumentItem

DDL: I_MFGORDERMATERIALDOCUMENTITEM SQL: IMFGORDMATDOCITM Type: view COMPOSITE

Manufacturing Order Material Document Item

I_MfgOrderMaterialDocumentItem is a Composite CDS View (Dimension) that provides data about "Manufacturing Order Material Document Item" in SAP S/4HANA. It reads from 2 data sources (I_MaterialDocumentRecord, I_MfgOrderBasic) and exposes 101 fields with key fields MaterialDocument, MaterialDocumentYear. It has 43 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_MaterialDocumentRecord doc from
I_MfgOrderBasic ord inner

Associations (43)

CardinalityTargetAliasCondition
[1..1] I_MaterialDocumentHeader_2 _MaterialDocumentHeader $projection.MaterialDocument = _MaterialDocumentHeader.MaterialDocument and $projection.MaterialDocumentYear = _MaterialDocumentHeader.MaterialDocumentYear
[1..1] I_MaterialDocumentYear _MaterialDocumentYear $projection.MaterialDocumentYear = _MaterialDocumentYear.MaterialDocumentYear
[1..1] I_MaterialDocumentItem_2 _MaterialDocumentItem $projection.MaterialDocumentYear = _MaterialDocumentItem.MaterialDocumentYear and $projection.MaterialDocument = _MaterialDocumentItem.MaterialDocument and $projection.MaterialDocumentItem = _MaterialDocumentItem.MaterialDocumentItem
[1..1] I_User _CreatedByUser $projection.CreatedByUser = _CreatedByUser.UserID
[1..1] I_ManufacturingOrder _MfgOrder $projection.ManufacturingOrder = _MfgOrder.ManufacturingOrder
[1..1] I_ManufacturingOrderItem _MfgOrderItem $projection.ManufacturingOrder = _MfgOrderItem.ManufacturingOrder and $projection.ManufacturingOrderItem = _MfgOrderItem.ManufacturingOrderItem
[1..1] I_MfgOrderType _MfgOrderType $projection.ManufacturingOrderType = _MfgOrderType.ManufacturingOrderType
[0..1] I_CalendarDate _CreationDate $projection.creationdate = _CreationDate.CalendarDate
[0..1] I_CalendarDate _DocumentDate $projection.DocumentDate = _DocumentDate.CalendarDate
[0..1] I_CalendarDate _PostingDate $projection.PostingDate = _PostingDate.CalendarDate
[0..1] I_ReservationDocumentHeader _Reservation $projection.Reservation = _Reservation.Reservation
[0..1] I_ReservationDocumentItem _ReservationItem $projection.Reservation = _ReservationItem.Reservation and $projection.ReservationItem = _ReservationItem.ReservationItem and $projection.ReservationRecordType = _ReservationItem.RecordType
[0..1] I_ReservationDocRecordType _ReservationRecordType $projection.ReservationRecordType = _ReservationRecordType.RecordType
[1..1] I_Plant _Plant $projection.Plant = _Plant.Plant
[1..1] I_Material _Material $projection.Material = _Material.Material
[1..1] I_Product _Product $projection.Material = _Product.Product
[1..1] I_ProductPlantBasic _ProductPlant $projection.Plant = _ProductPlant.Plant and $projection.Material = _ProductPlant.Product
[0..1] I_UnitOfMeasure _BaseUnit $projection.BaseUnit = _BaseUnit.UnitOfMeasure
[1..1] I_UnitOfMeasure _EntryUnit $projection.EntryUnit = _EntryUnit.UnitOfMeasure
[1..1] I_GoodsMovementType _GoodsMovementType $projection.GoodsMovementType = _GoodsMovementType.GoodsMovementType
[0..1] I_PhysInvtryReasonCode _GoodsMovementReason $projection.GoodsMovementType = _GoodsMovementReason.GoodsMovementType and $projection.GoodsMovementReasonCode = _GoodsMovementReason.ReasonForPhysInvtryDifference
[0..1] I_GoodsMovementRefDocType _GoodsMovementRefDocType $projection.GoodsMovementRefDocType = _GoodsMovementRefDocType.GoodsMovementRefDocType
[0..1] I_InventorySpecialStockType _InventorySpecialStockType $projection.InventorySpecialStockType = _InventorySpecialStockType.InventorySpecialStockType
[0..1] I_InventoryValuationType _InventoryValuationType $projection.InventoryValuationType = _InventoryValuationType.InventoryValuationType
[0..1] I_ConsumptionPosting _ConsumptionPosting $projection.ConsumptionPosting = _ConsumptionPosting.ConsumptionPosting
[0..1] I_DebitCreditCode _DebitCreditCode $projection.DebitCreditCode = _DebitCreditCode.DebitCreditCode
[0..1] I_StockType_2 _InventoryUsabilityCode $projection.InventoryUsabilityCode = _InventoryUsabilityCode.StockType
[0..1] I_StorageLocation _StorageLocation $projection.Plant = _StorageLocation.Plant and $projection.StorageLocation = _StorageLocation.StorageLocation
[0..1] I_Batch _Batch $projection.Plant = _Batch.Plant and $projection.Material = _Batch.Material and $projection.Batch = _Batch.Batch
[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_PurchaseOrderAPI01 _PurchaseOrder $projection.PurchaseOrder = _PurchaseOrder.PurchaseOrder
[0..1] I_PurchaseOrderItemAPI01 _PurchaseOrderItem $projection.PurchaseOrder = _PurchaseOrderItem.PurchaseOrder and $projection.PurchaseOrderItem = _PurchaseOrderItem.PurchaseOrderItem
[0..1] I_Supplier _Supplier $projection.Supplier = _Supplier.Supplier
[0..1] I_Customer _Customer $projection.Customer = _Customer.Customer
[0..1] I_SupplierCompanyByPlant _SupplierCompanyByPlant $projection.Plant = _SupplierCompanyByPlant.Plant and $projection.Supplier = _SupplierCompanyByPlant.Supplier
[0..1] I_CustomerCompanyByPlant _CustomerCompanyByPlant $projection.Plant = _CustomerCompanyByPlant.Plant and $projection.Customer = _CustomerCompanyByPlant.Customer
[0..1] I_CompanyCode _CompanyCode $projection.CompanyCode = _CompanyCode.CompanyCode
[0..1] I_BusinessArea _BusinessArea $projection.BusinessArea = _BusinessArea.BusinessArea
[0..1] I_ControllingArea _ControllingArea $projection.ControllingArea = _ControllingArea.ControllingArea
[0..*] I_CostCenter _CostCenter $projection.ControllingArea = _CostCenter.ControllingArea and $projection.CostCenter = _CostCenter.CostCenter
[0..1] I_Currency _Currency $projection.CompanyCodeCurrency = _Currency.Currency

Annotations (16)

NameValueLevelField
AbapCatalog.sqlViewName IMFGORDMATDOCITM view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #MANDATORY view
Analytics.dataCategory #DIMENSION view
Analytics.internalName #LOCAL view
ClientHandling.algorithm #SESSION_VARIABLE view
Metadata.allowExtensions true view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.modelingPattern #NONE view
ObjectModel.representativeKey MaterialDocumentItem view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
VDM.viewType #COMPOSITE view
EndUserText.label Manufacturing Order Material Document Item view

Fields (101)

KeyFieldSource TableSource FieldDescription
KEY MaterialDocument I_MaterialDocumentRecord MaterialDocument
MaterialDocumentItem
KEY MaterialDocumentYear I_MaterialDocumentRecord MaterialDocumentYear
ManufacturingOrder I_MaterialDocumentRecord OrderID
ManufacturingOrderItem I_MaterialDocumentRecord OrderItem
ManufacturingOrderCategory I_MfgOrderBasic ManufacturingOrderCategory
ManufacturingOrderType I_MfgOrderBasic ManufacturingOrderType
CreationDate _MaterialDocumentHeader CreationDate
CreationTime _MaterialDocumentHeader CreationTime
CreatedByUser
ReversedMaterialDocumentYear I_MaterialDocumentRecord ReversedMaterialDocumentYear
ReversedMaterialDocument I_MaterialDocumentRecord ReversedMaterialDocument
ReversedMaterialDocumentItem I_MaterialDocumentRecord ReversedMaterialDocumentItem
GoodsMovementIsCancelled I_MaterialDocumentRecord GoodsMovementIsCancelled
Material
Plant I_MaterialDocumentRecord Plant
Reservation I_MaterialDocumentRecord Reservation
ReservationItem
ReservationRecordType
ReservationIsFinallyIssued I_MaterialDocumentRecord ReservationIsFinallyIssued
StorageLocation
Batch I_MaterialDocumentRecord Batch
InventoryValuationType
ConsumptionPosting
DebitCreditCode
GoodsMovementType
GoodsMovementReasonCode I_MaterialDocumentRecord GoodsMovementReasonCode
GoodsMovementRefDocType
InventoryUsabilityCode
InventorySpecialStockType
SalesOrder
SalesOrderItem
WBSElementInternalID
Supplier I_MaterialDocumentRecord Supplier
Customer I_MaterialDocumentRecord Customer
GoodsRecipientName
UnloadingPointName I_MaterialDocumentRecord UnloadingPointName
GoodsReceiptIsNonValuated
IsCompletelyDelivered I_MaterialDocumentRecord IsCompletelyDelivered
StorageType I_MaterialDocumentRecord StorageType
StorageBin I_MaterialDocumentRecord StorageBin
CompanyCode I_MaterialDocumentRecord CompanyCode
BusinessArea I_MaterialDocumentRecord BusinessArea
ControllingArea I_MaterialDocumentRecord ControllingArea
CostCenter
PostingDate I_MaterialDocumentRecord PostingDate
DocumentDate I_MaterialDocumentRecord DocumentDate
ShelfLifeExpirationDate I_MaterialDocumentRecord ShelfLifeExpirationDate
ManufactureDate I_MaterialDocumentRecord ManufactureDate
BaseUnit I_MaterialDocumentRecord MaterialBaseUnit
QuantityInBaseUnit I_MaterialDocumentRecord QuantityInBaseUnit
EntryUnit I_MaterialDocumentRecord EntryUnit
QuantityInEntryUnit
CompanyCodeCurrency I_MaterialDocumentRecord CompanyCodeCurrency
TotalGoodsMvtAmtInCCCrcy
ManufacturingOrderSequence
ManufacturingOrderOperation
_MaterialDocumentHeader _MaterialDocumentHeader
_MaterialDocumentYear _MaterialDocumentYear
_MaterialDocumentItem _MaterialDocumentItem
_CreatedByUser _CreatedByUser
_MfgOrder _MfgOrder
_MfgOrderItem _MfgOrderItem
_MfgOrderCategory I_MfgOrderBasic _MfgOrderCategory
_MfgOrderType _MfgOrderType
_CreationDate _CreationDate
_DocumentDate _DocumentDate
_PostingDate _PostingDate
_Material _Material
_Product _Product
_ProductPlant _ProductPlant
_Plant _Plant
_Reservation _Reservation
_ReservationItem _ReservationItem
_ReservationRecordType _ReservationRecordType
_StorageLocation _StorageLocation
_Batch _Batch
_BaseUnit _BaseUnit
_EntryUnit _EntryUnit
_GoodsMovementType _GoodsMovementType
_GoodsMovementReason _GoodsMovementReason
_GoodsMovementRefDocType _GoodsMovementRefDocType
_InventorySpecialStockType _InventorySpecialStockType
_InventoryValuationType _InventoryValuationType
_ConsumptionPosting _ConsumptionPosting
_DebitCreditCode _DebitCreditCode
_InventoryUsabilityCode _InventoryUsabilityCode
_SalesOrder _SalesOrder
_SalesOrderItem _SalesOrderItem
_WBSElement _WBSElement
_PurchaseOrder _PurchaseOrder
_PurchaseOrderItem _PurchaseOrderItem
_Supplier _Supplier
_Customer _Customer
_SupplierCompanyByPlant _SupplierCompanyByPlant
_CustomerCompanyByPlant _CustomerCompanyByPlant
_CompanyCode _CompanyCode
_BusinessArea _BusinessArea
_ControllingArea _ControllingArea
_CostCenter _CostCenter
_Currency _Currency
@AbapCatalog.sqlViewName: 'IMFGORDMATDOCITM'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@Analytics.dataCategory: #DIMENSION
@Analytics.internalName: #LOCAL
@ClientHandling.algorithm: #SESSION_VARIABLE
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.modelingPattern: #NONE
@ObjectModel.supportedCapabilities: [#CDS_MODELING_DATA_SOURCE, #SQL_DATA_SOURCE]
@ObjectModel.representativeKey: 'MaterialDocumentItem'
@ObjectModel.semanticKey: ['MaterialDocument', 'MaterialDocumentItem', 'MaterialDocumentYear']
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #XL, dataClass: #TRANSACTIONAL}
@VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
@VDM.viewType: #COMPOSITE
@EndUserText.label: 'Manufacturing Order Material Document Item'
// This view selects all material document items (planned & unplanned) that were created for a manufacturing order.


define view I_MfgOrderMaterialDocumentItem
  as select from I_MaterialDocumentRecord as doc
    inner join   I_MfgOrderBasic          as ord on doc.OrderID = ord.ManufacturingOrder

  association [1..1] to I_MaterialDocumentHeader_2    as _MaterialDocumentHeader    on  $projection.MaterialDocument     = _MaterialDocumentHeader.MaterialDocument
                                                                                    and $projection.MaterialDocumentYear = _MaterialDocumentHeader.MaterialDocumentYear
  association [1..1] to I_MaterialDocumentYear        as _MaterialDocumentYear      on  $projection.MaterialDocumentYear = _MaterialDocumentYear.MaterialDocumentYear
  association [1..1] to I_MaterialDocumentItem_2      as _MaterialDocumentItem      on  $projection.MaterialDocumentYear = _MaterialDocumentItem.MaterialDocumentYear 
                                                                                    and $projection.MaterialDocument     = _MaterialDocumentItem.MaterialDocument
                                                                                    and $projection.MaterialDocumentItem = _MaterialDocumentItem.MaterialDocumentItem
  association [1..1] to I_User                        as _CreatedByUser             on  $projection.CreatedByUser = _CreatedByUser.UserID
  association [1..1] to I_ManufacturingOrder          as _MfgOrder                  on  $projection.ManufacturingOrder = _MfgOrder.ManufacturingOrder
  association [1..1] to I_ManufacturingOrderItem      as _MfgOrderItem              on  $projection.ManufacturingOrder     = _MfgOrderItem.ManufacturingOrder
                                                                                    and $projection.ManufacturingOrderItem = _MfgOrderItem.ManufacturingOrderItem
  association [1..1] to I_MfgOrderType                as _MfgOrderType              on  $projection.ManufacturingOrderType = _MfgOrderType.ManufacturingOrderType
  association [0..1] to I_CalendarDate                as _CreationDate              on  $projection.creationdate = _CreationDate.CalendarDate
  association [0..1] to I_CalendarDate                as _DocumentDate              on  $projection.DocumentDate = _DocumentDate.CalendarDate
  association [0..1] to I_CalendarDate                as _PostingDate               on  $projection.PostingDate  = _PostingDate.CalendarDate
  association [0..1] to I_ReservationDocumentHeader   as _Reservation               on  $projection.Reservation = _Reservation.Reservation
  association [0..1] to I_ReservationDocumentItem     as _ReservationItem           on  $projection.Reservation           = _ReservationItem.Reservation
                                                                                    and $projection.ReservationItem       = _ReservationItem.ReservationItem
                                                                                    and $projection.ReservationRecordType = _ReservationItem.RecordType
  association [0..1] to I_ReservationDocRecordType    as _ReservationRecordType     on  $projection.ReservationRecordType = _ReservationRecordType.RecordType
  association [1..1] to I_Plant                       as _Plant                     on  $projection.Plant = _Plant.Plant
  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..1] to I_ProductPlantBasic           as _ProductPlant              on  $projection.Plant    = _ProductPlant.Plant
                                                                                    and $projection.Material = _ProductPlant.Product
  association [0..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 [1..1] to I_GoodsMovementType           as _GoodsMovementType         on  $projection.GoodsMovementType = _GoodsMovementType.GoodsMovementType
  association [0..1] to I_PhysInvtryReasonCode        as _GoodsMovementReason       on  $projection.GoodsMovementType       = _GoodsMovementReason.GoodsMovementType
                                                                                    and $projection.GoodsMovementReasonCode = _GoodsMovementReason.ReasonForPhysInvtryDifference
  association [0..1] to I_GoodsMovementRefDocType     as _GoodsMovementRefDocType   on  $projection.GoodsMovementRefDocType = _GoodsMovementRefDocType.GoodsMovementRefDocType
  association [0..1] to I_InventorySpecialStockType   as _InventorySpecialStockType on  $projection.InventorySpecialStockType = _InventorySpecialStockType.InventorySpecialStockType
  association [0..1] to I_InventoryValuationType      as _InventoryValuationType    on  $projection.InventoryValuationType = _InventoryValuationType.InventoryValuationType
  association [0..1] to I_ConsumptionPosting          as _ConsumptionPosting        on  $projection.ConsumptionPosting = _ConsumptionPosting.ConsumptionPosting
  association [0..1] to I_DebitCreditCode             as _DebitCreditCode           on  $projection.DebitCreditCode = _DebitCreditCode.DebitCreditCode
  association [0..1] to I_StockType_2                 as _InventoryUsabilityCode    on  $projection.InventoryUsabilityCode = _InventoryUsabilityCode.StockType
  association [0..1] to I_StorageLocation             as _StorageLocation           on  $projection.Plant           = _StorageLocation.Plant
                                                                                    and $projection.StorageLocation = _StorageLocation.StorageLocation
  association [0..1] to I_Batch                       as _Batch                     on  $projection.Plant    = _Batch.Plant
                                                                                    and $projection.Material = _Batch.Material
                                                                                    and $projection.Batch    = _Batch.Batch
  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_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_Supplier                    as _Supplier                  on  $projection.Supplier = _Supplier.Supplier
  association [0..1] to I_Customer                    as _Customer                  on  $projection.Customer = _Customer.Customer
  association [0..1] to I_SupplierCompanyByPlant      as _SupplierCompanyByPlant    on  $projection.Plant    = _SupplierCompanyByPlant.Plant 
                                                                                    and $projection.Supplier = _SupplierCompanyByPlant.Supplier
  association [0..1] to I_CustomerCompanyByPlant      as _CustomerCompanyByPlant    on  $projection.Plant    = _CustomerCompanyByPlant.Plant 
                                                                                    and $projection.Customer = _CustomerCompanyByPlant.Customer
  association [0..1] to I_CompanyCode                 as _CompanyCode               on  $projection.CompanyCode = _CompanyCode.CompanyCode
  association [0..1] to I_BusinessArea                as _BusinessArea              on  $projection.BusinessArea = _BusinessArea.BusinessArea
  association [0..1] to I_ControllingArea             as _ControllingArea           on  $projection.ControllingArea = _ControllingArea.ControllingArea
  association [0..*] to I_CostCenter                  as _CostCenter                on  $projection.ControllingArea = _CostCenter.ControllingArea
                                                                                    and $projection.CostCenter      = _CostCenter.CostCenter
  association [0..1] to I_Currency                    as _Currency                  on  $projection.CompanyCodeCurrency = _Currency.Currency
{
      // Key

      @ObjectModel.foreignKey.association: '_MaterialDocumentHeader'
  key doc.MaterialDocument,
      -- representative key
  key doc.MaterialDocumentItem,
      @ObjectModel.foreignKey.association: '_MaterialDocumentYear'
  key doc.MaterialDocumentYear,

      // Order

      @ObjectModel.foreignKey.association: '_MfgOrder'
      doc.OrderID   as ManufacturingOrder,
      @ObjectModel.foreignKey.association: '_MfgOrderItem'
      doc.OrderItem as ManufacturingOrderItem,
      @ObjectModel.foreignKey.association: '_MfgOrderCategory'
      ord.ManufacturingOrderCategory,
      @ObjectModel.foreignKey.association: '_MfgOrderType'
      ord.ManufacturingOrderType,

      // Admin

      @Semantics.systemDate.createdAt: true
      _MaterialDocumentHeader.CreationDate,
      @Semantics.systemTime.createdAt: true
      _MaterialDocumentHeader.CreationTime,
      @Semantics.user.createdBy: true
      cast(_MaterialDocumentHeader.CreatedByUser as ernam preserving type)        as CreatedByUser,

      doc.ReversedMaterialDocumentYear,
      doc.ReversedMaterialDocument,
      doc.ReversedMaterialDocumentItem,
      doc.GoodsMovementIsCancelled,

      // Goods Movement data

      @ObjectModel.foreignKey.association: '_Material'
      cast(doc.Material as co_matnr preserving type)                              as Material,
      @ObjectModel.foreignKey.association: '_Plant'
      doc.Plant,
      @ObjectModel.foreignKey.association: '_Reservation'
      doc.Reservation,
      @ObjectModel.foreignKey.association: '_ReservationItem'
      cast(doc.ReservationItem as pph_rspos preserving type)                      as ReservationItem,
      @ObjectModel.foreignKey.association: '_ReservationRecordType'
      cast(doc.ReservationRecordType as pph_rsart preserving type)                as ReservationRecordType,
      doc.ReservationIsFinallyIssued,
      @ObjectModel.foreignKey.association: '_StorageLocation'
      cast(doc.StorageLocation as pph_lgort preserving type)                      as StorageLocation,
      @ObjectModel.foreignKey.association: '_Batch'
      doc.Batch,
      @ObjectModel.foreignKey.association: '_InventoryValuationType'
      cast(doc.InventoryValuationType as pph_bwtar preserving type)               as InventoryValuationType,
      @ObjectModel.foreignKey.association: '_ConsumptionPosting'
      cast(doc.ConsumptionPosting as pph_kzvbr preserving type)                   as ConsumptionPosting,
      @ObjectModel.foreignKey.association: '_DebitCreditCode'
      cast(doc.DebitCreditCode as pph_shkzg preserving type)                      as DebitCreditCode,
      @ObjectModel.foreignKey.association: '_GoodsMovementType'
      cast(doc.GoodsMovementType as pph_bwart preserving type)                    as GoodsMovementType,
      @ObjectModel.foreignKey.association: '_GoodsMovementReason'      
      doc.GoodsMovementReasonCode                                                 as GoodsMovementReasonCode,
      @ObjectModel.foreignKey.association: '_GoodsMovementRefDocType'
      cast(doc.GoodsMovementRefDocType as pph_kzbew preserving type)              as GoodsMovementRefDocType,
      @ObjectModel.foreignKey.association: '_InventoryUsabilityCode'
      cast(doc.InventoryUsabilityCode as inventoryusabilitycode preserving type)  as InventoryUsabilityCode,
      @ObjectModel.foreignKey.association: '_InventorySpecialStockType'
      cast(doc.InventorySpecialStockType as pph_sobkz preserving type)            as InventorySpecialStockType,
      @ObjectModel.foreignKey.association: '_SalesOrder'
      cast(doc.SalesOrder as co_kdauf preserving type)                            as SalesOrder,
      @ObjectModel.foreignKey.association: '_SalesOrderItem'
      cast(doc.SalesOrderItem as co_kdpos preserving type)                        as SalesOrderItem,
      @ObjectModel.foreignKey.association: '_WBSElement'
      cast(doc.WBSElementInternalID as ps_s4_pspnr preserving type)               as WBSElementInternalID,
--    @ObjectModel.foreignKey.association: '_PurchaseOrder'
      cast(doc.PurchaseOrder as vdm_purchaseorder preserving type)                as PurchaseOrder,
--    @ObjectModel.foreignKey.association: '_PurchaseOrderItem'
      cast(doc.PurchaseOrderItem as vdm_purchaseorderitem preserving type)        as PurchaseOrderItem,
      @ObjectModel.foreignKey.association: '_Supplier'
      doc.Supplier,
      @ObjectModel.foreignKey.association: '_Customer'
      doc.Customer,
      @Semantics.text: true
      cast(doc.GoodsRecipientName as pph_wempf preserving type)                   as GoodsRecipientName,
      @Semantics.text: true
      doc.UnloadingPointName,
      cast(doc.GoodsReceiptIsNonValuated as pph_weunb preserving type)            as GoodsReceiptIsNonValuated,
      doc.IsCompletelyDelivered,
      doc.StorageType,
      doc.StorageBin,

      // Assignments FI/CO

      @ObjectModel.foreignKey.association: '_CompanyCode'
      doc.CompanyCode,
      @ObjectModel.foreignKey.association: '_BusinessArea'
      doc.BusinessArea,
      @ObjectModel.foreignKey.association: '_ControllingArea'
      doc.ControllingArea,
--    @ObjectModel.foreignKey.association: '_CostCenter'
      doc.CostCenter,

      // Dates

      @Semantics.businessDate.at: true
      doc.PostingDate,
      doc.DocumentDate,
      doc.ShelfLifeExpirationDate,
      doc.ManufactureDate,

      // Quantities and UoM

      @Semantics.unitOfMeasure: true
      doc.MaterialBaseUnit as BaseUnit,
      @Semantics.quantity.unitOfMeasure: 'BaseUnit'
      @Aggregation.default: #SUM
      doc.QuantityInBaseUnit,
      @Semantics.unitOfMeasure: true
      doc.EntryUnit,
      @Semantics.quantity.unitOfMeasure: 'EntryUnit'
      @Aggregation.default: #SUM
      cast(doc.QuantityInEntryUnit as pph_erfmg preserving type)     as QuantityInEntryUnit,

      // Amount and Currency

      @Semantics.currencyCode: true
      doc.CompanyCodeCurrency,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      @Aggregation.default: #SUM
      cast(doc.TotalGoodsMvtAmtInCCCrcy as pph_dmbtr preserving type) as TotalGoodsMvtAmtInCCCrcy,

      // no longer needed, kept for compatibility reasons

      @Consumption.hidden: true
      cast('0' as plnfolge)     as ManufacturingOrderSequence,
      @Consumption.hidden: true
      cast('0010' as vdm_vornr) as ManufacturingOrderOperation,

      // Associations

      _MaterialDocumentHeader,
      _MaterialDocumentYear,
      _MaterialDocumentItem,
      _CreatedByUser,
      @ObjectModel.association.type: [#TO_COMPOSITION_ROOT, #TO_COMPOSITION_PARENT]
      _MfgOrder,
      _MfgOrderItem,
      ord._MfgOrderCategory,
      _MfgOrderType,
      _CreationDate,
      _DocumentDate,
      _PostingDate,
      _Material,
      _Product,
      _ProductPlant,
      _Plant,
      _Reservation,
      _ReservationItem,
      _ReservationRecordType,
      _StorageLocation,
      _Batch,
      _BaseUnit,
      _EntryUnit,
      _GoodsMovementType,
      _GoodsMovementReason,
      _GoodsMovementRefDocType,
      _InventorySpecialStockType,
      _InventoryValuationType,
      _ConsumptionPosting,
      _DebitCreditCode,
      _InventoryUsabilityCode,
      _SalesOrder,
      _SalesOrderItem,
      _WBSElement,
      _PurchaseOrder,
      _PurchaseOrderItem,
      _Supplier,
      _Customer,
      @Consumption.hidden: true
      _SupplierCompanyByPlant,
      @Consumption.hidden: true
      _CustomerCompanyByPlant,
      _CompanyCode,
      _BusinessArea,
      _ControllingArea,
      _CostCenter,
      _Currency
}
where
  doc.MaterialDocumentRecordType = 'MDOC';
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_MATERIALDOCUMENTHEADER_2",
"I_MATERIALDOCUMENTRECORD",
"I_MFGORDERBASIC"
],
"ASSOCIATED":
[
"I_BATCH",
"I_BUSINESSAREA",
"I_CALENDARDATE",
"I_COMPANYCODE",
"I_CONSUMPTIONPOSTING",
"I_CONTROLLINGAREA",
"I_COSTCENTER",
"I_CURRENCY",
"I_CUSTOMER",
"I_CUSTOMERCOMPANYBYPLANT",
"I_DEBITCREDITCODE",
"I_GOODSMOVEMENTREFDOCTYPE",
"I_GOODSMOVEMENTTYPE",
"I_INVENTORYSPECIALSTOCKTYPE",
"I_INVENTORYVALUATIONTYPE",
"I_MANUFACTURINGORDER",
"I_MANUFACTURINGORDERITEM",
"I_MATERIAL",
"I_MATERIALDOCUMENTHEADER_2",
"I_MATERIALDOCUMENTITEM_2",
"I_MATERIALDOCUMENTYEAR",
"I_MFGORDERCATEGORY",
"I_MFGORDERTYPE",
"I_PHYSINVTRYREASONCODE",
"I_PLANT",
"I_PRODUCT",
"I_PRODUCTPLANTBASIC",
"I_PURCHASEORDERAPI01",
"I_PURCHASEORDERITEMAPI01",
"I_RESERVATIONDOCRECORDTYPE",
"I_RESERVATIONDOCUMENTHEADER",
"I_RESERVATIONDOCUMENTITEM",
"I_SALESORDER",
"I_SALESORDERITEM",
"I_STOCKTYPE_2",
"I_STORAGELOCATION",
"I_SUPPLIER",
"I_SUPPLIERCOMPANYBYPLANT",
"I_UNITOFMEASURE",
"I_USER",
"I_WBSELEMENTBASICDATA"
],
"BASE":
[
"I_MFGORDERBASIC"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/