I_EHSRiskOverviewC

DDL: I_EHSRISKOVERVIEWC SQL: IEHSRSKOVERVIEWC Type: view COMPOSITE

Risk Overview

I_EHSRiskOverviewC is a Composite CDS View (Cube) that provides data about "Risk Overview" in SAP S/4HANA. It reads from 2 data sources (I_EHSRisk, I_MyEHSLocationExpanded) and exposes 18 fields with key field EHSRiskUUID. It has 2 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_EHSRisk I_EHSRisk from
I_MyEHSLocationExpanded I_MyEHSLocationExpanded inner

Parameters (2)

NameTypeDefault
P_Language sylangu
P_KeyDate sydatum

Associations (2)

CardinalityTargetAliasCondition
[0..*] I_EHSAgent _Agent $projection.EHSAgentUUID = _Agent.EHSAgentUUID
[1..1] I_RatedEHSRiskLevel _RatedEHSRiskLevel _RatedEHSRiskLevel.LinkFlagIsOne = 1

Annotations (13)

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

Fields (18)

KeyFieldSource TableSource FieldDescription
KEY EHSRiskUUID I_EHSRisk EHSRiskUUID
Hazard _EHSRiskRoot Hazard
_Hazard _EHSRiskRoot _Hazard
HazardCategory _EHSRiskRoot HazardCategory
_HazardCategory _EHSRiskRoot _HazardCategory
_Agent _Agent
EHSRiskLevel _EHSRiskRoot EHSRiskLevel
_EHSRiskLevel _EHSRiskRoot _EHSRiskLevel
EHSJobUUID _EHSRiskRoot EHSJobUUID
_EHSJob _EHSRiskRoot _EHSJob
EHSRiskAssessmentUUID EHSRiskAssessmentUUID
_EHSRiskAssessment _EHSRiskAssessment
EHSRiskStatus I_EHSRisk EHSRiskStatus
_EHSRiskStatus _EHSRiskStatus
EHSLocationUUID I_EHSRisk EHSLocationUUID
_EHSLocation _EHSLocation
NumberOfEHSRisks
_EHSRiskRoot I_EHSRisk _EHSRiskRoot
@EndUserText.label: 'Risk Overview'
@Analytics: { dataCategory:#CUBE , dataExtraction.enabled:true }
@VDM.viewType: #COMPOSITE
@AccessControl.authorizationCheck: #CHECK

@AbapCatalog.sqlViewName: 'IEHSRSKOVERVIEWC'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey:true
// Client handling by session

@ClientHandling.algorithm: #SESSION_VARIABLE

// used for BOBF Master Data Object

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

                         sizeCategory:  #L,         // < 10.000.000

                         dataClass: #MIXED }
@Metadata.allowExtensions:true 
                         
// Cube for Risk Overview

define view I_EHSRiskOverviewC
  with parameters
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_LANGUAGE
    P_Language : sylangu,
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_DATE
    P_KeyDate  : sydatum
  as select from I_EHSRisk 


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

    inner join I_MyEHSLocationExpanded on I_EHSRisk.EHSLocationUUID = I_MyEHSLocationExpanded.EHSLocationUUID
  association [0..*] to I_EHSAgent as _Agent on $projection.EHSAgentUUID = _Agent.EHSAgentUUID 
  association [1..1] to  I_RatedEHSRiskLevel as _RatedEHSRiskLevel on _RatedEHSRiskLevel.LinkFlagIsOne = 1
{

  key I_EHSRisk.EHSRiskUUID,

      @ObjectModel.foreignKey.association: '_Hazard'
      _EHSRiskRoot.Hazard,
      _EHSRiskRoot._Hazard,
      
      @ObjectModel.foreignKey.association: '_HazardCategory'
      _EHSRiskRoot.HazardCategory,
      _EHSRiskRoot._HazardCategory,
      
      // Merge the "Agent" fields (Physical, Chemical and Airborne) into one single field

      @ObjectModel.foreignKey.association: '_Agent'
      cast ( case
        when I_EHSRisk.ChemicalUUID != hextobin( '00000000000000000000000000000000' )
        then I_EHSRisk.ChemicalUUID
        when I_EHSRisk.AirborneAgentUUID != hextobin( '00000000000000000000000000000000' )
        then I_EHSRisk.AirborneAgentUUID
        when I_EHSRisk._EHSRiskRoot.PhysicalAgentUUID != hextobin( '00000000000000000000000000000000' )
        then I_EHSRisk._EHSRiskRoot.PhysicalAgentUUID
        else hextobin( '00000000000000000000000000000000' )
      end as ehhss_agent_combined_uuid_ref preserving type ) as EHSAgentUUID,
      _Agent,


      @ObjectModel.foreignKey.association: '_EHSRiskLevel'
      _EHSRiskRoot.EHSRiskLevel,
      _EHSRiskRoot._EHSRiskLevel,

      @ObjectModel.foreignKey.association: '_EHSJob'
      _EHSRiskRoot.EHSJobUUID,
      _EHSRiskRoot._EHSJob,

      @ObjectModel.foreignKey.association: '_EHSRiskAssessment'
      EHSRiskAssessmentUUID,
      _EHSRiskAssessment,

      @ObjectModel.foreignKey.association: '_EHSRiskStatus'
      I_EHSRisk.EHSRiskStatus,
      @ObjectModel.association.boundFields.dataMatchesSourceAndTargetTypes:true
      _EHSRiskStatus,

      @ObjectModel.foreignKey.association: '_EHSLocation'
      I_EHSRisk.EHSLocationUUID,
      _EHSLocation,

      // Count risks

      @DefaultAggregation: #SUM
      cast (1 as ehhss_number_of_risks)     as NumberOfEHSRisks,

      I_EHSRisk._EHSRiskRoot                    as _EHSRiskRoot,

      @DefaultAggregation: #SUM
      cast ( case
        when _EHSRiskRoot.EHSRiskLevel = _RatedEHSRiskLevel.EHSRiskLevelPrio3 // Low

        then 1
        else 0
      end as ehhss_risk_level_prio_3 )      as NumberOfEHSRisksPrio3,

      @DefaultAggregation: #SUM
      cast ( case
        when _EHSRiskRoot.EHSRiskLevel = _RatedEHSRiskLevel.EHSRiskLevelPrio2 // Medium

        then 1
        else 0
      end as ehhss_risk_level_prio_2 )      as NumberOfEHSRisksPrio2,

      @DefaultAggregation: #SUM
      cast ( case
        when _EHSRiskRoot.EHSRiskLevel = _RatedEHSRiskLevel.EHSRiskLevelPrio1 // High

        then 1
        else 0
      end as ehhss_risk_level_prio_1 ) as NumberOfEHSRisksPrio1,
      
      @DefaultAggregation: #SUM
      cast ( case
        when _EHSRiskRoot.EHSRiskLevel = '' // High

        then 1
        else 0
      end as ehhss_risk_level_unassigned ) as NumberOfUnassignedEHSRisks      
      
}
// Filter by current risk revision

where RevisionStartDate <= $parameters.P_KeyDate
  and RevisionEndDate   >= $parameters.P_KeyDate
  and ( EHSRiskStatus = '02' or EHSRiskStatus = '03' )
  // Only consider active or inactive locations (to be precise: the current location revision revision must be either inactive or active)

  and ( I_EHSRisk._EHSLocation[1: RevisionStartDate <= $parameters.P_KeyDate  and RevisionEndDate >= $parameters.P_KeyDate].EHSLocationStatus = '02'
    or I_EHSRisk._EHSLocation[1: RevisionStartDate <= $parameters.P_KeyDate and RevisionEndDate >= $parameters.P_KeyDate].EHSLocationStatus = '03' )
                                                                                                                                                       
 /*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_EHSLOCATION",
"I_EHSRISK",
"I_EHSRISKROOT",
"I_MYEHSLOCATIONEXPANDED",
"I_RATEDEHSRISKLEVEL"
],
"ASSOCIATED":
[
"I_EHSAGENT",
"I_EHSJOB",
"I_EHSLOCATION",
"I_EHSRISKASSESSMENT",
"I_EHSRISKLEVEL",
"I_EHSRISKROOT",
"I_EHSRISKSTATUS",
"I_HAZARD",
"I_HAZARDCATEGORY",
"I_RATEDEHSRISKLEVEL"
],
"BASE":
[
"I_EHSRISK",
"I_EHSRISKROOT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/