@Metadata.allowExtensions: true
@ObjectModel: {
usageType: {
serviceQuality: #D,
dataClass: #MIXED,
sizeCategory: #L
}
}
@AccessControl.authorizationCheck: #NOT_REQUIRED
@VDM: {
viewType: #CONSUMPTION
}
@UI.presentationVariant: [{requestAtLeast: [ 'FactoryCalendar', 'MRPAvailableStockQty' ]}]
@EndUserText.label: 'MRP External Requirement Matl Overview'
/*+[hideWarning] { "IDS" : [ "KEY_CHECK" ] } */
define view entity C_MRPExtRqmtMaterialOverview
as select from I_MRPMaterialCoverage as I_MaterialCoverage
association [0..1] to I_UnitOfMeasureText as _UnitOfMeasureText on $projection.MaterialBaseUnit = _UnitOfMeasureText.UnitOfMeasure
and _UnitOfMeasureText.Language = $session.system_language
association [0..1] to I_MRPTypeText as _MRPTypeText on $projection.MRPType = _MRPTypeText.MRPType
and _MRPTypeText.Language = $session.system_language
// association [0..1] to I_Supplier as _Supplier on $projection.Supplier = _Supplier.Supplier
association [0..1] to I_PurchasingGroup as _PurchasingGroup on $projection.PurchasingGroup = _PurchasingGroup.PurchasingGroup
association [0..1] to I_Plant as _Plant on $projection.MRPPlant = _Plant.Plant
association [0..1] to I_MaterialShortageDefinition as _MaterialShortageDefinition on $projection.MaterialShortageProfile = _MaterialShortageDefinition.MaterialShortageProfile
and $projection.MaterialShortageProfileCount = _MaterialShortageDefinition.MaterialShortageProfileCount
association [0..1] to I_Matlabcclassificationtext as _Matlabcclassificationtext on $projection.MaterialABCClassification = _Matlabcclassificationtext.MaterialABCClassification
and _Matlabcclassificationtext.Language = $session.system_language
association [0..1] to I_MRPArea as _MRPArea on $projection.MRPArea = _MRPArea.MRPArea
association [0..1] to I_MRPController as _MRPController on $projection.MRPController = _MRPController.MRPController
and $projection.MRPPlant = _MRPController.Plant
association [1..1] to I_MatlProcurementCategory as _MatlProcurementCategory on $projection.MaterialProcurementCategory = _MatlProcurementCategory.MaterialProcurementCategory
{
@UI: {
facet: [
{ id: 'QuickViewTabGroup',
purpose: #STANDARD,
type: #COLLECTION,
targetQualifier: 'QuickViewTabGroup'
},
{ id: 'MaterialData',
purpose: #STANDARD,
type: #FIELDGROUP_REFERENCE,
parentId: 'QuickViewTabGroup',
position: 10,
label: 'Material Data',
targetQualifier: 'MaterialData'
},
{ id: 'CurrentStock',
purpose: #STANDARD,
type: #FIELDGROUP_REFERENCE,
parentId: 'QuickViewTabGroup',
position: 20,
label: 'Current Stock',
targetQualifier: 'CurrentStock'
},
{ id: 'FirstShortage',
purpose: #STANDARD,
type: #FIELDGROUP_REFERENCE,
parentId: 'QuickViewTabGroup',
position: 30,
label: 'First Shortage',
targetQualifier: 'FirstShortage'
},
{ id: 'MRPData',
purpose: #STANDARD,
type: #FIELDGROUP_REFERENCE,
parentId: 'QuickViewTabGroup',
position: 30,
label: 'MRP Data',
targetQualifier: 'MRPData'
}] }
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 10, hidden: #(UICT_MRPPlantHidden) }]
@ObjectModel.text.element: [ 'PlantName' ]
key I_MaterialCoverage.MRPPlant,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 20, hidden: #(UICT_MRPAreaHidden) }]
@ObjectModel.text.element: [ 'MRPAreaText' ]
@UI.textArrangement: #TEXT_FIRST
key I_MaterialCoverage.MRPArea,
@ObjectModel.text.element: [ 'MaterialName' ]
key I_MaterialCoverage.Material,
key I_MaterialCoverage.MRPPlanningSegment,
key cast ( I_MaterialCoverage.MRPPlanningSegmentType as plaab ) as MRPPlanningSegmentType,
key I_MaterialCoverage.MaterialShortageProfile,
key I_MaterialCoverage.MaterialShortageProfileCount,
key I_MaterialCoverage.FactoryCalendar,
_Plant.PlantName,
_MRPArea.MRPAreaText,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 30, hidden: #(UICT_MRPControllerHidden) }]
@ObjectModel.text.element: [ 'MRPControllerName' ]
I_MaterialCoverage.MRPController,
_MRPController.MRPControllerName,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 40, hidden: #(UICT_PurchasingGroupHidden) }]
@ObjectModel.text.element: [ 'PurchasingGroupName' ]
I_MaterialCoverage.PurchasingGroup,
_PurchasingGroup.PurchasingGroupName,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 50, hidden: #(UICT_MaterialTypeHidden) }]
@ObjectModel.text.element: [ 'MaterialTypeName' ]
I_MaterialCoverage.MaterialType,
I_MaterialCoverage.MaterialTypeName,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 60, hidden: #(UICT_MaterialGroupHidden) }]
@ObjectModel.text.element: [ 'MaterialGroupName' ]
I_MaterialCoverage.MaterialGroup,
I_MaterialCoverage.MaterialGroupName,
@UI.fieldGroup: [{ qualifier: 'MaterialData', position: 70, hidden: #(UICT_ABCIndicator) }]
@ObjectModel.text.element: [ 'MaterialABCClassificationDesc' ]
I_MaterialCoverage.MaterialABCClassification,
_Matlabcclassificationtext.MaterialABCClassificationDesc,
@UI.fieldGroup: [{ qualifier: 'CurrentStock', hidden: true }] // #(UICT_AvailableStockQtyHidden), position: 10 }]
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
I_MaterialCoverage.MRPAvailableStockQty,
// @UI.fieldGroup: [{ qualifier: 'CurrentStock', position: 20, hidden: #(UICT_MaterialSafetyStockHidden) }]
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
I_MaterialCoverage.MaterialSafetyStockQty,
@UI.fieldGroup: [{ qualifier: 'FirstShortage', position: 10, hidden: #(UICT_DaysOfSupplyDurnHidden) }]
@ObjectModel.text.element: [ 'UICT_DaysOfSupplyDurnText' ]
@UI.textArrangement: #TEXT_ONLY
I_MaterialCoverage.DaysOfSupplyDuration,
@UI.fieldGroup: [{ qualifier: 'FirstShortage', position: 20, hidden: #(UICT_ShortageStartDateHidden) }]
I_MaterialCoverage.MaterialShortageStartDate,
@UI.fieldGroup: [{ qualifier: 'FirstShortage', position: 30, hidden: #(UICT_Shortage1EndDateHidden) }]
I_MaterialCoverage.MaterialShortageEndDate,
I_MaterialCoverage.MRPPlanningSegmentExternalCode,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
@EndUserText: { label: 'Shortage Quantity', quickInfo: 'Shortage Quantity' }
I_MaterialCoverage.MaterialShortageQuantity,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 10, hidden: #(UICT_ProcurementCategoryHidden) }]
@ObjectModel.text.element: [ 'MaterialProcurementCatName' ]
I_MaterialCoverage.MaterialProcurementCategory,
case
when _MatlProcurementCategory._Text[1: Language = $session.system_language ].MaterialProcurementCatName != ''
then _MatlProcurementCategory._Text[1: Language = $session.system_language ].MaterialProcurementCatName
when _MatlProcurementCategory._Text[1: Language = 'E' ].MaterialProcurementCatName != ''
then _MatlProcurementCategory._Text[1: Language = 'E' ].MaterialProcurementCatName
else ''
end as MaterialProcurementCatName,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 20, hidden: #(UICT_MRPTypeHidden) }]
@ObjectModel.text.element: [ 'MRPTypeName' ]
I_MaterialCoverage.MRPType,
_MRPTypeText.MRPTypeName,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 30, hidden: #(UICT_PlannedDeliveryHidden) }]
@ObjectModel.text.element: [ 'UICT_PlannedDeliveryText' ]
@UI.textArrangement: #TEXT_ONLY
@EndUserText: { label: 'Planned Delivery Time', quickInfo: 'Planned Delivery Time' }
I_MaterialCoverage.MaterialPlannedDeliveryDurn,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 40, hidden: #(UICT_PlannedProductionHidden) }]
@ObjectModel.text.element: [ 'UICT_PlannedProductionText' ]
@UI.textArrangement: #TEXT_ONLY
@EndUserText: { label: 'Planned Production Time', quickInfo: 'Planned Production Time' }
I_MaterialCoverage.MaterialPlannedProductionDurn,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 50 }]
@ObjectModel.text.element: [ 'UICT_GoodsReceiptDurnText' ]
@UI.textArrangement: #TEXT_ONLY
@EndUserText: { label: 'Goods Receipt Processing Time', quickInfo: 'Goods Receipt Processing Time' }
I_MaterialCoverage.MaterialGoodsReceiptDuration,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 60, hidden: #(UICT_ReplnmtLeadDurnHidden) }]
@ObjectModel.text.element: [ 'UICT_ReplnmtLeadDurnText' ]
@UI.textArrangement: #TEXT_ONLY
@EndUserText: { label: 'Total Replenishment Lead Time', quickInfo: 'Total Replenishment Lead Time' }
I_MaterialCoverage.TotalReplenishmentLeadDuration,
@UI.fieldGroup: [{ qualifier: 'MRPData', position: 60, hidden: #(UICT_LotSizingProcedure) }]
@ObjectModel.text.element: [ 'MaterialLotSizingProcedureName' ]
@EndUserText: { label: 'Lot-Sizing Procedure', quickInfo: 'Lot-Sizing Procedure' }
I_MaterialCoverage._MRPMaterial.LotSizingProcedure,
I_MaterialCoverage._MRPMaterial.MaterialLotSizingProcedureName,
I_MaterialCoverage.MaterialBaseUnit,
I_MaterialCoverage.MaterialName,
concat(I_MaterialCoverage.MaterialShortageProfile, I_MaterialCoverage.MaterialShortageProfileCount) as MaterialShortageDefinition,
cast( I_MaterialCoverage.MRPPlanningSegmentType as abap.char( 2 ) ) as RequirementType,
_MaterialShortageDefinition.EvaluationHorizonInDays,
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
I_MaterialCoverage.AvailabilityChart,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
I_MaterialCoverage.MaterialReorderPointQty,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MRPPlant is initial then 'X' else '' end as boolean preserving type ) as UICT_MRPPlantHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MRPArea is initial then 'X' else '' end as boolean preserving type ) as UICT_MRPAreaHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MRPController is initial then 'X' else '' end as boolean preserving type ) as UICT_MRPControllerHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.PurchasingGroup is initial then 'X' else '' end as boolean preserving type ) as UICT_PurchasingGroupHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialType is initial then 'X' else '' end as boolean preserving type ) as UICT_MaterialTypeHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialGroup is initial then 'X' else '' end as boolean preserving type ) as UICT_MaterialGroupHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialSafetyStockQty is initial then 'X' else '' end as boolean preserving type ) as UICT_MaterialSafetyStockHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast ( '' as boolean preserving type ) as UICT_DaysOfSupplyDurnHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialShortageStartDate is initial then 'X' else '' end as boolean preserving type ) as UICT_ShortageStartDateHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialShortageEndDate is initial then 'X' else '' end as boolean preserving type ) as UICT_Shortage1EndDateHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MRPAvailableStockQty is initial then 'X' else '' end as boolean preserving type ) as UICT_AvailableStockQtyHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialReorderPointQty is initial then 'X' else '' end as boolean preserving type ) as UICT_MaterialReorderPointQty,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialShortageQuantity is initial then 'X' else '' end as boolean preserving type ) as UICT_ShortageQuantityHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialProcurementCategory is initial then 'X' else '' end as boolean preserving type ) as UICT_ProcurementCategoryHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MRPType is initial then 'X' else '' end as boolean preserving type ) as UICT_MRPTypeHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialPlannedDeliveryDurn is initial then 'X' else '' end as boolean preserving type ) as UICT_PlannedDeliveryHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialPlannedProductionDurn is initial then 'X' else '' end as boolean preserving type ) as UICT_PlannedProductionHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.TotalReplenishmentLeadDuration is initial then 'X' else '' end as boolean preserving type ) as UICT_ReplnmtLeadDurnHidden,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage.MaterialABCClassification is initial then 'X' else '' end as boolean preserving type ) as UICT_ABCIndicator,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast( '' as char50 ) as UICT_DaysOfSupplyDurnText,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast( '' as char50 ) as UICT_PlannedDeliveryText,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast( '' as char50 ) as UICT_PlannedProductionText,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast( '' as char50 ) as UICT_GoodsReceiptDurnText,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MRP_MATL_OVERVIEW_VIRT_FLDS'
cast( '' as char50 ) as UICT_ReplnmtLeadDurnText,
@UI.hidden: true
@Semantics.booleanIndicator: true
cast ( case when I_MaterialCoverage._MRPMaterial.LotSizingProcedure is initial then 'X' else '' end as boolean preserving type ) as UICT_LotSizingProcedure
}