@AbapCatalog.sqlViewName: 'CMFGEXECDEFRECD'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'View with UI attributes for defect'
@AccessControl.authorizationCheck: #CHECK
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@VDM: {viewType: #CONSUMPTION}
@UI.presentationVariant: [{requestAtLeast: ['OrderInternalBillOfOperations','OrderIntBillOfOperationsItem'] }]
define view C_MfgExecDefectRecord
as select from I_Defect_TP as Defect
inner join I_OpActyInstceOpActyNtwkElmnt as OAINE on OAINE.ManufacturingOrder = Defect.ProductionOrder
and OAINE.OrderOperationInternalID = Defect.InspPlanOperationInternalID
and OAINE.OrderInternalID = Defect.OrderInternalID
and OAINE.OperationActivity = Defect.ProductionOrderOperationActy
and OAINE.OperationActyVersionCounter = Defect.ProductionOrderOpActyVers
and OAINE.OpActyNtwkElementType = 3
inner join I_DefectCategory as DefectCategory on Defect.DefectCategory = DefectCategory.DefectCategory
left outer join I_MfgOrderOperation as MfgOrderOperation on MfgOrderOperation.OrderInternalBillOfOperations = Defect.OrderInternalID
and MfgOrderOperation.OrderIntBillOfOperationsItem = Defect.InspPlanOperationInternalID
left outer join I_Equipment as Equipment on Defect.Material = Equipment.Material
and Defect.DefectiveSingleUnit = Equipment.SerialNumber
// left outer join I_InspectionSubset as _InspectionSubset on Defect.InspectionLot = _InspectionSubset.InspectionLot
// and Defect.InspPlanOperationInternalID = _InspectionSubset.InspPlanOperationInternalID
// and Defect.InspectionSubsetInternalID = _InspectionSubset.InspectionSubsetInternalID
left outer join I_MfgOrdDefectDecision as DefectDecision on DefectDecision.Notification = Defect.DefectInternalID
and DefectDecision.NotificationItem = '0000'
left outer join I_ProductionHoldBasic as ProductionHold on ProductionHold.DefectInternalID = Defect.DefectInternalID
and ProductionHold.NotificationItem = '0000'
and ProductionHold.ProductionHoldEndDateTime = 0
left outer join I_OpActyInstanceStatusBasic as OpActyInstanceStatusBasic on OpActyInstanceStatusBasic.OpActyNtwkElement = OAINE.OpActyNtwkInstance
and OpActyInstanceStatusBasic.OpActyNtwkInstance = OAINE.OpActyNtwkElement
left outer to one join I_BatchCrossPlant as Batch on Defect.Material = Batch.Material
and Defect.Batch = Batch.Batch
left outer to one join I_ShopFloorItem as ShopFloorItem on Defect.ProducedMaterial = ShopFloorItem.Material
and Defect.ProducedSerialNumber = ShopFloorItem.SerialNumber
// left outer to one join P_OpActyComponentMRS as OpActyComponentMRS on OAINE.OpActyNtwkInstance = OpActyComponentMRS.OpActyNtwkInstance
// and OAINE.OpActyNtwkElement = OpActyComponentMRS.OpActyNtwkElement
// and Defect.Material = OpActyComponentMRS.Material
// and ShopFloorItem.ShopFloorItem = OpActyComponentMRS.ParentShopFloorItem
// left outer to one join I_MfgRefStrucItemWithDetails as MfgRefStrucItemWithDetails on OpActyComponentMRS.MfgRefStructureItemDetailUUID = MfgRefStrucItemWithDetails.MfgRefStructureItemUUID
// and OpActyComponentMRS.MfgRefStrucItmDetIsContextual = ''
// left outer to one join I_MfgRefHierItemWithDetails as MfgRefHierItemWithDetails on OpActyComponentMRS.MfgRefStructureItemDetailUUID = MfgRefHierItemWithDetails.MfgRefHierarchyItemUUID
// and OpActyComponentMRS.MfgRefStrucItmDetIsContextual = 'X'
// left outer to one join I_OpActyCompInstceAssignment as OpActyCompInstceAssignment on OpActyComponentMRS.Reservation = OpActyCompInstceAssignment.Reservation
// and OpActyComponentMRS.ReservationItem = OpActyCompInstceAssignment.ReservationItem
// and OpActyComponentMRS.RecordType = OpActyCompInstceAssignment.RecordType
// and Defect.BOMItemInstanceUUID = OpActyCompInstceAssignment.DgtlMockUpCharcsUUID
{
//=== Key Fields
key Defect.DefectInternalID,
//=== Fields for authorization check
@ObjectModel.readOnly: true
@UI.hidden: true
Defect.DefectCategory,
@ObjectModel.readOnly: true
@UI.hidden: true
Defect.Plant,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 30}}
@Consumption.semanticObject: 'ManufacturingOrderItem'
@UI.fieldGroup.semanticObjectAction: 'manage'
//@UI.fieldGroup.type: #WITH_INTENT_BASED_NAVIGATION
@UI.textArrangement: #TEXT_LAST
ProductionOrder,
@UI.hidden: true
cast( '' as boolean preserving type) as IsEditable,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 20}}
@EndUserText.label: 'Defective Serial Number'
Defect.DefectiveSingleUnit as SerialNumber,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 25}}
Equipment.ManufacturerSerialNumber,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 40}}
@ObjectModel.text.element: 'MfgOrderOperationText'
@Consumption.semanticObject: 'ManufacturingOrderOperation'
@UI.fieldGroup.semanticObjectAction: 'manage'
//@UI.fieldGroup.type: #WITH_INTENT_BASED_NAVIGATION
@UI.textArrangement: #TEXT_LAST
Defect.ProductionOrderOperation,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 50}}
@Semantics.text: true
@UI.hidden: true
MfgOrderOperation.MfgOrderOperationText,
@Consumption.semanticObject: 'ProductionOrderOperationActy'
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 60}}
@UI.textArrangement: #TEXT_LAST
OAINE.OpActyNtwkElementExternalID,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 70}}
@EndUserText.label: 'Defect Decision'
DefectDecision._DefectDecisionVH._Text[1:Language=$session.system_language].MfgDefectDecisionName,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 90}}
@EndUserText.label: 'Applied Hold'
ProductionHold._ProductionHoldObjectType._Text[1:Language=$session.system_language].ProductionHoldObjectTypeName,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails', position: 80}}
@EndUserText.label: 'Defective Quantity'
DefectiveQuantity,
@UI.hidden: true
OAINE.OpActyNtwkInstance,
@UI.hidden: true
OAINE.OpActyNtwkElement,
@UI.hidden: true
ShopFloorItem.ShopFloorItem,
@UI.hidden: true
OpActyInstanceStatusBasic.OpActyIsSeldForRtactvPostg,
//@UI.hidden: true
OrderInternalBillOfOperations,
//@UI.hidden: true
OrderIntBillOfOperationsItem,
// cast(_InspectionOperation.InspPlanOperationInternalID as operationinternalid preserving type) as OrderIntBillOfOperationsItem,
@UI.hidden: true
MainWorkCenter,
@UI.hidden: true
MainWorkCenterPlant,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 10}}
Defect.Material,
@UI.hidden: true
Defect.BOMItemInstanceUUID,
@ObjectModel.readOnly: true
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 15}}
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MPE_NONCF_COMP_SADL_EXIT'
cast('' as mpe_mrs_designator_name) as MfgRefStrucItmRefDsgntrName,
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 100}}
@ObjectModel.readOnly: true
Defect.Batch,
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 105}}
@ObjectModel.readOnly: true
Batch.BatchBySupplier,
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 120}}
@ObjectModel.readOnly: true
@EndUserText.label: 'Produced Material'
Defect.ProducedMaterial,
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 130}}
@ObjectModel.readOnly: true
@EndUserText.label: 'Produced Serial Number'
Defect.ProducedSerialNumber,
@UI: { fieldGroup: {qualifier: 'MPEOrderDetails_1', position: 110}}
@ObjectModel.readOnly: true
@EndUserText.label: 'Reference Designator'
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MPE_NONCF_COMP_SADL_EXIT'
cast('' as vmp_ref_des) as ReferenceDesignatorValue
}
where
DefectCategory.DefectCategoryContext = '02'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BATCHCROSSPLANT",
"I_DEFECTCATEGORY",
"I_DEFECT_TP",
"I_EQUIPMENT",
"I_MFGDEFECTDECISION",
"I_MFGDEFECTDECISIONTEXT",
"I_MFGORDDEFECTDECISION",
"I_MFGORDEROPERATION",
"I_OPACTYINSTANCESTATUSBASIC",
"I_OPACTYINSTCEOPACTYNTWKELMNT",
"I_PRODUCTIONHOLDBASIC",
"I_PRODUCTIONHOLDOBJECTTYPE",
"I_PRODUCTIONHOLDOBJECTTYPETEXT",
"I_SHOPFLOORITEM"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/