I_ChmRskAtEHSLocC

DDL: I_CHMRSKATEHSLOCC SQL: ICHMRISKATLOCC Type: view COMPOSITE Package: EHFND_BO_CHM_IMPL

Chemical Risk at EHS Location Cube

I_ChmRskAtEHSLocC is a Composite CDS View (Cube) that provides data about "Chemical Risk at EHS Location Cube" in SAP S/4HANA. It reads from 2 data sources (I_ChemicalRoot, I_EHSRiskRoot) and exposes 43 fields with key fields ChemicalUUID, EHSLocationUUID, Hazard. It has 3 associations to related views. Part of development package EHFND_BO_CHM_IMPL.

Data Sources (2)

SourceAliasJoin Type
I_ChemicalRoot I_ChemicalRoot from
I_EHSRiskRoot I_EHSRiskRoot inner

Associations (3)

CardinalityTargetAliasCondition
[0..*] I_EHSRisk _EHSRisk $projection.EHSRiskUUID = _EHSRisk.EHSRiskUUID
[0..*] I_Chemical _Chemical $projection.ChemicalUUID = _Chemical.ChemicalUUID
[0..*] I_EHSLocation _EHSLocation $projection.EHSLocationUUID = _EHSLocation.EHSLocationUUID

Annotations (12)

NameValueLevelField
EndUserText.label Chemical Risk at EHS Location Cube view
Analytics.dataCategory #CUBE view
Analytics.dataExtraction.enabled true view
VDM.viewType #COMPOSITE view
AccessControl.authorizationCheck #CHECK view
Metadata.allowExtensions true view
AbapCatalog.sqlViewName ICHMRISKATLOCC view
AbapCatalog.compiler.compareFilter true view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view

Fields (43)

