I_MfgOrderOperation

DDL: I_MFGORDEROPERATION SQL: IPPMFGORDOPER Type: view COMPOSITE

Manufacturing Order Operation

I_MfgOrderOperation is a Composite CDS View (Dimension) that provides data about "Manufacturing Order Operation" in SAP S/4HANA. It reads from 2 data sources (I_OrderOperation, I_MfgOrderBasic) and exposes 76 fields with key fields OrderInternalBillOfOperations, OrderIntBillOfOperationsItem. It has 61 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_OrderOperation afvg from
I_MfgOrderBasic aufv inner

Associations (61)

CardinalityTargetAliasCondition
[1..1] I_OrdInternalBillOfOperations _OrdInternalBillOfOperations $projection.OrderInternalBillOfOperations = _OrdInternalBillOfOperations.OrderInternalBillOfOperations
[1..1] I_MfgOrder _MfgOrder $projection.ManufacturingOrder = _MfgOrder.ManufacturingOrder
[1..1] I_MfgOrderSequence _MfgOrderSequence $projection.ManufacturingOrder = _MfgOrderSequence.ManufacturingOrder and $projection.ManufacturingOrderSequence = _MfgOrderSequence.ManufacturingOrderSequence
[1..1] I_MfgOrderCategory _MfgOrderCategory $projection.ManufacturingOrderCategory = _MfgOrderCategory.ManufacturingOrderCategory
[1..1] I_MfgOrderType _MfgOrderType $projection.ManufacturingOrderType = _MfgOrderType.ManufacturingOrderType
[0..1] I_OrderOperationBasic _SuperiorOperation $projection.OrderInternalBillOfOperations = _SuperiorOperation.OrderInternalID and $projection.SuperiorOperationInternalID = _SuperiorOperation.OrderOperationInternalID
[0..1] I_OperationStandardText _OperationStandardTextCode $projection.OperationStandardTextCode = _OperationStandardTextCode.OperationStandardTextCode
[1..1] I_Plant _ProductionPlant $projection.ProductionPlant = _ProductionPlant.Plant
[1..1] I_UnitOfMeasure _ProductionUnit $projection.ProductionUnit = _ProductionUnit.UnitOfMeasure
[1..1] I_UnitOfMeasure _OperationUnit $projection.OperationUnit = _OperationUnit.UnitOfMeasure
[0..1] I_MRPController _MRPController $projection.ProductionPlant = _MRPController.Plant and $projection.MRPController = _MRPController.MRPController
[0..1] I_ProductionSupervisor _ProductionSupervisor $projection.ProductionPlant = _ProductionSupervisor.Plant and $projection.ProductionSupervisor = _ProductionSupervisor.ProductionSupervisor
[0..1] I_ResponsiblePlannerGroup _ResponsiblePlannerGroup $projection.ProductionPlant = _ResponsiblePlannerGroup.Plant and $projection.ResponsiblePlannerGroup = _ResponsiblePlannerGroup.ResponsiblePlannerGroup
[0..1] I_WorkCenterType _WorkCenterType $projection.WorkCenterTypeCode = _WorkCenterType.WorkCenterTypeCode
[0..1] I_WorkCenter _WorkCenter $projection.WorkCenterTypeCode = _WorkCenter.WorkCenterTypeCode and $projection.WorkCenterInternalID = _WorkCenter.WorkCenterInternalID
[0..1] I_WorkCenterType _WorkCenterType_2 $projection.WorkCenterTypeCode_2 = _WorkCenterType_2.WorkCenterTypeCode
[0..1] I_WorkCenter _WorkCenter_2 $projection.WorkCenterTypeCode_2 = _WorkCenter_2.WorkCenterTypeCode and $projection.WorkCenterInternalID = _WorkCenter_2.WorkCenterInternalID
[1..1] I_OperationControlProfile _OperationControlProfile $projection.OperationControlProfile = _OperationControlProfile.OperationControlProfile
[0..1] I_BillOfOperationsType _BillOfOperationsType $projection.BillOfOperationsType = _BillOfOperationsType.BillOfOperationsType
[0..1] I_BillOfOperationsGroup _BillOfOperationsGroup $projection.BillOfOperationsType = _BillOfOperationsGroup.BillOfOperationsType and $projection.BillOfOperationsGroup = _BillOfOperationsGroup.BillOfOperationsGroup
[0..1] I_BillOfOperations _BillOfOperationsVariant $projection.BillOfOperationsType = _BillOfOperationsVariant.BillOfOperationsType and $projection.BillOfOperationsGroup = _BillOfOperationsVariant.BillOfOperationsGroup and $projection.BillOfOperationsVariant = _BillOfOperationsVariant.BillOfOperationsVariant
[0..1] I_BillOfOperationsSequence _BillOfOperationsSequence $projection.BillOfOperationsType = _BillOfOperationsSequence.BillOfOperationsType and $projection.BillOfOperationsGroup = _BillOfOperationsSequence.BillOfOperationsGroup and $projection.BillOfOperationsVariant = _BillOfOperationsSequence.BillOfOperationsVariant and $projection.BillOfOperationsSequence = _BillOfOperationsSequence.BillOfOperationsSequence
[0..1] I_BOOOperationInternalID _BOOOperationInternalID $projection.BillOfOperationsType = _BOOOperationInternalID.BillOfOperationsType and $projection.BillOfOperationsGroup = _BOOOperationInternalID.BillOfOperationsGroup and $projection.BOOOperationInternalID = _BOOOperationInternalID.BOOOperationInternalID
[0..1] I_FactoryCalendar _FactoryCalendar $projection.FactoryCalendar = _FactoryCalendar.FactoryCalendar
[0..1] I_CapacityRequirement _CapacityRequirement $projection.CapacityRequirement = _CapacityRequirement.CapacityRequirement
[0..1] I_CapacityRequirementItem _CapacityRequirementItem $projection.CapacityRequirement = _CapacityRequirementItem.CapacityRequirement and $projection.CapacityRequirementItem = _CapacityRequirementItem.CapacityRequirementItem
[0..1] I_ControlRecipeDestination _ControlRecipeDestination $projection.ProductionPlant = _ControlRecipeDestination.Plant and $projection.ControlRecipeDestination = _ControlRecipeDestination.ControlRecipeDestination
[0..1] I_ConfirmationGroup _OperationConfirmation $projection.OperationConfirmation = _OperationConfirmation.ConfirmationGroup
[0..1] I_ChangeMaster _ChangeNumber $projection.ChangeNumber = _ChangeNumber.ChangeNumber
[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_PurchaseRequisitionItemAPI01 _PurchaseRequisitionItem $projection.PurchaseRequisition = _PurchaseRequisitionItem.PurchaseRequisition and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem.PurchaseRequisitionItem
[0..1] I_PurchasingOrganization _PurchasingOrganization $projection.PurchasingOrganization = _PurchasingOrganization.PurchasingOrganization
[0..1] I_PurchasingGroup _PurchasingGroup $projection.PurchasingGroup = _PurchasingGroup.PurchasingGroup
[0..1] I_PurchasingInfoRecordApi01 _PurchasingInfoRecord $projection.PurchasingInfoRecord = _PurchasingInfoRecord.PurchasingInfoRecord
[0..1] I_Supplier _Supplier $projection.Supplier = _Supplier.Supplier
[0..1] I_SupplierCompanyByPlant _SupplierCompanyByPlant $projection.ProductionPlant = _SupplierCompanyByPlant.Plant and $projection.Supplier = _SupplierCompanyByPlant.Supplier
[0..1] I_EmployeeWageGroup _EmployeeWageGroup $projection.ProductionPlant = _EmployeeWageGroup.Plant and $projection.EmployeeWageGroup = _EmployeeWageGroup.EmployeeWageGroup
[0..1] I_EmployeeSuitability _EmployeeSuitability $projection.ProductionPlant = _EmployeeSuitability.Plant and $projection.EmployeeSuitability = _EmployeeSuitability.EmployeeSuitability --
[0..1] I_Employment _Employee $projection.Personnel = _Employee.EmploymentInternalID
[0..1] I_CompanyCode _CompanyCode $projection.CompanyCode = _CompanyCode.CompanyCode
[0..*] I_ProfitCenter _ProfitCenter $projection.ControllingArea = _ProfitCenter.ControllingArea and $projection.ProfitCenter = _ProfitCenter.ProfitCenter
[0..*] I_CostCenter _RequestingCostCenter $projection.ControllingArea = _RequestingCostCenter.ControllingArea and $projection.RequestingCostCenter = _RequestingCostCenter.CostCenter
[0..1] I_ControllingArea _ControllingArea $projection.ControllingArea = _ControllingArea.ControllingArea
[0..1] I_ControllingObjectClass _ControllingObjectClass $projection.ControllingObjectClass = _ControllingObjectClass.ControllingObjectClass
[0..1] I_FunctionalArea _FunctionalArea $projection.FunctionalArea = _FunctionalArea.FunctionalArea
[0..1] I_BusinessArea _BusinessArea $projection.BusinessArea = _BusinessArea.BusinessArea
[0..1] I_BusinessProcess _BusinessProcess $projection.ControllingArea = _BusinessProcess.ControllingArea and $projection.BusinessProcess = _BusinessProcess.BusinessProcess
[0..1] I_UnitOfMeasure _BusinessProcessEntryUnit $projection.BusinessProcessEntryUnit = _BusinessProcessEntryUnit.UnitOfMeasure
[0..1] I_OperationSetupGroupCategory _OperationSetupGroupCategory $projection.ProductionPlant = _OperationSetupGroupCategory.Plant and $projection.OperationSetupGroupCategory = _OperationSetupGroupCategory.OperationSetupGroupCategory
[0..1] I_OperationSetupGroup _OperationSetupGroup $projection.OperationSetupGroup = _OperationSetupGroup.OperationSetupGroup and $projection.OperationSetupGroupCategory = _OperationSetupGroup.OperationSetupGroupCategory and $projection.ProductionPlant = _OperationSetupGroup.Plant
[0..1] I_OperationSetupType _OperationSetupType $projection.OperationSetupType = _OperationSetupType.OperationSetupType and $projection.ProductionPlant = _OperationSetupType.Plant
[0..1] I_LeadTimeReductionStrategy _LeadTimeReductionStrategy $projection.LeadTimeReductionStrategy = _LeadTimeReductionStrategy.LeadTimeReductionStrategy and $projection.ProductionPlant = _LeadTimeReductionStrategy.Plant
[0..1] I_OperationDateOffsetRefCode _StartDateOffsetReferenceCode $projection.StartDateOffsetReferenceCode = _StartDateOffsetReferenceCode.OperationDateOffsetRefCode
[0..1] I_OperationDateOffsetRefCode _EndDateOffsetReferenceCode $projection.EndDateOffsetReferenceCode = _EndDateOffsetReferenceCode.OperationDateOffsetRefCode
[0..1] I_Language _Language $projection.Language = _Language.Language
[0..1] I_Currency _OpExternalProcessingCurrency $projection.OpExternalProcessingCurrency = _OpExternalProcessingCurrency.Currency
[0..1] I_OpActyNtwkInstance _SetupOpActyNtwkInstance $projection.SetupOpActyNtwkInstance = _SetupOpActyNtwkInstance.OpActyNtwkInstance
[0..1] I_OpActyNtwkInstance _ProduceOpActyNtwkInstance $projection.ProduceOpActyNtwkInstance = _ProduceOpActyNtwkInstance.OpActyNtwkInstance
[0..1] I_OpActyNtwkInstance _TeardownOpActyNtwkInstance $projection.TeardownOpActyNtwkInstance = _TeardownOpActyNtwkInstance.OpActyNtwkInstance

Annotations (16)

NameValueLevelField
AbapCatalog.sqlViewName IPPMFGORDOPER view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #CHECK view
Analytics.dataCategory #DIMENSION view
ClientHandling.algorithm #SESSION_VARIABLE view
ClientHandling.type #CLIENT_DEPENDENT view
Metadata.allowExtensions true view
ObjectModel.representativeKey OrderIntBillOfOperationsItem view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
VDM.lifecycle.status #DEPRECATED view
VDM.lifecycle.successor I_ManufacturingOrderOperation view
VDM.viewType #COMPOSITE view
EndUserText.label Manufacturing Order Operation view

Fields (76)

KeyFieldSource TableSource FieldDescription
KEY OrderInternalBillOfOperations
KEY OrderIntBillOfOperationsItem
ManufacturingOrder
ManufacturingOrderSequence
MfgOrderOperationOrSubOp afvc Operation
ManufacturingOrderCategory
ManufacturingOrderType
ProductionSupervisor
MRPController
ResponsiblePlannerGroup
ProductConfiguration
InspectionLot I_MfgOrderBasic InspectionLot
ManufacturingOrderImportance I_MfgOrderBasic ManufacturingOrderImportance
MfgOrderOperationText
Language I_OrderOperation Language
OperationStandardTextCode
OperationIsToBeDeleted I_OrderOperation OperationIsToBeDeleted
MfgOrderOperationIsPhase I_OrderOperation MfgOrderOperationIsPhase
MfgOrderPhaseSuperiorOperation afvp Operation
NumberOfCapacities
NumberOfConfirmationSlips I_OrderOperation NumberOfConfirmationSlips
OperationImportance I_OrderOperation OperationImportance
SuperiorOperationInternalID
ProductionPlant
WorkCenterInternalID
WorkCenterTypeCode I_OrderOperation WorkCenterTypeCode
WorkCenterTypeCode_2
OperationControlProfile
ControlRecipeDestination I_OrderOperation ControlRecipeDestination
OperationConfirmation I_OrderOperation OperationConfirmation
NumberOfOperationConfirmations
FactoryCalendar
CapacityRequirement I_OrderOperation CapacityRequirement
CapacityRequirementItem
ChangeNumber I_OrderOperation ChangeNumber
ManufacturingObject
OperationTrackingNumber I_OrderOperation OperationTrackingNumber
BillOfOperationsType
BillOfOperationsGroup I_OrderOperation BillOfOperationsGroup
BillOfOperationsVariant I_OrderOperation BillOfOperationsVariant
BillOfOperationsSequence I_OrderOperation BillOfOperationsSequence
BOOOperationInternalID I_OrderOperation BOOOperationInternalID
BillOfOperationsVersion I_OrderOperation BillOfOperationsVersion
BillOfMaterialCategory
BillOfMaterialInternalID I_OrderOperation BillOfMaterialInternalID
BillOfMaterialItemNodeNumber
BOMItemNodeCount I_OrderOperation BOMItemNodeCount
ExtProcgOperationHasSubcontrg I_OrderOperation ExtProcgOperationHasSubcontrg
PurchasingOrganization
PurchasingGroup I_OrderOperation PurchasingGroup
PurchaseRequisition
PurgInfoRecdDataIsFixed I_OrderOperation PurgInfoRecdDataIsFixed
PurchasingInfoRecordCategory
Supplier I_OrderOperation Supplier
GoodsRecipientName
UnloadingPointName I_OrderOperation UnloadingPointName
OpExternalProcessingCurrency I_OrderOperation Currency
OpExternalProcessingPrice I_OrderOperation OpExternalProcessingPrice
NumberOfOperationPriceUnits I_OrderOperation NumberOfOperationPriceUnits
CompanyCode I_OrderOperation CompanyCode
BusinessArea I_OrderOperation BusinessArea
ControllingArea I_MfgOrderBasic ControllingArea
ProfitCenter I_OrderOperation ProfitCenter
RequestingCostCenter I_OrderOperation RequestingCostCenter
CostElement I_OrderOperation CostElement
CostingVariant I_OrderOperation CostingVariant
CostingSheet I_OrderOperation CostingSheet
CostEstimate I_OrderOperation CostEstimate
ControllingObjectCurrency I_OrderOperation ControllingObjectCurrency
ControllingObjectClass I_OrderOperation ControllingObjectClass
FunctionalArea I_OrderOperation FunctionalArea
TaxJurisdiction I_OrderOperation TaxJurisdiction
EmployeeWageType
EmployeeWageGroup
EmployeeSuitability
NumberOfTimeTickets I_OrderOperation NumberOfTimeTickets
@AbapCatalog.sqlViewName: 'IPPMFGORDOPER'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@AccessControl.privilegedAssociations: ['_MRPController', '_ProductionSupervisor', '_LongText']
@Analytics.dataCategory: #DIMENSION
@ClientHandling.algorithm: #SESSION_VARIABLE
@ClientHandling.type: #CLIENT_DEPENDENT
@Metadata.allowExtensions: true
@ObjectModel.representativeKey: 'OrderIntBillOfOperationsItem'
@ObjectModel.semanticKey: ['ManufacturingOrder', 'ManufacturingOrderSequence', 'ManufacturingOrderOperation']
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #XL, dataClass: #TRANSACTIONAL}
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'I_ManufacturingOrderOperation'
@VDM.viewType: #COMPOSITE
@EndUserText.label: 'Manufacturing Order Operation'

define view I_MfgOrderOperation
  as select from    I_OrderOperation             as afvg
    inner join      I_MfgOrderBasic              as aufv on  aufv.OrderInternalID = afvg.OrderInternalID
    left outer to one join I_OrderOperationBasic as afvc on  afvc.OrderInternalID = afvg.OrderInternalID //sub-operation handling

                                                         and afvc.OrderOperationInternalID = afvg.SuperiorOperationInternalID
    left outer to one join I_OrderOperationBasic as afvp on  afvp.OrderInternalID = afvg.OrderInternalID //phase handling

                                                         and afvp.OrderOperationInternalID = afvg.OrderIntBillOfOpItemOfPhase

  association [1..1] to I_OrdInternalBillOfOperations as _OrdInternalBillOfOperations  on  $projection.OrderInternalBillOfOperations = _OrdInternalBillOfOperations.OrderInternalBillOfOperations
  association [1..1] to I_MfgOrder                    as _MfgOrder                     on  $projection.ManufacturingOrder = _MfgOrder.ManufacturingOrder
  association [1..1] to I_MfgOrderSequence            as _MfgOrderSequence             on  $projection.ManufacturingOrder         = _MfgOrderSequence.ManufacturingOrder
                                                                                       and $projection.ManufacturingOrderSequence = _MfgOrderSequence.ManufacturingOrderSequence
  association [1..1] to I_MfgOrderCategory            as _MfgOrderCategory             on  $projection.ManufacturingOrderCategory = _MfgOrderCategory.ManufacturingOrderCategory
  association [1..1] to I_MfgOrderType                as _MfgOrderType                 on  $projection.ManufacturingOrderType = _MfgOrderType.ManufacturingOrderType
  association [0..1] to I_OrderOperationBasic         as _SuperiorOperation            on  $projection.OrderInternalBillOfOperations = _SuperiorOperation.OrderInternalID
                                                                                       and $projection.SuperiorOperationInternalID   = _SuperiorOperation.OrderOperationInternalID
  association [0..1] to I_OperationStandardText       as _OperationStandardTextCode    on  $projection.OperationStandardTextCode = _OperationStandardTextCode.OperationStandardTextCode
  association [1..1] to I_Plant                       as _ProductionPlant              on  $projection.ProductionPlant = _ProductionPlant.Plant
  association [1..1] to I_UnitOfMeasure               as _ProductionUnit               on  $projection.ProductionUnit = _ProductionUnit.UnitOfMeasure
  association [1..1] to I_UnitOfMeasure               as _OperationUnit                on  $projection.OperationUnit = _OperationUnit.UnitOfMeasure
  association [0..1] to I_MRPController               as _MRPController                on  $projection.ProductionPlant = _MRPController.Plant
                                                                                       and $projection.MRPController   = _MRPController.MRPController
  association [0..1] to I_ProductionSupervisor        as _ProductionSupervisor         on  $projection.ProductionPlant      = _ProductionSupervisor.Plant
                                                                                       and $projection.ProductionSupervisor = _ProductionSupervisor.ProductionSupervisor
  association [0..1] to I_ResponsiblePlannerGroup     as _ResponsiblePlannerGroup      on  $projection.ProductionPlant         = _ResponsiblePlannerGroup.Plant
                                                                                       and $projection.ResponsiblePlannerGroup = _ResponsiblePlannerGroup.ResponsiblePlannerGroup
  association [0..1] to I_WorkCenterType              as _WorkCenterType               on  $projection.WorkCenterTypeCode = _WorkCenterType.WorkCenterTypeCode
  association [0..1] to I_WorkCenter                  as _WorkCenter                   on  $projection.WorkCenterTypeCode   = _WorkCenter.WorkCenterTypeCode
                                                                                       and $projection.WorkCenterInternalID = _WorkCenter.WorkCenterInternalID
  association [0..1] to I_WorkCenterType              as _WorkCenterType_2             on  $projection.WorkCenterTypeCode_2 = _WorkCenterType_2.WorkCenterTypeCode
  association [0..1] to I_WorkCenter                  as _WorkCenter_2                 on  $projection.WorkCenterTypeCode_2 = _WorkCenter_2.WorkCenterTypeCode
                                                                                       and $projection.WorkCenterInternalID = _WorkCenter_2.WorkCenterInternalID
  association [1..1] to I_OperationControlProfile     as _OperationControlProfile      on  $projection.OperationControlProfile = _OperationControlProfile.OperationControlProfile
  association [0..1] to I_BillOfOperationsType        as _BillOfOperationsType         on  $projection.BillOfOperationsType = _BillOfOperationsType.BillOfOperationsType
  association [0..1] to I_BillOfOperationsGroup       as _BillOfOperationsGroup        on  $projection.BillOfOperationsType  = _BillOfOperationsGroup.BillOfOperationsType
                                                                                       and $projection.BillOfOperationsGroup = _BillOfOperationsGroup.BillOfOperationsGroup
  association [0..1] to I_BillOfOperations            as _BillOfOperationsVariant      on  $projection.BillOfOperationsType    = _BillOfOperationsVariant.BillOfOperationsType
                                                                                       and $projection.BillOfOperationsGroup   = _BillOfOperationsVariant.BillOfOperationsGroup
                                                                                       and $projection.BillOfOperationsVariant = _BillOfOperationsVariant.BillOfOperationsVariant
  association [0..1] to I_BillOfOperationsSequence    as _BillOfOperationsSequence     on  $projection.BillOfOperationsType      = _BillOfOperationsSequence.BillOfOperationsType
                                                                                       and $projection.BillOfOperationsGroup     = _BillOfOperationsSequence.BillOfOperationsGroup
                                                                                       and $projection.BillOfOperationsVariant   = _BillOfOperationsSequence.BillOfOperationsVariant
                                                                                       and $projection.BillOfOperationsSequence  = _BillOfOperationsSequence.BillOfOperationsSequence
  association [0..1] to I_BOOOperationInternalID      as _BOOOperationInternalID       on  $projection.BillOfOperationsType   = _BOOOperationInternalID.BillOfOperationsType
                                                                                       and $projection.BillOfOperationsGroup  = _BOOOperationInternalID.BillOfOperationsGroup
                                                                                       and $projection.BOOOperationInternalID = _BOOOperationInternalID.BOOOperationInternalID
  association [0..1] to I_FactoryCalendar             as _FactoryCalendar              on  $projection.FactoryCalendar = _FactoryCalendar.FactoryCalendar
  association [0..1] to I_CapacityRequirement         as _CapacityRequirement          on  $projection.CapacityRequirement = _CapacityRequirement.CapacityRequirement
  association [0..1] to I_CapacityRequirementItem     as _CapacityRequirementItem      on  $projection.CapacityRequirement     = _CapacityRequirementItem.CapacityRequirement
                                                                                       and $projection.CapacityRequirementItem = _CapacityRequirementItem.CapacityRequirementItem
  association [0..1] to I_ControlRecipeDestination    as _ControlRecipeDestination     on  $projection.ProductionPlant          = _ControlRecipeDestination.Plant
                                                                                       and $projection.ControlRecipeDestination = _ControlRecipeDestination.ControlRecipeDestination
  association [0..1] to I_ConfirmationGroup           as _OperationConfirmation        on  $projection.OperationConfirmation = _OperationConfirmation.ConfirmationGroup
  association [0..1] to I_ChangeMaster                as _ChangeNumber                 on  $projection.ChangeNumber = _ChangeNumber.ChangeNumber
  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_PurchaseRequisitionItemAPI01 as _PurchaseRequisitionItem     on  $projection.PurchaseRequisition     = _PurchaseRequisitionItem.PurchaseRequisition
                                                                                       and $projection.PurchaseRequisitionItem = _PurchaseRequisitionItem.PurchaseRequisitionItem
  association [0..1] to I_PurchasingOrganization      as _PurchasingOrganization       on  $projection.PurchasingOrganization = _PurchasingOrganization.PurchasingOrganization
  association [0..1] to I_PurchasingGroup             as _PurchasingGroup              on  $projection.PurchasingGroup = _PurchasingGroup.PurchasingGroup
  association [0..1] to I_PurchasingInfoRecordApi01   as _PurchasingInfoRecord         on  $projection.PurchasingInfoRecord = _PurchasingInfoRecord.PurchasingInfoRecord
  association [0..1] to I_Supplier                    as _Supplier                     on  $projection.Supplier = _Supplier.Supplier
  association [0..1] to I_SupplierCompanyByPlant      as _SupplierCompanyByPlant       on  $projection.ProductionPlant = _SupplierCompanyByPlant.Plant
                                                                                       and $projection.Supplier        = _SupplierCompanyByPlant.Supplier
  association [0..1] to I_EmployeeWageGroup           as _EmployeeWageGroup            on  $projection.ProductionPlant   = _EmployeeWageGroup.Plant
                                                                                       and $projection.EmployeeWageGroup = _EmployeeWageGroup.EmployeeWageGroup
  association [0..1] to I_EmployeeSuitability         as _EmployeeSuitability          on  $projection.ProductionPlant     = _EmployeeSuitability.Plant
                                                                                       and $projection.EmployeeSuitability = _EmployeeSuitability.EmployeeSuitability
--association [0..1] to I_Employment                  as _Employee                     on  $projection.Personnel = _Employee.EmploymentInternalID
  association [0..1] to I_PersonWorkAgreement_1       as _Employee                     on  $projection.Personnel = _Employee.PersonWorkAgreement
  association [0..1] to I_CompanyCode                 as _CompanyCode                  on  $projection.CompanyCode = _CompanyCode.CompanyCode
  association [0..*] to I_ProfitCenter                as _ProfitCenter                 on  $projection.ControllingArea = _ProfitCenter.ControllingArea
                                                                                       and $projection.ProfitCenter    = _ProfitCenter.ProfitCenter
  association [0..*] to I_CostCenter                  as _RequestingCostCenter         on  $projection.ControllingArea      = _RequestingCostCenter.ControllingArea
                                                                                       and $projection.RequestingCostCenter = _RequestingCostCenter.CostCenter
  association [0..1] to I_ControllingArea             as _ControllingArea              on  $projection.ControllingArea = _ControllingArea.ControllingArea
  association [0..1] to I_ControllingObjectClass      as _ControllingObjectClass       on  $projection.ControllingObjectClass = _ControllingObjectClass.ControllingObjectClass
  association [0..1] to I_FunctionalArea              as _FunctionalArea               on  $projection.FunctionalArea = _FunctionalArea.FunctionalArea
  association [0..1] to I_BusinessArea                as _BusinessArea                 on  $projection.BusinessArea = _BusinessArea.BusinessArea
  association [0..1] to I_BusinessProcess             as _BusinessProcess              on  $projection.ControllingArea = _BusinessProcess.ControllingArea
                                                                                       and $projection.BusinessProcess = _BusinessProcess.BusinessProcess
  association [0..1] to I_UnitOfMeasure               as _BusinessProcessEntryUnit     on  $projection.BusinessProcessEntryUnit = _BusinessProcessEntryUnit.UnitOfMeasure
  association [0..1] to I_OperationSetupGroupCategory as _OperationSetupGroupCategory  on  $projection.ProductionPlant             = _OperationSetupGroupCategory.Plant
                                                                                       and $projection.OperationSetupGroupCategory = _OperationSetupGroupCategory.OperationSetupGroupCategory
  association [0..1] to I_OperationSetupGroup         as _OperationSetupGroup          on  $projection.OperationSetupGroup         = _OperationSetupGroup.OperationSetupGroup
                                                                                       and $projection.OperationSetupGroupCategory = _OperationSetupGroup.OperationSetupGroupCategory
                                                                                       and $projection.ProductionPlant             = _OperationSetupGroup.Plant
  association [0..1] to I_OperationSetupType          as _OperationSetupType           on  $projection.OperationSetupType = _OperationSetupType.OperationSetupType
                                                                                       and $projection.ProductionPlant    = _OperationSetupType.Plant
  association [0..1] to I_LeadTimeReductionStrategy   as _LeadTimeReductionStrategy    on  $projection.LeadTimeReductionStrategy = _LeadTimeReductionStrategy.LeadTimeReductionStrategy
                                                                                       and $projection.ProductionPlant           = _LeadTimeReductionStrategy.Plant
  association [0..1] to I_OperationDateOffsetRefCode  as _StartDateOffsetReferenceCode on  $projection.StartDateOffsetReferenceCode = _StartDateOffsetReferenceCode.OperationDateOffsetRefCode
  association [0..1] to I_OperationDateOffsetRefCode  as _EndDateOffsetReferenceCode   on  $projection.EndDateOffsetReferenceCode   = _EndDateOffsetReferenceCode.OperationDateOffsetRefCode
  association [0..1] to I_Language                    as _Language                     on  $projection.Language = _Language.Language
  association [0..1] to I_Currency                    as _OpExternalProcessingCurrency on  $projection.OpExternalProcessingCurrency = _OpExternalProcessingCurrency.Currency
  association [0..1] to I_OpActyNtwkInstance          as _SetupOpActyNtwkInstance      on  $projection.SetupOpActyNtwkInstance    = _SetupOpActyNtwkInstance.OpActyNtwkInstance
  association [0..1] to I_OpActyNtwkInstance          as _ProduceOpActyNtwkInstance    on  $projection.ProduceOpActyNtwkInstance  = _ProduceOpActyNtwkInstance.OpActyNtwkInstance
  association [0..1] to I_OpActyNtwkInstance          as _TeardownOpActyNtwkInstance   on  $projection.TeardownOpActyNtwkInstance = _TeardownOpActyNtwkInstance.OpActyNtwkInstance
{
      // Technical Key

      @ObjectModel.foreignKey.association: '_OrdInternalBillOfOperations'
  key cast(afvg.OrderInternalID          as pph_aufpl           preserving type) as OrderInternalBillOfOperations,
  key cast(afvg.OrderOperationInternalID as operationinternalid preserving type) as OrderIntBillOfOperationsItem,

      // Semantical key

      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderStdVH', element: 'ManufacturingOrder' } } ]
      @ObjectModel.foreignKey.association: '_MfgOrder'
      cast(aufv.ManufacturingOrder as manufacturingorder preserving type) as ManufacturingOrder,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderSequenceStdVH', element: 'ManufacturingOrderSequence' } } ]
      @ObjectModel.foreignKey.association: '_MfgOrderSequence'
      cast(afvg.Sequence as manufacturingordersequence preserving type)   as ManufacturingOrderSequence,
      @ObjectModel.text.element: ['MfgOrderOperationText']
      case
        when afvg.SuperiorOperationInternalID > '00000000' then
          cast(afvc.Operation as manufacturingorderoperation preserving type)  //superior operation ID

        else
          cast(afvg.Operation as manufacturingorderoperation preserving type)
      end                                                                 as ManufacturingOrderOperation,
      @ObjectModel.text.element: ['MfgOrderOperationText']
      case
        when afvg.SuperiorOperationInternalID > '00000000' then
          cast(afvg.Operation as manufacturingordersuboperation preserving type)
        else ''
      end                                                                 as ManufacturingOrderSubOperation,
      afvc.Operation as MfgOrderOperationOrSubOp,

      // Order header data

      @ObjectModel.foreignKey.association: '_MfgOrderCategory'
      cast(aufv.ManufacturingOrderCategory as manufacturingordercategory preserving type) as ManufacturingOrderCategory,
      @ObjectModel.foreignKey.association: '_MfgOrderType'
      cast(aufv.ManufacturingOrderType     as manufacturingordertype preserving type)     as ManufacturingOrderType,
      @ObjectModel.foreignKey.association: '_ProductionSupervisor'
      cast(aufv.ProductionSupervisor       as pph_fevor preserving type)                  as ProductionSupervisor,
      @ObjectModel.foreignKey.association: '_MRPController'
      cast(aufv.MRPController              as pph_dispo preserving type)                  as MRPController,
      @ObjectModel.foreignKey.association: '_ResponsiblePlannerGroup'
      cast(aufv.ResponsiblePlannerGroup    as vagrp preserving type)                      as ResponsiblePlannerGroup,
      cast(aufv.ProductConfiguration       as product_configuration preserving type)      as ProductConfiguration,
      aufv.InspectionLot,
      aufv.ManufacturingOrderImportance,

      // Text

      @Semantics.text: true
      cast(afvg.OperationText as mfgorderoperationtext preserving type) as MfgOrderOperationText,
      @ObjectModel.foreignKey.association: '_Language'
      afvg.Language                                                     as Language,
      @ObjectModel.foreignKey.association: '_OperationStandardTextCode'
      cast(afvg.StandardTextInternalID as pph_ktsch preserving type)    as OperationStandardTextCode,
      // Long text logic

      cast(case afvg.Language
            when '' then ''
            else 'X'
      end as aufltext preserving type)                             as OperationHasLongText,

      // Attributes

      afvg.OperationIsToBeDeleted,
      afvg.MfgOrderOperationIsPhase,
      afvp.Operation as MfgOrderPhaseSuperiorOperation,
      cast(afvg.NumberOfCapacities as pph_anzkap preserving type)  as NumberOfCapacities,
      afvg.NumberOfConfirmationSlips,
      afvg.OperationImportance,

      // Assignments

--    @ObjectModel.foreignKey.association: '_SuperiorOperation'
      afvg.SuperiorOperationInternalID,
      @ObjectModel.foreignKey.association: '_ProductionPlant'
      cast(afvg.Plant as pwwrk preserving type)                                 as ProductionPlant,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_WorkCenterStdVH', element: 'WorkCenterInternalID' } } ]
      @ObjectModel.foreignKey.association: '_WorkCenter_2'
      cast(afvg.WorkCenterInternalID as pph_arbid preserving type)              as WorkCenterInternalID,
      @ObjectModel.foreignKey.association: '_WorkCenterType'
      @VDM.lifecycle.status: #DEPRECATED
      @VDM.lifecycle.successor: 'WorkCenterTypeCode_2'
      afvg.WorkCenterTypeCode                                                   as WorkCenterTypeCode,   // CHAR1

      @ObjectModel.foreignKey.association: '_WorkCenterType_2'
      cast(afvg.WorkCenterTypeCode_2 as vdm_arbty preserving type)              as WorkCenterTypeCode_2, // CHAR2

      @ObjectModel.foreignKey.association: '_OperationControlProfile'
      cast(afvg.OperationControlProfile as pph_steus preserving type)           as OperationControlProfile,
      @ObjectModel.foreignKey.association: '_ControlRecipeDestination'
      afvg.ControlRecipeDestination,
      @ObjectModel.foreignKey.association: '_OperationConfirmation'
      afvg.OperationConfirmation,
      cast(afvg.NumberOfOperationConfirmations as pph_noofconf preserving type) as NumberOfOperationConfirmations,
      @ObjectModel.foreignKey.association: '_FactoryCalendar'
      cast(afvg.FactoryCalendar as cr_wfcid preserving type)                    as FactoryCalendar,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_CapacityRequirementStdVH', element: 'CapacityRequirement' } } ]
      @ObjectModel.foreignKey.association: '_CapacityRequirement'
      afvg.CapacityRequirement,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_CapRqmtItmStdVH', element: 'CapacityRequirementItem' } } ]
      @ObjectModel.foreignKey.association: '_CapacityRequirementItem'
      cast(afvg.CapacityRequirementItem as pph_bedzl preserving type)           as CapacityRequirementItem,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ChangeMasterStdVH', element: 'ChangeNumber' } } ]
      @ObjectModel.foreignKey.association: '_ChangeNumber'
      afvg.ChangeNumber,
      cast(afvg.ObjectInternalID as pph_objnr preserving type)                  as ManufacturingObject,
      afvg.OperationTrackingNumber,

      // Assignments BOO and BOM

      @ObjectModel.foreignKey.association: '_BillOfOperationsType'
      cast(afvg.BillOfOperationsType as billofoperationstype preserving type)   as BillOfOperationsType,
      @ObjectModel.foreignKey.association: '_BillOfOperationsGroup'
      afvg.BillOfOperationsGroup,
      @ObjectModel.foreignKey.association: '_BillOfOperationsVariant'
      afvg.BillOfOperationsVariant,
      @ObjectModel.foreignKey.association: '_BillOfOperationsSequence'
      afvg.BillOfOperationsSequence,
      @ObjectModel.foreignKey.association: '_BOOOperationInternalID'
      afvg.BOOOperationInternalID,
      afvg.BillOfOperationsVersion,
      cast(afvg.BillOfMaterialCategory as pph_stlty preserving type)            as BillOfMaterialCategory,
      afvg.BillOfMaterialInternalID,
      cast(afvg.BillOfMaterialItemNodeNumber as pph_stlkn preserving type)      as BillOfMaterialItemNodeNumber,
      afvg.BOMItemNodeCount,

      // Assignments Purchasing

      afvg.ExtProcgOperationHasSubcontrg,
      @ObjectModel.foreignKey.association: '_PurchasingOrganization'
      cast(afvg.PurchasingOrganization as pph_ekorg preserving type)             as PurchasingOrganization,
      @ObjectModel.foreignKey.association: '_PurchasingGroup'
      afvg.PurchasingGroup,
--    @ObjectModel.foreignKey.association: '_PurchaseRequisition'
      afvg.PurchaseRequisition,
--    @ObjectModel.foreignKey.association: '_PurchaseRequisitionItem'
      cast(afvg.PurchaseRequisitionItem as pph_bnfpo preserving type)            as PurchaseRequisitionItem,
--    @ObjectModel.foreignKey.association: '_PurchaseOrder'
      cast(afvg.PurchasingDocument     as vdm_purchaseorder     preserving type) as PurchaseOrder,
--    @ObjectModel.foreignKey.association: '_PurchaseOrderItem'
      cast(afvg.PurchasingDocumentItem as vdm_purchaseorderitem preserving type) as PurchaseOrderItem,
--    @ObjectModel.foreignKey.association: '_PurchasingInfoRecord'
      cast(afvg.PurchasingInfoRecord as pph_infnr preserving type)               as PurchasingInfoRecord,
      afvg.PurgInfoRecdDataIsFixed,
      cast(afvg.PurchasingInfoRecordCategory as pph_esokz preserving type)       as PurchasingInfoRecordCategory,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      afvg.OpExternalProcessingPriceUnit,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_Supplier_VH', element: 'Supplier' } } ]
      @ObjectModel.foreignKey.association: '_Supplier'
      afvg.Supplier,
      @Semantics.text: true
      cast(afvg.GoodsRecipientName as pph_wempf preserving type)                 as GoodsRecipientName,
      @Semantics.text: true
      afvg.UnloadingPointName,

      // Amount and Currency

      @Semantics.currencyCode: true
      afvg.Currency as OpExternalProcessingCurrency,
      @DefaultAggregation: #SUM
      @Semantics.amount.currencyCode: 'OpExternalProcessingCurrency'
      afvg.OpExternalProcessingPrice,
      afvg.NumberOfOperationPriceUnits,

      // Assignments FI/CO

      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_CompanyCodeStdVH', element: 'CompanyCode' } } ]
      @ObjectModel.foreignKey.association: '_CompanyCode'
      afvg.CompanyCode,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_BusinessAreaStdVH', element: 'BusinessArea' } } ]
      @ObjectModel.foreignKey.association: '_BusinessArea'
      afvg.BusinessArea,
      @ObjectModel.foreignKey.association: '_ControllingArea'
      aufv.ControllingArea,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_ProfitCenterStdVH', element: 'ProfitCenter' } } ]
      afvg.ProfitCenter,
      afvg.RequestingCostCenter,
      afvg.CostElement,
      afvg.CostingVariant,
      afvg.CostingSheet,
      afvg.CostEstimate,
      afvg.ControllingObjectCurrency,
      @ObjectModel.foreignKey.association: '_ControllingObjectClass'
      afvg.ControllingObjectClass,
      @ObjectModel.foreignKey.association: '_FunctionalArea'
      afvg.FunctionalArea,
      afvg.TaxJurisdiction,

      // Assignments HR

      cast(afvg.EmployeeWageType    as pph_loart preserving type) as EmployeeWageType,
      @ObjectModel.foreignKey.association: '_EmployeeWageGroup'
      cast(afvg.EmployeeWageGroup   as pph_logrp preserving type) as EmployeeWageGroup,
      @ObjectModel.foreignKey.association: '_EmployeeSuitability'
      cast(afvg.EmployeeSuitability as pph_qualf preserving type) as EmployeeSuitability,
      afvg.NumberOfTimeTickets,
      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_PersWrkAgrmtSrchHelp', element: 'PersonWorkAgreement' } } ]
      @ObjectModel.foreignKey.association: '_Employee'
      cast(afvg.Personnel           as pph_pernr preserving type) as Personnel,
      cast(afvg.NumberOfEmployees   as pph_anzms preserving type) as NumberOfEmployees,

      // Setup and Overlapping

      @ObjectModel.foreignKey.association: '_OperationSetupGroupCategory'
      cast(afvg.OperationSetupGroupCategory as pph_rfgrp preserving type) as OperationSetupGroupCategory,
      @ObjectModel.foreignKey.association: '_OperationSetupGroup'
      cast(afvg.OperationSetupGroup         as pph_rfsch preserving type) as OperationSetupGroup,
      @ObjectModel.foreignKey.association: '_OperationSetupType'
      cast(afvg.OperationSetupType          as pph_rasch preserving type) as OperationSetupType,
      afvg.OperationOverlappingIsRequired,
      afvg.OperationOverlappingIsPossible,
      afvg.OperationsIsAlwaysOverlapping,
      afvg.OperationSplitIsRequired,
      afvg.MaximumNumberOfSplits,
      @ObjectModel.foreignKey.association: '_LeadTimeReductionStrategy'
      cast(afvg.LeadTimeReductionStrategy as pph_rstra preserving type) as LeadTimeReductionStrategy,
      afvg.OpSchedldReductionLevel,

      // Dates and Times

      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpErlstSchedldExecStrtDte   as pph_fsavd preserving type) as OpErlstSchedldExecStrtDte,
      cast(afvg.OpErlstSchedldExecStrtTme   as pph_fsavz preserving type) as OpErlstSchedldExecStrtTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpErlstSchedldProcgStrtDte  as pph_fssbd preserving type) as OpErlstSchedldProcgStrtDte,
      cast(afvg.OpErlstSchedldProcgStrtTme  as pph_fssbz preserving type) as OpErlstSchedldProcgStrtTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpErlstSchedldTrdwnStrtDte  as pph_fssad preserving type) as OpErlstSchedldTrdwnStrtDte,
      cast(afvg.OpErlstSchedldTrdwnStrtTme  as pph_fssaz preserving type) as OpErlstSchedldTrdwnStrtTme,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.OpErlstSchedldExecEndDte    as pph_fsedd preserving type) as OpErlstSchedldExecEndDte,
      cast(afvg.OpErlstSchedldExecEndTme    as pph_fsedz preserving type) as OpErlstSchedldExecEndTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpLtstSchedldExecStrtDte    as pph_ssavd preserving type) as OpLtstSchedldExecStrtDte,
      cast(afvg.OpLtstSchedldExecStrtTme    as pph_ssavz preserving type) as OpLtstSchedldExecStrtTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpLtstSchedldProcgStrtDte   as pph_sssbd preserving type) as OpLtstSchedldProcgStrtDte,
      cast(afvg.OpLtstSchedldProcgStrtTme   as pph_sssbz preserving type) as OpLtstSchedldProcgStrtTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpLtstSchedldTrdwnStrtDte   as pph_sssad preserving type) as OpLtstSchedldTrdwnStrtDte,
      cast(afvg.OpLtstSchedldTrdwnStrtTme   as pph_sssaz preserving type) as OpLtstSchedldTrdwnStrtTme,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.OpLtstSchedldExecEndDte     as pph_ssedd preserving type) as OpLtstSchedldExecEndDte,
      cast(afvg.OpLtstSchedldExecEndTme     as pph_ssedz preserving type) as OpLtstSchedldExecEndTme,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OperationConfirmedStartDate as pph_isavd preserving type) as OperationConfirmedStartDate,
      cast(afvg.OperationConfirmedEndDate   as pph_ieavd preserving type) as OperationConfirmedEndDate,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpActualExecutionStartDate  as vdm_isdd preserving type)  as OpActualExecutionStartDate,
      cast(afvg.OpActualExecutionStartTime  as vdm_isdz preserving type)  as OpActualExecutionStartTime,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.OpActualSetupEndDate        as vdm_ierd preserving type)  as OpActualSetupEndDate,
      cast(afvg.OpActualSetupEndTime        as vdm_ierz preserving type)  as OpActualSetupEndTime,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpActualProcessingStartDate as vdm_isbd preserving type)  as OpActualProcessingStartDate,
      cast(afvg.OpActualProcessingStartTime as vdm_isbz preserving type)  as OpActualProcessingStartTime,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.OpActualProcessingEndDate   as vdm_iebd preserving type)  as OpActualProcessingEndDate,
      cast(afvg.OpActualProcessingEndTime   as vdm_iebz preserving type)  as OpActualProcessingEndTime,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.OpActualTeardownStartDate   as vdm_isad preserving type)  as OpActualTeardownStartDate,
      cast(afvg.OpActualTeardownStartTme    as vdm_isaz preserving type)  as OpActualTeardownStartTme,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.OpActualExecutionEndDate    as vdm_iedd preserving type)  as OpActualExecutionEndDate,
      cast(afvg.OpActualExecutionEndTime    as vdm_iedz preserving type)  as OpActualExecutionEndTime,
      // Forecast Dates and Times

      @Semantics.calendarItem.dtEnd: true
      cast(afvg.ActualForecastEndDate       as pph_pedd preserving type)  as ActualForecastEndDate,
      cast(afvg.ActualForecastEndTime       as pph_pedz preserving type)  as ActualForecastEndTime,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.SchedldFcstdEarliestStartDate as pph_fpavd preserving type) as SchedldFcstdEarliestStartDate,
      cast(afvg.SchedldFcstdEarliestStartTime as pph_fpavz preserving type) as SchedldFcstdEarliestStartTime,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.SchedldFcstdEarliestEndDate   as pph_fpedd preserving type) as SchedldFcstdEarliestEndDate,
      cast(afvg.SchedldFcstdEarliestEndTime   as pph_fpedz preserving type) as SchedldFcstdEarliestEndTime,
      @Semantics.calendarItem.dtStart: true
      cast(afvg.LatestSchedldFcstdStartDate   as pph_spavd preserving type) as LatestSchedldFcstdStartDate,
      cast(afvg.SchedldFcstdLatestStartTime   as pph_spavz preserving type) as SchedldFcstdLatestStartTime,
      @Semantics.calendarItem.dtEnd: true
      cast(afvg.LatestSchedldFcstdEndDate     as pph_spedd preserving type) as LatestSchedldFcstdEndDate,
      cast(afvg.SchedldFcstdLatestEndTime     as pph_spedz preserving type) as SchedldFcstdLatestEndTime,
      // Wait Date and Times

      @Semantics.calendarItem.dtStart: true
      afvg.EarliestScheduledWaitStartDate,
      afvg.EarliestScheduledWaitStartTime,
      @Semantics.calendarItem.dtEnd: true
      afvg.EarliestScheduledWaitEndDate,
      afvg.EarliestScheduledWaitEndTime,
      @Semantics.calendarItem.dtStart: true
      afvg.LatestScheduledWaitStartDate,
      afvg.LatestScheduledWaitStartTime,
      @Semantics.calendarItem.dtEnd: true
      afvg.LatestScheduledWaitEndDate,
      afvg.LatestScheduledWaitEndTime,

      // Durations

      afvg.BreakDurationUnit,
      afvg.PlannedBreakDuration,
      afvg.ConfirmedBreakDuration,
      cast(afvg.OverlapMinimumDurationUnit as pph_dzeimu preserving type) as OverlapMinimumDurationUnit,
      afvg.OverlapMinimumDuration,
      afvg.MaximumWaitDurationUnit,
      afvg.MaximumWaitDuration,
      afvg.MinimumWaitDurationUnit,
      afvg.MinimumWaitDuration,
      afvg.StandardMoveDurationUnit,
      afvg.StandardMoveDuration,
      afvg.StandardQueueDurationUnit,
      afvg.StandardQueueDuration,
      afvg.MinimumQueueDurationUnit,
      afvg.MinimumQueueDuration,
      afvg.MinimumMoveDurationUnit,
      afvg.MinimumMoveDuration,
      afvg.OperationStandardDuration,
      afvg.OperationStandardDurationUnit,
      afvg.MinimumDuration,
      afvg.MinimumDurationUnit,
      afvg.MinimumProcessingDuration,
      afvg.MinimumProcessingDurationUnit,
      afvg.ScheduledMoveDuration,
      afvg.ScheduledMoveDurationUnit,
      afvg.ScheduledQueueDuration,
      afvg.ScheduledQueueDurationUnit,
      afvg.ScheduledWaitDuration,
      afvg.ScheduledWaitDurationUnit,
      cast(afvg.PlannedDeliveryDuration     as pph_plifz preserving type) as PlannedDeliveryDuration,
      afvg.OpPlannedSetupDurn,
      afvg.OpPlannedSetupDurnUnit,
      afvg.OpPlannedProcessingDurn,
      cast(afvg.OpPlannedProcessingDurnUnit as pph_beaze preserving type) as OpPlannedProcessingDurnUnit,
      afvg.OpPlannedTeardownDurn,
      afvg.OpPlannedTeardownDurnUnit,
      afvg.ActualForecastDuration,
      afvg.ActualForecastDurationUnit,
      afvg.ForecastProcessingDuration,
      afvg.ForecastProcessingDurationUnit,
      afvg.ForecastedStandardDuration,
      afvg.FcstdStandardDurationUnit,
      afvg.ForecastedMinimumDuration,
      afvg.ForecastedMinimumDurationUnit,

      // Offset

      @ObjectModel.foreignKey.association: '_StartDateOffsetReferenceCode'
      afvg.StartDateOffsetReferenceCode,
      @Semantics.unitOfMeasure: true
      afvg.StartDateOffsetDurationUnit,
      @Semantics.calendarItem.duration: true
      afvg.StartDateOffsetDuration,
      @ObjectModel.foreignKey.association: '_EndDateOffsetReferenceCode'
      afvg.EndDateOffsetReferenceCode,
      @Semantics.unitOfMeasure: true
      afvg.EndDateOffsetDurationUnit,
      @Semantics.calendarItem.duration: true
      afvg.EndDateOffsetDuration,

      // Quantities and UoM

      @Semantics.unitOfMeasure: true
      cast(afvg.OperationUnit as operationunit preserving type) as OperationUnit,
      afvg.OpQtyToBaseQtyDnmntr,
      afvg.OpQtyToBaseQtyNmrtr,
      afvg.OperationScrapPercent,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #MAX
      afvg.OperationReferenceQuantity,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      afvg.OpPlannedTotalQuantity,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      afvg.OpPlannedScrapQuantity,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      (afvg.OpPlannedTotalQuantity - afvg.OpPlannedScrapQuantity) as OpPlannedYieldQuantity,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      afvg.OpTotalConfirmedYieldQty,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      afvg.OpTotalConfirmedScrapQty,
      @Semantics.quantity.unitOfMeasure: 'OperationUnit'
      @DefaultAggregation: #SUM
      afvg.OperationConfirmedReworkQty,
      @Semantics.unitOfMeasure: true
      cast(aufv.ProductionUnit as productionunit preserving type) as ProductionUnit,
      @Semantics.quantity.unitOfMeasure: 'ProductionUnit'
      @DefaultAggregation: #SUM
      afvg.OpTotConfdYieldQtyInOrdQtyUnit,

      // Confirmed Work Quantities and UoM

      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit1,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit1'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity1,
      afvg.NoFurtherOpWorkQuantity1IsExpd,
      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit2,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit2'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity2,
      afvg.NoFurtherOpWorkQuantity2IsExpd,
      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit3,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit3'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity3,
      afvg.NoFurtherOpWorkQuantity3IsExpd,
      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit4,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit4'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity4,
      afvg.NoFurtherOpWorkQuantity4IsExpd,
      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit5,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit5'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity5,
      afvg.NoFurtherOpWorkQuantity5IsExpd,
      @Semantics.unitOfMeasure: true
      afvg.OpWorkQuantityUnit6,
      @Semantics.quantity.unitOfMeasure: 'OpWorkQuantityUnit6'
      @DefaultAggregation: #SUM
      afvg.OpConfirmedWorkQuantity6,
      afvg.NoFurtherOpWorkQuantity6IsExpd,

      // Work Quantities and UoM

      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit1 as pph_vge01 preserving type) as WorkCenterStandardWorkQtyUnit1,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit1'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty1,
      afvg.CostCtrActivityType1,
      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit2 as pph_vge02 preserving type) as WorkCenterStandardWorkQtyUnit2,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit2'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty2,
      afvg.CostCtrActivityType2,
      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit3 as pph_vge03 preserving type) as WorkCenterStandardWorkQtyUnit3,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit3'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty3,
      afvg.CostCtrActivityType3,
      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit4 as pph_vge04 preserving type) as WorkCenterStandardWorkQtyUnit4,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit4'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty4,
      afvg.CostCtrActivityType4,
      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit5 as pph_vge05 preserving type) as WorkCenterStandardWorkQtyUnit5,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit5'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty5,
      afvg.CostCtrActivityType5,
      @Semantics.unitOfMeasure: true
      cast(afvg.WorkCenterStandardWorkQtyUnit6 as pph_vge06 preserving type) as WorkCenterStandardWorkQtyUnit6,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit6'
      @DefaultAggregation: #SUM
      afvg.WorkCenterStandardWorkQty6,
      afvg.CostCtrActivityType6,

      // Forecast Work Quantities

      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit1'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity1,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit2'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity2,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit3'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity3,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit4'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity4,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit5'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity5,
      @Semantics.quantity.unitOfMeasure: 'WorkCenterStandardWorkQtyUnit6'
      @DefaultAggregation: #SUM
      afvg.ForecastWorkQuantity6,

      // Business Process

      @Consumption.valueHelpDefinition: [ { entity: { name: 'I_BusinessProcessStdVH', element: 'BusinessProcess' } } ]
      @ObjectModel.foreignKey.association: '_BusinessProcess'
      afvg.BusinessProcess,
      @Semantics.unitOfMeasure: true
      afvg.BusinessProcessEntryUnit,
      @Semantics.quantity.unitOfMeasure: 'BusinessProcessEntryUnit'
      @DefaultAggregation: #SUM
      afvg.BusinessProcessConfirmedQty,
      afvg.NoFurtherBusinessProcQtyIsExpd,
      @Semantics.unitOfMeasure: true
      afvg.BusinessProcRemainingQtyUnit,
      @Semantics.quantity.unitOfMeasure: 'BusinessProcRemainingQtyUnit'
      @DefaultAggregation: #SUM
      cast(afvg.BusinessProcessRemainingQty as pph_oprz1 preserving type) as BusinessProcessRemainingQty,

      // OAN data

