//Manage Basic Compliance Data - Unpackaged Product (Monitor)
@EndUserText.label: 'Unpackaged Product'
@AbapCatalog:
{
sqlViewName: 'CCCINFOMNTR',
compiler.compareFilter: true
}
@AccessControl:
{
authorizationCheck: #MANDATORY,
// blocking of personal data not required (no personal data fields exposed for material (MARA))
personalData.blocking: #NOT_REQUIRED
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #CONSUMPTION
@ObjectModel:
{
createEnabled: false,
updateEnabled: false,
deleteEnabled: false,
usageType:
{
dataClass: #MIXED,
sizeCategory: #L,
serviceQuality: #C
},
semanticKey: [ 'ChmlCmplncInfoCombinedName' ]
}
--Header information
@UI:
{
headerInfo:
{
typeName: 'Manage Basic Compliance Data - Unpackaged Products',
typeNamePlural: 'Unpackaged Products',
title:
{
label: 'Product',
value: 'ChmlCmplncInfoCombinedName'
}
},
selectionVariant: [
{
qualifier: 'UnpackagedProducts',
text: 'Unpackaged Products'
}
],
presentationVariant:
{
requestAtLeast: [ 'ProductName', 'ChmlCmplncInternalName', 'ChmlCmplncInfoNavgnLink' ],
sortOrder:
[
{
by: 'ProductName',
direction: #ASC
},
{
by: 'ChmlCmplncInternalName',
direction: #ASC
}
]
}
}
@Search.searchable : true
define view C_ChmlCmplncInfoMntr
--Select data from basic view of chemical compliance information
as select from I_ChmlCmplncInfo as ChemicalCompliance
--Additional Information
--Product Information
association [0..1] to I_ProductGroup_2 as _ProductGroupVH on $projection.MaterialGroup = _ProductGroupVH.ProductGroup
association [0..1] to I_ProductHierarchy as _ProductHierarchyVH on $projection.producthierarchy = _ProductHierarchyVH.ProductHierarchy
association [0..1] to I_Division as _DivisionVH on $projection.division = _DivisionVH.Division
association [0..1] to I_ExtProdGrp as _ExternalProdGrpVH on $projection.ExternalProductGroup = _ExternalProdGrpVH.ExternalProductGroup
association [0..1] to C_ChmlCmplncPrimMatl as _MaterialDataPrimary on ChemicalCompliance.ChmlCmplncInfoUUID = _MaterialDataPrimary.ChmlCmplncInfoUUID
--Overall Composition Status
association [0..1] to P_ChmlCompositionOverallStatus as _ChmlCompositionOverallStatus on ChemicalCompliance.ChmlCmplncInfoUUID = _ChmlCompositionOverallStatus.ChmlCmplncInfoUUID
association [0..1] to I_ChmlCmpstnOverallStatusVH as _OverallStatusVH on $projection.ChmlCompositionStatus = _OverallStatusVH.ChmlCmpstnOverallStatus
--Counter of purposes and compliance requirements
association [0..1] to P_ChmlCmplncPrpsRqmtPmaCT as _PurposeRequirementPmaCounter on ChemicalCompliance.ChmlCmplncInfoUUID = _PurposeRequirementPmaCounter.ChmlCmplncInfoUUID
association [0..1] to P_ChmlCmplncPrpsRqmtDgCT as _PurposeRequirementDgCounter on ChemicalCompliance.ChmlCmplncInfoUUID = _PurposeRequirementDgCounter.ChmlCmplncInfoUUID
association [0..1] to P_ChmlCmplncPrpsRqmtSdsCT as _PurposeRequirementSdsCounter on ChemicalCompliance.ChmlCmplncInfoUUID = _PurposeRequirementSdsCounter.ChmlCmplncInfoUUID
association [0..1] to P_ChmlCmplncPrpsAssgmtCt as _PurposeCounter on ChemicalCompliance.ChmlCmplncInfoUUID = _PurposeCounter.ChemicalComplianceUUID
association [0..1] to P_ChmlCmplncReqUnprocessedCT as _RequestCounter on ChemicalCompliance.ChmlCmplncInfoUUID = _RequestCounter.ChmlCmplncProdUUID
association [0..1] to I_ChmlCmplncMktKeyFig as _MarketKeyFig on ChemicalCompliance.ChmlCmplncInfoUUID = _MarketKeyFig.ChmlCmplncInfoUUID
{
--UUID of active chemical compliance information
@ObjectModel.readOnly: true
@UI.hidden: true
key ChemicalCompliance.ChmlCmplncInfoUUID,
--Material/Product number
@UI:
{
lineItem:
{
position: 20,
importance: #HIGH
}
}
@ObjectModel.readOnly: true
@Search: {
defaultSearchElement : true,
fuzzinessThreshold: 0.7,
ranking: #MEDIUM
}
@Consumption: {
valueHelpDefinition: [{
entity: {name: 'I_ProductVH', element: 'Product'} }]
}
key ChemicalCompliance._MaterialAssignment.Material as Material,
--UUID of active chemical compliance information
@ObjectModel.readOnly: true
@UI.hidden: true
ChemicalCompliance.ChmlCmplncInfoUUID as ChmlCmplncInfoNavgnLink,
--Material name or internal name
@UI:
{
lineItem:
{
position: 10,
importance: #HIGH
}
}
@ObjectModel.readOnly: true
_MaterialDataPrimary.ChmlCmplncInfoCombinedName as ChmlCmplncInfoCombinedName,
--Material name
@UI.hidden: true
@ObjectModel.readOnly: true
@Search:
{
defaultSearchElement : true,
fuzzinessThreshold: 0.7,
ranking: #HIGH
}
@Consumption.filter.hidden: true
ChemicalCompliance._MaterialAssignment._Product._Text[1: Language = $session.system_language ].ProductName as ProductName,
--Internal name of chemical compliance information
@ObjectModel.readOnly: true
@Search:
{
defaultSearchElement : true,
fuzzinessThreshold: 0.7,
ranking: #LOW
}
ChemicalCompliance.ChmlCmplncInternalName,
--Product group
@UI:
{
lineItem:
{
position: 50 },
selectionField:
{
position: 10
},
textArrangement: #TEXT_ONLY
}
@ObjectModel:
{
readOnly: true,
text.element: [ 'MaterialGroupName' ],
foreignKey.association: '_ProductGroupVH'
}
@Consumption.filter.multipleSelections: true
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product.ProductGroup as MaterialGroup,
--Material Group Name
@UI.hidden: true
@ObjectModel.readOnly: true
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product._ProductGroup._Text[1: Language = $session.system_language ].MaterialGroupName as MaterialGroupName,
--Overall composition status
@UI.textArrangement: #TEXT_ONLY
@ObjectModel:
{
readOnly: true,
text.element: [ 'ChmlCompositionStatusName' ],
foreignKey.association: '_OverallStatusVH'
}
@Consumption.filter:
{
multipleSelections: true
}
cast( _ChmlCompositionOverallStatus.ChmlCompositionStatus as ehfnd_cci_ccmps_overall_status preserving type ) as ChmlCompositionStatus,
--Description of overall composition status
@UI.hidden: true
@ObjectModel.readOnly: true
_ChmlCompositionOverallStatus._StatusText._Text[1: Language = $session.system_language ].ChmlCmpstnOverallStatusName as ChmlCompositionStatusName,
--Criticality of overall composition status
@UI.hidden: true
@ObjectModel.readOnly: true
_ChmlCompositionOverallStatus.ChmlCompositionStsCriticality,
--Responsible unit of PSS
@UI.hidden: true
@ObjectModel.readOnly: true
@Consumption.hidden: true
ChemicalCompliance.ProdStewardshipRespUnit,
--Number of Assigned PMA Requirments
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
cast( _PurposeRequirementPmaCounter.NmbrOfCmplRqRslts as ehfnd_cci_number_of_cr_ma ) as NmbrOfChmlCmplncMktRqmts,
--Number of Assigned DG Requirments
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
cast( _PurposeRequirementDgCounter.NmbrOfCmplRqRslts as ehfnd_cci_number_of_cr_dg ) as NmbrOfChmlCmplncDngrsGdsRqmts,
--Number of Assigned DG Requirments
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
cast( _PurposeRequirementSdsCounter.NmbrOfCmplRqRslts as ehfnd_cci_number_of_cr_sds ) as NmbrOfChmlCmplncDataShtRqmts,
--Number of Coverages
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
@UI:
{
lineItem:
{
position: 70
}
}
cast( _MarketKeyFig.NmbrOfChmlCmplncMktCountries as ehfnd_cci_number_of_cvrg ) as NmbrOfChmlCmplncProcdMktCvrgs,
--Number of Purposes
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
@UI:
{
lineItem:
{
position: 80
}
}
cast( _PurposeCounter.NmbrOfChmlCmplncPurposes as ehfnd_cci_number_of_prps ) as NmbrOfChmlCmplncPurposes,
--Number of Compliance Requests
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
cast( _RequestCounter.recordCount as ehfnd_cci_number_of_req ) as NmbrOfUnprocessedChmlCmplncReq,
--Product Hierarchy
@ObjectModel:
{
readOnly: true,
// foreignKey.association: '_ProductHierarchyVH'
text.element: [ 'ProductHierarchyText' ]
}
@UI.textArrangement: #TEXT_ONLY
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product.ProductHierarchy,
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product._ProductHierarchyText[1: Language = $session.system_language ].ProductHierarchyText,
--Product Division
@ObjectModel:
{
readOnly: true,
// foreignKey.association: '_DivisionVH',
text.element: [ 'DivisionName' ]
}
@UI.textArrangement: #TEXT_ONLY
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product.Division,
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product._DivisionText[1: Language = $session.system_language ].DivisionName,
--External product group
@ObjectModel:
{
readOnly: true,
text.element: [ 'ExternalProductGroupName' ],
foreignKey.association: '_ExternalProdGrpVH'
}
@UI.textArrangement: #TEXT_ONLY
@Search.defaultSearchElement: false
cast( ChemicalCompliance._MaterialAssignment._Product.ExternalProductGroup as ehfnd_ext_material_group_l ) as ExternalProductGroup,
--Description of External Product Group
@UI.hidden: true
@ObjectModel.readOnly: true
@Search.defaultSearchElement: false
ChemicalCompliance._MaterialAssignment._Product._ExternalProductGroup._Text[1: Language = $session.system_language ].ExternalProductGroupName,
--Specification
@UI:
{
lineItem:
[{
position: 90,
exclude: true
}]
}
@ObjectModel.readOnly: true
@Consumption.filter.hidden: true
@Search:
{
defaultSearchElement : true,
fuzzinessThreshold: 0.8,
ranking: #HIGH
}
ChemicalCompliance.Specification as Specification,
--R&D Indicator: Product under Research
@ObjectModel.readOnly: true
@Consumption.valueHelpDefinition: [{
entity: {
name: 'I_Indicator',
element: 'IndicatorValue'
}
}]
ChemicalCompliance.ChmlCmplncProdIsResearched,
@UI.hidden: true
ChemicalCompliance.ChmlCmplncInfoType,
@UI.hidden: true
ChemicalCompliance.MaterialIsSold as MaterialIsSold,
@UI.hidden: true
ChemicalCompliance.MaterialIsTransported as MaterialIsTransported,
@UI.hidden: true
ChemicalCompliance.MaterialIsProduced as MaterialIsProduced,
/*Association*/
@Consumption.filter.hidden: true
_ProductGroupVH,
@Consumption.filter.hidden: true
ChemicalCompliance._RespUnitForProductStewardship,
@Consumption.filter.hidden: true
_ProductHierarchyVH,
@Consumption.filter.hidden: true
_DivisionVH,
@Consumption.filter.hidden: true
_ExternalProdGrpVH,
@Consumption.filter.hidden: true
_OverallStatusVH
}
where
ChemicalCompliance.ChmlCmplncInfoType = 'BU'
and(
ChemicalCompliance.MaterialIsSold = 'X'
or ChemicalCompliance.MaterialIsProduced = 'X'
// or ChemicalCompliance.MaterialIsTransported = 'X' -- No longer a mandatory role - PSSPROD-3445
)