@AbapCatalog.sqlViewName: 'PMPEASSRLTDINST'
@AbapCatalog.compiler.compareFilter:true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #L, dataClass: #TRANSACTIONAL}
@VDM.viewType: #COMPOSITE
@VDM.private: true
define view P_AssldReltdComponentInstance
-- Fetch the current reservation instance
as select from I_OpActyComponentAssignment as OpActyComponentAssignment
inner join I_OpActyCompInstceAssignment as OpActyCompInstceAssignment on OpActyCompInstceAssignment.Reservation = OpActyComponentAssignment.Reservation
and OpActyCompInstceAssignment.ReservationItem = OpActyComponentAssignment.ReservationItem
and OpActyCompInstceAssignment.RecordType = OpActyComponentAssignment.RecordType
and OpActyCompInstceAssignment.OpActyNtwkInstance = OpActyComponentAssignment.OpActyNtwkInstance
and OpActyCompInstceAssignment.OpActyNtwkElement = OpActyComponentAssignment.OpActyNtwkElement
-- Inner join of referenced reservation instances which have been assembled
inner join I_MfgOrderCompAssemblyInstce as ReltdMfgOrderCompAssyInstce on ReltdMfgOrderCompAssyInstce.Reservation = OpActyComponentAssignment.RelatedReservation
and ReltdMfgOrderCompAssyInstce.ReservationItem = OpActyComponentAssignment.RelatedReservationItem
and ReltdMfgOrderCompAssyInstce.RecordType = OpActyComponentAssignment.RelatedRecordType
and ReltdMfgOrderCompAssyInstce.OpActyNtwkInstance = OpActyComponentAssignment.RelatedOpActyNtwkInstance
and ReltdMfgOrderCompAssyInstce.OpActyNtwkElement = OpActyComponentAssignment.RelatedOpActyNtwkElement
and ReltdMfgOrderCompAssyInstce.OriglDgtlMockUpCharcsUUID = OpActyCompInstceAssignment.ReltdOriglDgtlMockUpCharcsUUID
and ReltdMfgOrderCompAssyInstce.IsReversed = ''
and ReltdMfgOrderCompAssyInstce.IsReversal = ''
-- Left outer join to reservation instances required for for where-statement
left outer to one join I_MfgOrderCompAssemblyInstce as MfgOrderCompAssemblyInstce on MfgOrderCompAssemblyInstce.Reservation = OpActyComponentAssignment.Reservation
and MfgOrderCompAssemblyInstce.ReservationItem = OpActyComponentAssignment.ReservationItem
and MfgOrderCompAssemblyInstce.RecordType = OpActyComponentAssignment.RecordType
and MfgOrderCompAssemblyInstce.OpActyNtwkInstance = OpActyComponentAssignment.OpActyNtwkInstance
and MfgOrderCompAssemblyInstce.OpActyNtwkElement = OpActyComponentAssignment.OpActyNtwkElement
and MfgOrderCompAssemblyInstce.AssemblyShopFloorItem = ReltdMfgOrderCompAssyInstce.AssemblyShopFloorItem
and MfgOrderCompAssemblyInstce.OriglDgtlMockUpCharcsUUID = OpActyCompInstceAssignment.OriglDgtlMockUpCharcsUUID
and MfgOrderCompAssemblyInstce.IsReversed = ''
and MfgOrderCompAssemblyInstce.IsReversal = ''
left outer to one join I_InstanceReferenceDesignator as InstanceReferenceDesignator on InstanceReferenceDesignator.DgtlMockUpCharcsUUID = OpActyCompInstceAssignment.DgtlMockUpCharcsUUID
{
key OpActyComponentAssignment.Reservation,
key OpActyComponentAssignment.ReservationItem,
key OpActyComponentAssignment.RecordType,
key OpActyComponentAssignment.OpActyNtwkInstance,
key OpActyComponentAssignment.OpActyNtwkElement,
key ReltdMfgOrderCompAssyInstce.AssemblyShopFloorItem,
key OpActyCompInstceAssignment.OriglDgtlMockUpCharcsUUID,
OpActyCompInstceAssignment.ReltdOriglDgtlMockUpCharcsUUID,
ReltdMfgOrderCompAssyInstce.Material,
ReltdMfgOrderCompAssyInstce.Plant,
cast(case
when OpActyCompInstceAssignment.MfgRefStrucItmDetIsContextual = 'X'
and OpActyCompInstceAssignment._MfgRefHierItemWithDetails.HierMfgReferenceDesignatorName is not null
and OpActyCompInstceAssignment._MfgRefHierItemWithDetails.HierMfgReferenceDesignatorName <> ''
then OpActyCompInstceAssignment._MfgRefHierItemWithDetails.HierMfgReferenceDesignatorName
when OpActyCompInstceAssignment.MfgRefStrucItmDetIsContextual = ''
and OpActyCompInstceAssignment._MfgRefStrucItemWithDetails.MfgRefStrucItmRefDsgntrName is not null
and OpActyCompInstceAssignment._MfgRefStrucItemWithDetails.MfgRefStrucItmRefDsgntrName <> ''
then OpActyCompInstceAssignment._MfgRefStrucItemWithDetails.MfgRefStrucItmRefDsgntrName
when OpActyCompInstceAssignment._InstanceReferenceDesignator.ReferenceDesignatorValue is not null
or OpActyCompInstceAssignment._InstanceReferenceDesignator.ReferenceDesignatorValue <> ''
then OpActyCompInstceAssignment._InstanceReferenceDesignator.ReferenceDesignatorValue
-- If no RefDes exists, use GUID as Fallback (instead of having empty RefDes)
else bintohex( OpActyCompInstceAssignment.OriglDgtlMockUpCharcsUUID )
end as vmp_ref_des) as ReferenceDesignatorName,
InstanceReferenceDesignator.ReferenceDesignatorValue,
ReltdMfgOrderCompAssyInstce.Batch,
ReltdMfgOrderCompAssyInstce.ShopFloorItem,
OpActyComponentAssignment.RelatedReservation,
OpActyComponentAssignment.RelatedReservationItem,
OpActyComponentAssignment.RelatedRecordType,
OpActyComponentAssignment.RelatedOpActyNtwkInstance,
OpActyComponentAssignment.RelatedOpActyNtwkElement,
OpActyComponentAssignment._ReservationHeader,
OpActyComponentAssignment._OpActyNtwkInstance,
OpActyComponentAssignment._OperationActivityInstance,
ReltdMfgOrderCompAssyInstce._ParentShopFloorItem,
ReltdMfgOrderCompAssyInstce._ShopFloorItem,
ReltdMfgOrderCompAssyInstce._BatchDistinct
}
where
OpActyComponentAssignment.MatlCompInstceAssyIsRequired = 'X' --Only components with assemblies on instance-level
and MfgOrderCompAssemblyInstce.OriglDgtlMockUpCharcsUUID is null --Only those referenced reservation instances that have not yet been "reprocessed"
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_INSTANCEREFERENCEDESIGNATOR",
"I_MFGORDERCOMPASSEMBLYINSTCE",
"I_MFGREFHIERITEMWITHDETAILS",
"I_MFGREFSTRUCITEMWITHDETAILS",
"I_OPACTYCOMPINSTCEASSIGNMENT",
"I_OPACTYCOMPONENTASSIGNMENT"
],
"ASSOCIATED":
[
"I_BATCHDISTINCT",
"I_OPACTYNTWKINSTANCE",
"I_OPERATIONACTIVITYINSTANCE",
"I_RESERVATIONDOCUMENTHEADER",
"I_SHOPFLOORITEM"
],
"BASE":
[
"I_MFGORDERCOMPASSEMBLYINSTCE",
"I_OPACTYCOMPONENTASSIGNMENT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/