--    @ObjectModel.foreignKey.association: '_SetupOpActyNtwkInstance'
      afvg.SetupOpActyNtwkInstance,
--    @ObjectModel.foreignKey.association: '_ProduceOpActyNtwkInstance'
      afvg.ProduceOpActyNtwkInstance,
--    @ObjectModel.foreignKey.association: '_TeardownOpActyNtwkInstance'
      afvg.TeardownOpActyNtwkInstance,

      // Free-defined fields

      afvg.FreeDefinedTableFieldSemantic,
      afvg.FreeDefinedAttribute01,
      afvg.FreeDefinedAttribute02,
      afvg.FreeDefinedAttribute03,
      afvg.FreeDefinedAttribute04,
      @Semantics.unitOfMeasure: true
      afvg.FreeDefinedQuantity1Unit,
      @Semantics.quantity.unitOfMeasure: 'FreeDefinedQuantity1Unit'
      @DefaultAggregation: #SUM
      afvg.FreeDefinedQuantity1,
      @Semantics.unitOfMeasure: true
      afvg.FreeDefinedQuantity2Unit,
      @Semantics.quantity.unitOfMeasure: 'FreeDefinedQuantity2Unit'
      @DefaultAggregation: #SUM
      afvg.FreeDefinedQuantity2,
      @Semantics.currencyCode: true
      afvg.FreeDefinedAmount1Currency,
      @Semantics.amount.currencyCode: 'FreeDefinedAmount1Currency'
      @DefaultAggregation: #SUM
      afvg.FreeDefinedAmount1,
      afvg.FreeDefinedAmount2Currency,
      @Semantics.amount.currencyCode: 'FreeDefinedAmount2Currency'
      @DefaultAggregation: #SUM
      afvg.FreeDefinedAmount2,
      afvg.FreeDefinedDate1,
      afvg.FreeDefinedDate2,
      afvg.FreeDefinedIndicator1,
      afvg.FreeDefinedIndicator2,

      // Associations

      _OrdInternalBillOfOperations,
      _MfgOrder,
      _MfgOrderSequence,
      _MfgOrderCategory,
      _MfgOrderType,
      _SuperiorOperation,
      _OperationStandardTextCode,
      _ProductionPlant,
      _ProductionSupervisor,
      _ProductionUnit,
      _OperationUnit,
      @VDM.lifecycle.status: #DEPRECATED
      @VDM.lifecycle.successor: '_WorkCenter_2'
      _WorkCenter,
      _WorkCenter_2,
      @VDM.lifecycle.status: #DEPRECATED
      @VDM.lifecycle.successor: '_WorkCenterType_2'
      _WorkCenterType,
      _WorkCenterType_2,
      _OperationControlProfile,
      _BillOfOperationsType,
      _BillOfOperationsGroup,
      _BillOfOperationsVariant,
      _BillOfOperationsSequence,
      @Consumption.hidden: true
      _BOOOperationInternalID,
      _MRPController,
      _ResponsiblePlannerGroup,
      _ControlRecipeDestination,
      _OperationConfirmation,
      _FactoryCalendar,
      _CapacityRequirement,
      _CapacityRequirementItem,
      _ChangeNumber,
      _PurchasingOrganization,
      _PurchasingGroup,
      _PurchaseOrder,
      _PurchaseOrderItem,
      _PurchaseRequisition,
      _PurchaseRequisitionItem,
      _PurchasingInfoRecord,
      _Supplier,
      @Consumption.hidden: true
      _SupplierCompanyByPlant,
      _OpExternalProcessingCurrency,
      _EmployeeWageGroup,
      _EmployeeSuitability,
      _Employee,
      _CompanyCode,
      _ProfitCenter,
      _RequestingCostCenter,
      _ControllingArea,
      _ControllingObjectClass,
      _FunctionalArea,
      _BusinessArea,
      _BusinessProcess,
      _BusinessProcessEntryUnit,
      _OperationSetupGroupCategory,
      _OperationSetupGroup,
      _OperationSetupType,
      _LeadTimeReductionStrategy,
      _StartDateOffsetReferenceCode,
      _EndDateOffsetReferenceCode,
      _Language,
      _SetupOpActyNtwkInstance,
      _ProduceOpActyNtwkInstance,
      _TeardownOpActyNtwkInstance,
      afvg._LongText
}
where
     aufv.ManufacturingOrderCategory = '10'
  or aufv.ManufacturingOrderCategory = '40'; //Manufacturing orders only