@AbapCatalog.sqlViewName: 'IMFGORDSEQUENCE'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@AccessControl.privilegedAssociations: ['_LongText']
@Analytics.dataCategory: #DIMENSION
@Analytics.internalName: #LOCAL
@ClientHandling.algorithm: #SESSION_VARIABLE
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.modelingPattern: #ANALYTICAL_DIMENSION
@ObjectModel.supportedCapabilities: [#ANALYTICAL_DIMENSION, #CDS_MODELING_ASSOCIATION_TARGET, #CDS_MODELING_DATA_SOURCE, #SQL_DATA_SOURCE]
@ObjectModel.representativeKey: 'ManufacturingOrderSequence'
@ObjectModel.semanticKey: ['ManufacturingOrder', 'ManufacturingOrderSequence']
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #L, dataClass: #TRANSACTIONAL}
@VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
@VDM.viewType: #COMPOSITE
@EndUserText.label: 'Manufacturing Order Sequence'
// In later releases this CDS view will be C1-released as successor of I_MfgOrderSequence
define view I_ManufacturingOrderSequence
as select from I_OrderSequenceBySemKey as affl
left outer to one join I_OrderOperationBasic as vornr1 on vornr1.OrderInternalID = affl.OrderInternalID // Branching Operation
and vornr1.OrderOperationInternalID = affl.BranchOperationInternalID
left outer to one join I_OrderOperationBasic as vornr2 on vornr2.OrderInternalID = affl.OrderInternalID // Returning Operation
and vornr2.OrderOperationInternalID = affl.ReturnOperationInternalID
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_ManufacturingOrderSequence as _ReferenceSequence on $projection.ManufacturingOrder = _ReferenceSequence.ManufacturingOrder
and $projection.ReferenceSequence = _ReferenceSequence.ManufacturingOrderSequence
association [0..1] to I_MfgBillOfOperations as _BillOfOperationsVariant on $projection.BillOfOperationsType = _BillOfOperationsVariant.BillOfOperationsType
and $projection.BillOfOperationsGroup = _BillOfOperationsVariant.BillOfOperationsGroup
and $projection.BillOfOperationsVariant = _BillOfOperationsVariant.BillOfOperationsVariant
-- to root: Header
association [1..1] to I_ManufacturingOrder as _MfgOrder on $projection.ManufacturingOrder = _MfgOrder.ManufacturingOrder
-- to child: Operations
association [1..*] to I_ManufacturingOrderOperation as _MfgOrderOperation on $projection.OrderInternalID = _MfgOrderOperation.MfgOrderInternalID
-- to child: Longtext
association [0..1] to I_MfgOrderSequenceLongText as _MfgOrderSequenceLongText on $projection.OrderInternalID = _MfgOrderSequenceLongText.OrderInternalID
and $projection.SequenceInternalID = _MfgOrderSequenceLongText.SequenceInternalID
and $projection.LongTextLanguage = _MfgOrderSequenceLongText.LongTextLanguage
{
// Semantic key
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgOrderStdVH', element: 'ManufacturingOrder' } } ]
@ObjectModel.foreignKey.association: '_MfgOrder'
key cast(affl.OrderID as manufacturingorder preserving type) as ManufacturingOrder,
@ObjectModel.text.element: ['MfgOrderSequenceText']
key cast(affl.Sequence as manufacturingordersequence preserving type) as ManufacturingOrderSequence,
// Technical Key
@ObjectModel.foreignKey.association: '_OrderInternalID'
affl.OrderInternalID as OrderInternalID,
@ObjectModel.foreignKey.association: '_SequenceInternalID'
affl.SequenceInternalID as SequenceInternalID,
// Short Text
@Semantics.text: true
cast(affl.SequenceText as mfgordersequencetext preserving type) as MfgOrderSequenceText,
affl.SequenceHasLongText as MfgOrderSequenceHasLongText,
@ObjectModel.foreignKey.association: '_Language'
cast(affl.Language as pph_longtextlang preserving type) as LongTextLanguage,
// Branch and Return Operation
cast(vornr1.Operation_2 as vdm_vornr1 preserving type) as MfgOrderSequenceBrnchOperation,
cast(vornr2.Operation_2 as vdm_vornr2 preserving type) as MfgOrderSequenceRetOperation,
// Assignments
@ObjectModel.foreignKey.association: '_MfgOrderCategory'
cast(affl.OrderCategory as manufacturingordercategory preserving type) as ManufacturingOrderCategory,
@ObjectModel.foreignKey.association: '_MfgOrderType'
cast(affl.OrderType as manufacturingordertype preserving type) as ManufacturingOrderType,
@ObjectModel.foreignKey.association: '_SequenceCategory'
affl.SequenceCategory as MfgOrderSequenceCategory,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_PlantStdVH', element: 'Plant' } } ]
@ObjectModel.foreignKey.association: '_Plant'
affl.ProductionPlant,
@ObjectModel.foreignKey.association: '_ReferenceSequence'
affl.ReferenceSequence,
@ObjectModel.foreignKey.association: '_BillOfOperationsType'
affl.BillOfOperationsType,
@ObjectModel.foreignKey.association: '_BillOfOperationsGroup'
affl.BillOfOperationsGroup,
@Consumption.valueHelpDefinition: [ { entity: { name: 'I_MfgBillOfOperationsStdVH', element: 'BillOfOperationsVariant' } } ]
@ObjectModel.foreignKey.association: '_BillOfOperationsVariant'
affl.BillOfOperations as BillOfOperationsVariant,
@ObjectModel.foreignKey.association: '_SequenceSchedulingAlignment'
affl.SequenceSchedulingAlignment,
affl.ObjectInternalID,
// Quantities and UoM
@Semantics.unitOfMeasure: true
affl.BillOfOperationsUnit,
@Semantics.quantity.unitOfMeasure: 'BillOfOperationsUnit'
@Aggregation.default: #MIN
affl.MinimumLotSizeQuantity,
@Semantics.quantity.unitOfMeasure: 'BillOfOperationsUnit'
@Aggregation.default: #MAX
affl.MaximumLotSizeQuantity,
// Associations
_MfgOrder,
_MfgOrderOperation,
_MfgOrderSequenceLongText,
_MfgOrderCategory,
_MfgOrderType,
_ReferenceSequence,
@Consumption.hidden: true
affl._OrderInternalID,
affl._OrderSequence as _SequenceInternalID,
affl._SequenceCategory,
affl._SequenceSchedulingAlignment,
affl._Plant,
affl._BillOfOperationsType,
affl._BillOfOperationsGroup,
_BillOfOperationsVariant,
affl._BillOfOperationsUnit,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: '_MfgOrderSequenceLongText'
affl._LongText,
affl._Language
}
where ( affl.OrderCategory = '10' or //Manufacturing orders only
affl.OrderCategory = '40' );
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ORDEROPERATIONBASIC",
"I_ORDERSEQUENCEBYSEMKEY"
],
"ASSOCIATED":
[
"I_BILLOFOPERATIONSGROUP",
"I_BILLOFOPERATIONSTYPE",
"I_LANGUAGE",
"I_MANUFACTURINGORDER",
"I_MANUFACTURINGORDEROPERATION",
"I_MFGBILLOFOPERATIONS",
"I_MFGORDERCATEGORY",
"I_MFGORDERSEQUENCELONGTEXT",
"I_MFGORDERTYPE",
"I_ORDERINTERNALID",
"I_ORDERSEQUENCE",
"I_ORDERSEQUENCELONGTEXT",
"I_PLANT",
"I_SEQUENCECATEGORY",
"I_SEQUENCESCHEDULINGALIGNMENT",
"I_UNITOFMEASURE"
],
"BASE":
[
"I_ORDERSEQUENCEBYSEMKEY"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/