@AbapCatalog.sqlViewName: 'CMRPMANUCOMP'
@AbapCatalog.compiler.compareFilter: true
@AccessControl: { authorizationCheck: #CHECK, personalData.blocking: #('TRANSACTIONAL_DATA') }
@EndUserText.label: 'MRP Manufacturing Component'
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@VDM.viewType: #CONSUMPTION
define view C_MRPManufacturingComponent
as select from I_MRPManufacturingComponent
association [0..*] to I_MfgOrderTypeText as _MfgOrderTypeText on $projection.ManufacturingOrderType = _MfgOrderTypeText.ManufacturingOrderType
association [0..1] to I_Project as _Project on $projection.Project = _Project.Project
{
key I_MRPManufacturingComponent.Reservation,
key I_MRPManufacturingComponent.ReservationItem,
key I_MRPManufacturingComponent.RecordType,
I_MRPManufacturingComponent.RequirementType,
I_MRPManufacturingComponent.MRPPlant,
I_MRPManufacturingComponent.SupplyingPlant,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.CommittedQuantity,
I_MRPManufacturingComponent.Supplier,
I_MRPManufacturingComponent.PurchasingGroup,
I_MRPManufacturingComponent.MaterialProcurementCategory,
I_MRPManufacturingComponent.MaterialProcurementType,
I_MRPManufacturingComponent.MaterialGoodsReceiptDuration,
I_MRPManufacturingComponent.MaterialPlannedDeliveryDurn,
I_MRPManufacturingComponent.MaterialPlannedProductionDurn,
I_MRPManufacturingComponent.MaterialReplenishmentLeadDurn,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.FixedLotSizeQuantity,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.MinimumLotSizeQuantity,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.MaximumLotSizeQuantity,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.LotSizeRoundingQuantity,
I_MRPManufacturingComponent.RoundingProfile,
I_MRPManufacturingComponent.ManufacturingOrder,
I_MRPManufacturingComponent.ManufacturingOrderCategory,
I_MRPManufacturingComponent.ManufacturingOrderImportance,
I_MRPManufacturingComponent.PlannedOrder,
I_MRPManufacturingComponent.ProductionPlant,
I_MRPManufacturingComponent.ProductionSupervisor,
I_MRPManufacturingComponent.ProductionVersion,
I_MRPManufacturingComponent.ProductionVersionText,
I_MRPManufacturingComponent.ProductionLine,
I_MRPManufacturingComponent.InventorySpecialStockType,
I_MRPManufacturingComponent.SalesOrderItem,
I_MRPManufacturingComponent.SalesOrderType,
I_MRPManufacturingComponent.Customer,
I_MRPManufacturingComponent.WBSElementInternalID,
I_MRPManufacturingComponent.ProjectInternalID,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.OrderPlannedTotalQty,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.OrderPlannedScrapQty,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.ExpectedDeviationQuantity,
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.GoodsReceiptQty,
@Semantics.businessDate.from: true
I_MRPManufacturingComponent.ActualStartDate,
@Semantics.businessDate.to: true
I_MRPManufacturingComponent.ActualEndDate,
@Semantics.businessDate.at: true
I_MRPManufacturingComponent.ActualReleasedDate,
//I_MRPManufacturingComponent.MaintenancePlan,
@ObjectModel.text.element: [ 'MRPControllerName' ]
I_MRPManufacturingComponent.MRPController,
@ObjectModel.text.element: [ 'MaterialName' ]
I_MRPManufacturingComponent.Material,
I_MRPManufacturingComponent.MaterialName,
@Semantics.unitOfMeasure: true
I_MRPManufacturingComponent.BaseUnit,
case
when I_MRPManufacturingComponent.ActualEndDate is not null and I_MRPManufacturingComponent.ActualEndDate != '00000000'
then 'FINI' // finished
when I_MRPManufacturingComponent.ActualStartDate is not null and I_MRPManufacturingComponent.ActualStartDate != '00000000'
then 'INPR' // in progress
when I_MRPManufacturingComponent.ActualReleasedDate is not null and I_MRPManufacturingComponent.ActualReleasedDate != '00000000'
then 'RELE' // released
else 'CREA' // created
end as MfgOrderProgressStatusName,
// Contact group
@UI.lineItem: [{position:50},{position:50,qualifier:'Contact'}]
@Semantics.name.fullName: true
I_MRPManufacturingComponent.MRPControllerName,
@UI.lineItem: [{position:60},{position:60,qualifier:'Contact'}]
@Semantics.telephone.type: [ #WORK ]
I_MRPManufacturingComponent.MRPControllerPhoneNumber,
@UI.lineItem: [{position:70},{position:70,qualifier:'Contact'}]
@Semantics.eMail.address: true
I_MRPManufacturingComponent.EmailAddress,
//@UI.lineItem: [{position:80},{position:80,qualifier:'Contact'}]
//I_MRPManufacturingComponent.MaintenancePlanningPlant,
// ComponentRequirement group
@UI.lineItem: [{position:10},{position:10,qualifier:'ComponentRequirement'}]
@Semantics.businessDate.at: true
I_MRPManufacturingComponent.RequirementDate,
@UI.lineItem: [{position:20},{position:20,qualifier:'ComponentRequirement'}]
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.OrderedQuantity,
@UI.lineItem: [{position:30},{position:30,qualifier:'ComponentRequirement'}]
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.WithdrawnQuantity,
@UI.lineItem: [{position:40},{position:40,qualifier:'ComponentRequirement'}]
@Semantics.quantity.unitOfMeasure: 'BaseUnit'
I_MRPManufacturingComponent.OpenQuantity,
// MaintenanceOrder group
@UI.lineItem: [{position:10},{position:10,qualifier:'MaintenanceOrder'}]
I_MRPManufacturingComponent.ManufacturingOrderType,
@UI.lineItem: [{position:20},{position:20,qualifier:'MaintenanceOrder'}]
_MfgOrderTypeText[1: Language = $session.system_language ].ManufacturingOrderTypeName,
@UI.lineItem: [{position:30},{position:30,qualifier:'MaintenanceOrder'}]
@Semantics.businessDate.from: true
I_MRPManufacturingComponent.PlannedStartDate,
@UI.lineItem: [{position:40},{position:40,qualifier:'MaintenanceOrder'}]
@Semantics.businessDate.at: true
I_MRPManufacturingComponent.ScheduledReleaseDate,
@UI.lineItem: [{position:50},{position:50,qualifier:'MaintenanceOrder'}]
@Semantics.businessDate.from: true
I_MRPManufacturingComponent.ScheduledBasicStartDate,
@UI.lineItem: [{position:60},{position:60,qualifier:'MaintenanceOrder'}]
@Semantics.businessDate.to: true
I_MRPManufacturingComponent.ScheduledBasicEndDate,
@UI.lineItem: [{position:70},{position:70,qualifier:'MaintenanceOrder'}]
@Semantics.businessDate.to: true
I_MRPManufacturingComponent.OrderPlannedEndDate,
//@UI.lineItem: [{position:80},{position:80,qualifier:'MaintenanceOrder'}]
//I_MRPManufacturingComponent.ActivityType,
//@UI.lineItem: [{position:90},{position:90,qualifier:'MaintenanceOrder'}]
//I_MRPManufacturingComponent.MaintenanceNotification,
//@UI.lineItem: [{position:100},{position:100,qualifier:'MaintenanceOrder'}]
//I_MRPManufacturingComponent.MaintenanceRevision,
//@UI.lineItem: [{position:110},{position:110,qualifier:'MaintenanceOrder'}]
//I_MRPManufacturingComponent.MaintPriorityType,
// RelatedObjects group
@UI.lineItem: [{position:10},{position:10,qualifier:'RelatedObjects'}]
I_MRPManufacturingComponent.WBSElement,
@UI.lineItem: [{position:40},{position:40,qualifier:'RelatedObjects'}]
@ObjectModel.text.element: [ 'ResponsiblePersonName' ]
I_MRPManufacturingComponent.ResponsiblePerson, //WBS Responsible
@UI.lineItem: [{position:50},{position:50,qualifier:'RelatedObjects'}]
@Semantics.name.fullName: true
I_MRPManufacturingComponent.ResponsiblePersonName, //WBS Responsible
@UI.lineItem: [{position:60},{position:60,qualifier:'RelatedObjects'}]
@ObjectModel.text.element: [ 'ProjectDescription' ]
I_MRPManufacturingComponent.Project,
@UI.lineItem: [{position:70},{position:70,qualifier:'RelatedObjects'}]
I_MRPManufacturingComponent.ProjectDescription,
@UI.lineItem: [{position:80},{position:80,qualifier:'RelatedObjects'}]
@ObjectModel.text.element: [ 'ProjectResponsiblePersonName' ]
cast( case
when _Project.ResponsiblePerson = '00000000' or _Project.ResponsiblePerson is null
then _Project._EntProjProjectRespPersn.PersonWorkAgreement
else
_Project.ResponsiblePerson
end as ps_s4_vernr preserving type ) as ProjectResponsiblePerson,
@UI.lineItem: [{position:90},{position:90,qualifier:'RelatedObjects'}]
cast( case
when _Project.ResponsiblePerson = '00000000' or _Project.ResponsiblePerson is null
then _Project._EntProjProjectRespPersn._WorkforcePerson.PersonFullName
else
_Project.ResponsiblePersonName
end as ad_namtext preserving type ) as ProjectResponsiblePersonName,
@UI.lineItem: [{position:100},{position:100,qualifier:'RelatedObjects'}]
I_MRPManufacturingComponent.SalesOrder,
@UI.lineItem: [{position:110},{position:110,qualifier:'RelatedObjects'}]
//@ObjectModel.text.element: [ 'SalesOrderItemMaterialName' ]
I_MRPManufacturingComponent.SalesOrderItemMaterial,
//@UI.lineItem: [{position:100},{position:100,qualifier:'RelatedObjects'}]
//I_MRPManufacturingComponent.SalesOrderItemMaterialName,
@UI.lineItem: [{position:120},{position:120,qualifier:'RelatedObjects'}]
I_MRPManufacturingComponent.TopLevelOrder,
@UI.lineItem: [{position:130},{position:130,qualifier:'RelatedObjects'}]
//@ObjectModel.text.element: [ 'TopLevelOrderMaterialName' ]
I_MRPManufacturingComponent.TopLevelOrderMaterial
//@UI.lineItem: [{position:130},{position:130,qualifier:'RelatedObjects'}]
//I_MRPManufacturingComponent.TopLevelOrderMaterialName
}