KeyFieldSource TableSource FieldDescription
KEY ChemicalUUID I_ChemicalRoot ChemicalUUID
_Chemical _Chemical
KEY EHSLocationUUID I_EHSRiskRoot EHSLocationUUID
_EHSLocation _EHSLocation
KEY Hazard I_EHSRiskRoot Hazard
_Hazard I_EHSRiskRoot _Hazard
EHSLocationType
_EHSLocationType
Plant
_Plant
CompanyCode
_CompanyCode
BusinessArea
_BusinessArea
CostCenter
Country
_Country
ControllingArea
_ControllingArea
OrganizationalUnit
_OrganizationalUnit
StorageLocation
_StorageLocation
EHSLocationAuthorizationGroup
_EHSLocationAuthGroup
ChemicalType I_ChemicalRoot ChemicalType
_ChemicalType I_ChemicalRoot _ChemicalType
EHSRiskUUID EHSRiskUUID
_EHSRisk _EHSRisk
EHSRiskType
_EHSRiskType
EHSRiskLevel
_EHSRiskLevel
MethodOfUse I_EHSRiskRoot MethodOfUse
_EHSMethodOfUse I_EHSRiskRoot _EHSMethodOfUse
OperationalStatus I_EHSRiskRoot OperationalStatus
_EHSOperationalStatus I_EHSRiskRoot _EHSOperationalStatus
HazardCategory I_EHSRiskRoot HazardCategory
_HazardCategory I_EHSRiskRoot _HazardCategory
EHSJobUUID I_EHSRiskRoot EHSJobUUID
_EHSJob I_EHSRiskRoot _EHSJob
EHSRiskAssessmentType
_EHSRiskAssessmentType
@EndUserText.label: 'Chemical Risk at EHS Location Cube'
@Analytics: { dataCategory:#CUBE , dataExtraction.enabled:true }
@VDM.viewType: #COMPOSITE
@AccessControl.authorizationCheck: #CHECK
@AccessControl.privilegedAssociations: ['_EHSRiskAnalysis', '_EHSRiskAnalysisStandard']
@Metadata.allowExtensions:true 

@AbapCatalog.sqlViewName: 'ICHMRISKATLOCC'
@AbapCatalog.compiler.compareFilter: true

// Client handling by session 

@ClientHandling.algorithm: #SESSION_VARIABLE

// used for BOBF Master Data Object

@ObjectModel.usageType:{ serviceQuality: #D,        // < 500 msec   

                         sizeCategory:  #L,         // < 10.000.000

                         dataClass: #MIXED } 

// Cube for Chemical Risk Report

define view I_ChmRskAtEHSLocC
as select from I_ChemicalRoot

  inner join I_EHSRiskRoot on I_ChemicalRoot.ChemicalUUID = I_EHSRiskRoot.ChemicalUUID

  // Filter risks by "My Location" and its sublocations

//  inner join I_MyEHSLocationExpanded on I_EHSRiskRoot.EHSLocationUUID = I_MyEHSLocationExpanded.EHSLocationUUID


  association [0..*] to I_EHSRisk           as _EHSRisk           on $projection.EHSRiskUUID = _EHSRisk.EHSRiskUUID

  association [0..*] to I_Chemical          as _Chemical          on $projection.ChemicalUUID = _Chemical.ChemicalUUID

  association [0..*] to I_EHSLocation       as _EHSLocation       on $projection.EHSLocationUUID = _EHSLocation.EHSLocationUUID
{
  @ObjectModel.foreignKey.association: '_Chemical'
  key I_ChemicalRoot.ChemicalUUID,
  _Chemical,

  // EHS Location

  @ObjectModel.foreignKey.association: '_EHSLocation'
  key I_EHSRiskRoot.EHSLocationUUID,
  _EHSLocation,

  // Hazard

  @ObjectModel.foreignKey.association: '_Hazard'
  key I_EHSRiskRoot.Hazard,
  I_EHSRiskRoot._Hazard,
  
  // EHS Location Type

  @ObjectModel.foreignKey.association: '_EHSLocationType'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSLocationType, 
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSLocationType,

  // EHS Location Plant ID 

  @ObjectModel.foreignKey.association: '_Plant'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].Plant,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._Plant,
  
  // EHS Location Company Code 

  @ObjectModel.foreignKey.association: '_CompanyCode'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].CompanyCode,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._CompanyCode,
  
  // EHS Location Business Area

  @ObjectModel.foreignKey.association: '_BusinessArea'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].BusinessArea,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._BusinessArea,
  
  // EHS Location Cost Center

  @ObjectModel.foreignKey.association: null
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].CostCenter,
//  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._CostCenter,


  // EHS Location Country

  @ObjectModel.foreignKey.association: '_Country'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].Country,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._Country,

  // EHS Location Countrling Area

  @ObjectModel.foreignKey.association: '_ControllingArea'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].ControllingArea,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._ControllingArea,  

  // EHS Location Org Unit

  @ObjectModel.foreignKey.association: '_OrganizationalUnit'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].OrganizationalUnit,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._OrganizationalUnit,
  
  // EHS Location Storage Location

  @ObjectModel.foreignKey.association: '_StorageLocation'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].StorageLocation,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._StorageLocation,

  // EHS Location Authorization Group

  @ObjectModel.foreignKey.association: '_EHSLocationAuthGroup'
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSLocationAuthorizationGroup,
  _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSLocationAuthGroup,

  // Chemical: Type

  @ObjectModel.foreignKey.association: '_ChemicalType'
  I_ChemicalRoot.ChemicalType,
  I_ChemicalRoot._ChemicalType,

  
  // Risk

  @ObjectModel.foreignKey.association: '_EHSRisk'
  EHSRiskUUID,
  _EHSRisk,
  
  // Risk Type 

  @ObjectModel.foreignKey.association: '_EHSRiskType'
  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis.EHSRiskType,
  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis._EHSRiskType,

  @ObjectModel.foreignKey.association: '_EHSRiskLevel'
  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis.EHSRiskLevel, 
  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis._EHSRiskLevel,

  // Risk Value 

  cast (
    case when
      _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis.EHSRiskValue is null
    then   
      0 // "Not Assessed"

    else
      _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAnalysisStandard._EHSRiskAnalysis.EHSRiskValue  
    end
  as ehhss_risk_value preserving type ) as EHSRiskValue,

  // Risk: Method of Use

  @ObjectModel.foreignKey.association: '_EHSMethodOfUse'
  I_EHSRiskRoot.MethodOfUse,
  I_EHSRiskRoot._EHSMethodOfUse,

  // Operational Status

  @ObjectModel.foreignKey.association: '_EHSOperationalStatus'
  I_EHSRiskRoot.OperationalStatus,
  I_EHSRiskRoot._EHSOperationalStatus,

  // Hazard Category

  @ObjectModel.foreignKey.association: '_HazardCategory'
  I_EHSRiskRoot.HazardCategory,
  I_EHSRiskRoot._HazardCategory,
  
  // Job

  @ObjectModel.foreignKey.association: '_EHSJob'
  I_EHSRiskRoot.EHSJobUUID,
  I_EHSRiskRoot._EHSJob,
  
  // Risk Assessment Type

  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAssessment.EHSRiskAssessmentType as EHSRiskAssessmentType,
  _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date]._EHSRiskAssessment._EHSRiskAssessmentType as _EHSRiskAssessmentType
  
}
// consider chemical in process or released chemicals

where ( I_ChemicalRoot._ChemicalRevision[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].ChemicalStatus = '02'  
     or I_ChemicalRoot._ChemicalRevision[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].ChemicalStatus = '03' ) 
// Consider only active or inactive locations (to be precise: the current location revision revision must be either inactive or active)

and ( _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSLocationStatus = '02'
   or _EHSLocation[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSLocationStatus = '03' )   
// Consider only in process or released risks

and ( _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSRiskStatus  = '02' 
   or _EHSRisk[1: RevisionStartDate <= $session.system_date and RevisionEndDate >= $session.system_date].EHSRiskStatus  = '03' )
// ignore simulated risks   

and I_EHSRiskRoot.IsSimulatedEHSRisk = ' '