P_Damageanalysiscube

DDL: P_DAMAGEANALYSISCUBE SQL: PDAMAGEANALYCUBE Type: view COMPOSITE

P_Damageanalysiscube is a Composite CDS View in SAP S/4HANA. It reads from 2 data sources (I_MaintenanceNotificationItem, I_MaintNotificationActivity) and exposes 208 fields with key fields MaintenanceNotification, MaintenanceNotificationItem, MaintenanceNotificationCause, MaintNotificationActivity, MaintenanceNotificationItem. It has 3 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_MaintenanceNotificationItem I_MaintenanceNotificationItem from
I_MaintNotificationActivity I_MaintNotificationActivity union_all

Associations (3)

CardinalityTargetAliasCondition
[0..1] I_MaintNotificationTechObj _MaintNotificationTechObj $projection.MaintenanceNotification = _MaintNotificationTechObj.MaintenanceNotification
[0..1] I_UsedConstructionTypeVH _UsedConstructionTypeVH $projection.constructionmaterial = _UsedConstructionTypeVH.ConstructionMaterial
[0..1] I_TechnicalObjectCategory _TechnicalObjectCategory $projection.technicalobjectcategory = _TechnicalObjectCategory.TechnicalObjectCategory and _TechnicalObjectCategory.TechObjIsEquipOrFuncnlLoc = $projection.techobjisequiporfuncnlloc

Annotations (7)

NameValueLevelField
VDM.private true view
VDM.viewType #COMPOSITE view
AbapCatalog.sqlViewName PDAMAGEANALYCUBE view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #NOT_REQUIRED view
ClientHandling.algorithm #SESSION_VARIABLE view
AbapCatalog.preserveKey true view

Fields (208)

KeyFieldSource TableSource FieldDescription
KEY MaintenanceNotification I_MaintenanceNotificationItem MaintenanceNotification
KEY MaintenanceNotificationItem I_MaintenanceNotificationItem MaintenanceNotificationItem
KEY MaintenanceNotificationCause
KEY MaintNotificationActivity
NotificationType _MaintNotificationTechObj NotificationType
MaintenancePlanningPlant
MainWorkCenter
MainWorkCenterPlant
MaintenancePlant
WorkCenter
NotifProcessingPhase _MaintNotificationTechObj NotifProcessingPhase
CreatedByUser _MaintNotificationTechObj CreatedByUser
LastChangedByUser _MaintNotificationTechObj LastChangedByUser
ReportedByUser _MaintNotificationTechObj ReportedByUser
CreationDate _MaintNotificationTechObj CreationDate
LastChangeDate _MaintNotificationTechObj LastChangeDate
LastChangeDateTime _MaintNotificationTechObj LastChangeDateTime
NotificationCreationDate _MaintNotificationTechObj NotificationCreationDate
RequiredStartDate _MaintNotificationTechObj RequiredStartDate
RequiredEndDate _MaintNotificationTechObj RequiredEndDate
NotificationReferenceDate _MaintNotificationTechObj NotificationReferenceDate
MalfunctionStartDate
MalfunctionEndDate
IsDeleted _MaintNotificationTechObj IsDeleted
IsCompleted _MaintNotificationTechObj IsCompleted
MaintNotificationCatalog _MaintNotificationTechObj MaintNotificationCatalog
MaintNotificationCode _MaintNotificationTechObj MaintNotificationCode
MaintNotificationCodeGroup _MaintNotificationTechObj MaintNotificationCodeGroup
MalfunctionEffect
PlantSection
AssetLocation
AssetRoom
BusinessArea
Assembly
MaintenancePlannerGroup
ABCIndicator
MaintObjectFreeDefinedAttrib
WBSElementInternalID
CompanyCode
CostCenter
ControllingArea
MaintPriority _MaintNotificationTechObj MaintPriority
MaintPriorityType _MaintNotificationTechObj MaintPriorityType
TechnicalObject _MaintNotificationTechObj TechnicalObject
TechObjIsEquipOrFuncnlLoc _MaintNotificationTechObj TechObjIsEquipOrFuncnlLoc
TechnicalObjectType
AssetManufacturerName
ManufacturerPartTypeName
ManufacturerCountry
ConstructionMaterial
ConstructionYear
ConstructionMonth
AuthorizationGroup
Equipment _MaintNotificationTechObj Equipment
FunctionalLocation _MaintNotificationTechObj FunctionalLocation
TechnicalObjectCategory
CatalogProfile
MaintNotifDamageCodeCatalog I_MaintenanceNotificationItem MaintNotifDamageCodeCatalog
MaintNotificationDamageCode I_MaintenanceNotificationItem MaintNotificationDamageCode
MaintNotifDamageCodeGroup I_MaintenanceNotificationItem MaintNotifDamageCodeGroup
MaintNotifObjPrtCodeCatalog I_MaintenanceNotificationItem MaintNotifObjPrtCodeCatalog
MaintNotifObjPrtCode I_MaintenanceNotificationItem MaintNotifObjPrtCode
MaintNotifObjPrtCodeGroup I_MaintenanceNotificationItem MaintNotifObjPrtCodeGroup
MaintNotifCauseCodeCatalog
MaintNotificationCauseCode
MaintNotifCauseCodeGroup
MaintNotificationRootCause
MaintNotifActivityCodeCatalog
MaintNotificationActivityCode
MaintNotifActivityCodeGroup
NumberOfMaintNotifActivities
_MaintenanceNotification I_MaintenanceNotificationItem _MaintenanceNotification
_PMNotificationPhase _MaintNotificationTechObj _PMNotificationPhase
_MaintenancePlant
_PMNotificationType _MaintNotificationTechObj _PMNotificationType
_MaintenancePlanningPlant
_MaintenancePlanPlant
_MaintNotificationCatalog _MaintNotificationTechObj _MaintNotificationCatalog
_MaintNotificationCode _MaintNotificationTechObj _MaintNotificationCode
_MaintNotificationCodeGroup _MaintNotificationTechObj _MaintNotificationCodeGroup
_MalfunctionEffect
_PlantSection
_PMNotificationPriorityType _MaintNotificationTechObj _PMNotificationPriorityType
_PMNotificationPriority _MaintNotificationTechObj _PMNotificationPriority
_BusinessArea
_MaintenancePlannerGroup
_IsCompleted _MaintNotificationTechObj _IsCompleted
_IsDeleted _MaintNotificationTechObj _IsDeleted
_CompanyCode
_WBSElementBasicData
_ABCIndicator
_MaintNotificationTechObj _MaintNotificationTechObj
_TechnicalObject _MaintNotificationTechObj _TechnicalObject
_TechObjIsEquipOrFuncnlLoc _MaintNotificationTechObj _TechObjIsEquipOrFuncnlLoc
_TechnicalObjectType
_ManufacturerCountry
_ConstructionMaterial
_Equipment _MaintNotificationTechObj _Equipment
_FunctionalLocation _MaintNotificationTechObj _FunctionalLocation
_UsedConstructionTypeVH _UsedConstructionTypeVH
_TechnicalObjectCategory _TechnicalObjectCategory
_TechnicalObjectCodeCatalog
MaintenanceNotification
KEY MaintenanceNotificationItem
KEY MaintenanceNotificationCause
KEY MaintNotificationActivity I_MaintNotificationActivity MaintNotificationActivity
NotificationType _MaintNotificationTechObj NotificationType
MaintenancePlanningPlant
MainWorkCenter
MainWorkCenterPlant
MaintenancePlant
WorkCenter
NotifProcessingPhase _MaintNotificationTechObj NotifProcessingPhase
CreatedByUser _MaintNotificationTechObj CreatedByUser
LastChangedByUser _MaintNotificationTechObj LastChangedByUser
ReportedByUser _MaintNotificationTechObj ReportedByUser
CreationDate _MaintNotificationTechObj CreationDate
LastChangeDate _MaintNotificationTechObj LastChangeDate
LastChangeDateTime _MaintNotificationTechObj LastChangeDateTime
NotificationCreationDate _MaintNotificationTechObj NotificationCreationDate
RequiredStartDate _MaintNotificationTechObj RequiredStartDate
RequiredEndDate _MaintNotificationTechObj RequiredEndDate
NotificationReferenceDate _MaintNotificationTechObj NotificationReferenceDate
MalfunctionStartDate
MalfunctionEndDate
IsDeleted _MaintNotificationTechObj IsDeleted
IsCompleted _MaintNotificationTechObj IsCompleted
MaintNotificationCatalog _MaintNotificationTechObj MaintNotificationCatalog
MaintNotificationCode _MaintNotificationTechObj MaintNotificationCode
MaintNotificationCodeGroup _MaintNotificationTechObj MaintNotificationCodeGroup
MalfunctionEffect
PlantSection
AssetLocation
AssetRoom
BusinessArea
Assembly
MaintenancePlannerGroup
ABCIndicator
MaintObjectFreeDefinedAttrib
WBSElementInternalID
CompanyCode
CostCenter
ControllingArea
MaintPriority _MaintNotificationTechObj MaintPriority
MaintPriorityType _MaintNotificationTechObj MaintPriorityType
TechnicalObject _MaintNotificationTechObj TechnicalObject
TechObjIsEquipOrFuncnlLoc _MaintNotificationTechObj TechObjIsEquipOrFuncnlLoc
TechnicalObjectType
AssetManufacturerName
ManufacturerPartTypeName
ManufacturerCountry
ConstructionMaterial
ConstructionYear
ConstructionMonth
AuthorizationGroup
Equipment _MaintNotificationTechObj Equipment
FunctionalLocation _MaintNotificationTechObj FunctionalLocation
TechnicalObjectCategory
CatalogProfile
MaintNotifDamageCodeCatalog
MaintNotificationDamageCode
MaintNotifDamageCodeGroup
NumberOfMaintNotifDamages
MaintNotifObjPrtCodeCatalog
MaintNotifObjPrtCode
MaintNotifObjPrtCodeGroup
NumberOfMaintNotifObjectParts 0
MaintNotifCauseCodeCatalog
MaintNotificationCauseCode
MaintNotifCauseCodeGroup
MaintNotificationRootCause
NumberOfMaintNotifCauses
MaintNotifActivityCodeCatalog I_MaintNotificationActivity MaintNotifActivityCodeCatalog
MaintNotificationActivityCode I_MaintNotificationActivity MaintNotificationActivityCode
MaintNotifActivityCodeGroup I_MaintNotificationActivity MaintNotifActivityCodeGroup
NumberOfMaintNotifActivities
_MaintenanceNotification I_MaintNotificationActivity _MaintenanceNotification
_PMNotificationPhase _MaintNotificationTechObj _PMNotificationPhase
_MaintenancePlant
_PMNotificationType _MaintNotificationTechObj _PMNotificationType
_MaintenancePlanningPlant
_MaintenancePlanPlant
_MaintNotificationCatalog _MaintNotificationTechObj _MaintNotificationCatalog
_MaintNotificationCode _MaintNotificationTechObj _MaintNotificationCode
_MaintNotificationCodeGroup _MaintNotificationTechObj _MaintNotificationCodeGroup
_MalfunctionEffect
_PlantSection
_PMNotificationPriorityType _MaintNotificationTechObj _PMNotificationPriorityType
_PMNotificationPriority _MaintNotificationTechObj _PMNotificationPriority
_BusinessArea
_MaintenancePlannerGroup
_IsCompleted _MaintNotificationTechObj _IsCompleted
_IsDeleted _MaintNotificationTechObj _IsDeleted
_CompanyCode
_WBSElementBasicData
_ABCIndicator
_MaintNotificationTechObj _MaintNotificationTechObj
_TechnicalObject _MaintNotificationTechObj _TechnicalObject
_TechObjIsEquipOrFuncnlLoc _MaintNotificationTechObj _TechObjIsEquipOrFuncnlLoc
_TechnicalObjectType
_ManufacturerCountry
_ConstructionMaterial
_Equipment _MaintNotificationTechObj _Equipment
_FunctionalLocation _MaintNotificationTechObj _FunctionalLocation
_UsedConstructionTypeVH _UsedConstructionTypeVH
_TechnicalObjectCategory _TechnicalObjectCategory
_TechnicalObjectCodeCatalog
_MainWorkCenterPlant
//@EndUserText.label: 'Damage Analysis Cube'

@VDM.private: true
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'PDAMAGEANALYCUBE'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE

@AbapCatalog.preserveKey: true
define view P_Damageanalysiscube
  as select from I_MaintenanceNotificationItem
  association [0..1] to I_MaintNotificationTechObj as _MaintNotificationTechObj on  $projection.MaintenanceNotification = _MaintNotificationTechObj.MaintenanceNotification
  association [0..1] to I_UsedConstructionTypeVH   as _UsedConstructionTypeVH   on  $projection.constructionmaterial = _UsedConstructionTypeVH.ConstructionMaterial    
  association [0..1] to I_TechnicalObjectCategory  as _TechnicalObjectCategory  on  $projection.technicalobjectcategory                = _TechnicalObjectCategory.TechnicalObjectCategory
                                                                                and _TechnicalObjectCategory.TechObjIsEquipOrFuncnlLoc = $projection.techobjisequiporfuncnlloc                                                                          
{


      /****************************************************************************************************
      * Notification Header Data
      ****************************************************************************************************/
      @ObjectModel.foreignKey.association: '_MaintenanceNotification'
  key I_MaintenanceNotificationItem.MaintenanceNotification,
  key I_MaintenanceNotificationItem.MaintenanceNotificationItem,
  key I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause,
  key cast( '' as aknum )                                                                       as MaintNotificationActivity,


      @ObjectModel.foreignKey.association: '_PMNotificationType'
      _MaintNotificationTechObj.NotificationType,

      // Main Work Center

      @ObjectModel.foreignKey.association: '_MaintenancePlanPlant'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlanningPlant,
      cast( _MaintNotificationTechObj._MainWorkCenter.WorkCenter as gewrk )                     as MainWorkCenter,
      @ObjectModel.foreignKey.association: '_MainWorkCenterPlant'
      _MaintNotificationTechObj._MainWorkCenter.Plant                                           as MainWorkCenterPlant,

      // Location

      @ObjectModel.foreignKey.association: '_MaintenancePlant'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintenancePlant,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter.WorkCenter,

      @ObjectModel.foreignKey.association: '_PMNotificationPhase'
      _MaintNotificationTechObj.NotifProcessingPhase,

      // Users involved

      @Semantics.user.createdBy: true
      _MaintNotificationTechObj.CreatedByUser,
      @Semantics.user.lastChangedBy: true
      _MaintNotificationTechObj.LastChangedByUser,
      @Semantics.user.id: true
      _MaintNotificationTechObj.ReportedByUser,

      // Dates

      @Semantics.systemDate.createdAt: true
      _MaintNotificationTechObj.CreationDate,
      @Semantics.systemDate.lastChangedAt: true
      _MaintNotificationTechObj.LastChangeDate,
      _MaintNotificationTechObj.LastChangeDateTime,
      @Semantics.businessDate.createdAt: true
      _MaintNotificationTechObj.NotificationCreationDate,
      _MaintNotificationTechObj.RequiredStartDate,
      _MaintNotificationTechObj.RequiredEndDate,
      @Semantics.businessDate.at: true
      _MaintNotificationTechObj.NotificationReferenceDate,
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartDate,
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndDate,

      // Status flags

      @ObjectModel.foreignKey.association: '_IsDeleted'
      _MaintNotificationTechObj.IsDeleted,
      @ObjectModel.foreignKey.association: '_IsCompleted'
      _MaintNotificationTechObj.IsCompleted,

      @ObjectModel.foreignKey.association: '_MaintNotificationCatalog'
      _MaintNotificationTechObj.MaintNotificationCatalog,
      @ObjectModel.foreignKey.association: '_MaintNotificationCode'
      _MaintNotificationTechObj.MaintNotificationCode,
      @ObjectModel.foreignKey.association: '_MaintNotificationCodeGroup'
      _MaintNotificationTechObj.MaintNotificationCodeGroup,      
      @ObjectModel.foreignKey.association: '_MalfunctionEffect'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEffect,


      @ObjectModel.foreignKey.association: '_PlantSection'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.PlantSection,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetLocation,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetRoom,
      @ObjectModel.foreignKey.association: '_BusinessArea'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.BusinessArea,
      _MaintNotificationTechObj._PMNotifMaintenanceData.Assembly,
      @ObjectModel.foreignKey.association: '_MaintenancePlannerGroup'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlannerGroup,

      @ObjectModel.foreignKey.association: '_ABCIndicator'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ABCIndicator,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintObjectFreeDefinedAttrib,
      @ObjectModel.foreignKey.association: '_WBSElementBasicData'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.WBSElementInternalID,
      @ObjectModel.foreignKey.association: '_CompanyCode'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.CompanyCode,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.CostCenter,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ControllingArea,

      @ObjectModel.foreignKey.association: '_PMNotificationPriority'
      _MaintNotificationTechObj.MaintPriority,
      @ObjectModel.foreignKey.association: '_PMNotificationPriorityType'
      _MaintNotificationTechObj.MaintPriorityType,


      /****************************************************************************************************
      * Technical Object
      ****************************************************************************************************/
      @ObjectModel.foreignKey.association: '_TechnicalObject'
      _MaintNotificationTechObj.TechnicalObject,
      @ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
      _MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc,
      @ObjectModel.foreignKey.association: '_TechnicalObjectType'
      _MaintNotificationTechObj._TechnicalObject.TechnicalObjectType,
      _MaintNotificationTechObj._TechnicalObject.AssetManufacturerName,
      _MaintNotificationTechObj._TechnicalObject.ManufacturerPartTypeName,
      @ObjectModel.foreignKey.association: '_ManufacturerCountry'
      _MaintNotificationTechObj._TechnicalObject.ManufacturerCountry,
      @ObjectModel.foreignKey.association: '_UsedConstructionTypeVH'
      _MaintNotificationTechObj._TechnicalObject.ConstructionMaterial,      
      _MaintNotificationTechObj._TechnicalObject.ConstructionYear,
      _MaintNotificationTechObj._TechnicalObject.ConstructionMonth,
      _MaintNotificationTechObj._TechnicalObject.AuthorizationGroup,
      @ObjectModel.foreignKey.association: '_Equipment'
      _MaintNotificationTechObj.Equipment,
      @ObjectModel.foreignKey.association: '_FunctionalLocation'
      _MaintNotificationTechObj.FunctionalLocation,
      @ObjectModel.foreignKey.association: '_TechnicalObjectCategory'
      _MaintNotificationTechObj._TechnicalObject.TechnicalObjectCategory,
      @ObjectModel.foreignKey.association: '_TechnicalObjectCodeCatalog'
      _MaintNotificationTechObj._TechnicalObject.CatalogProfile,


      /****************************************************************************************************
      * Notification Item (Damages, Object Parts, Causes)
      ****************************************************************************************************/

      // Damages

      I_MaintenanceNotificationItem.MaintNotifDamageCodeCatalog,
      I_MaintenanceNotificationItem.MaintNotificationDamageCode,
      I_MaintenanceNotificationItem.MaintNotifDamageCodeGroup,
      // Only count damage (item) for first cause as relationship between item and cause is [1.*]

      @DefaultAggregation: #SUM
      cast( case when (I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause = '0001' or
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause is null) and
      ( I_MaintenanceNotificationItem.MaintNotificationDamageCode is not null and I_MaintenanceNotificationItem.MaintNotificationDamageCode != '')
      then 1
      else 0 end as sscode )                                                                    as NumberOfMaintNotifDamages,

      // Object Parts

      I_MaintenanceNotificationItem.MaintNotifObjPrtCodeCatalog,
      I_MaintenanceNotificationItem.MaintNotifObjPrtCode,
      I_MaintenanceNotificationItem.MaintNotifObjPrtCodeGroup,
      // Only count object part (item) for first cause as relationship between item and cause is [1.*]

      @DefaultAggregation: #SUM
      cast( case when (I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause = '0001' or
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause is null ) and
      ( I_MaintenanceNotificationItem.MaintNotifObjPrtCode is not null and I_MaintenanceNotificationItem.MaintNotifObjPrtCode != '')
      then 1
      else 0 end as eam_object_parts )                                                          as NumberOfMaintNotifObjectParts,

      // Causes

      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintNotifCauseCodeCatalog,
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintNotificationCauseCode,
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintNotifCauseCodeGroup,
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintNotificationRootCause,
      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause is not null and
      I_MaintenanceNotificationItem._MaintenanceNotificationCause[1:  IsDeleted='' or IsDeleted is null ].MaintenanceNotificationCause != '' then 1
      else 0 end as sucode )                                                                    as NumberOfMaintNotifCauses,

      // Activities are shown in separate result line

      cast('' as eam_activity_code_catalog)                                                     as MaintNotifActivityCodeCatalog,
      cast( '' as eam_activity_code )                                                           as MaintNotificationActivityCode,
      cast( '' as eam_activity_code_group )                                                     as MaintNotifActivityCodeGroup,
      @DefaultAggregation: #SUM
      cast( 0 as sacode)                                                                        as NumberOfMaintNotifActivities,

      //Associations

      I_MaintenanceNotificationItem._MaintenanceNotification,
      _MaintNotificationTechObj._PMNotificationPhase,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._MaintenancePlant,
      _MaintNotificationTechObj._PMNotificationType,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanningPlant,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanPlant,
      _MaintNotificationTechObj._MaintNotificationCatalog,
      _MaintNotificationTechObj._MaintNotificationCode,
      _MaintNotificationTechObj._MaintNotificationCodeGroup,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MalfunctionEffect,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._PlantSection,
      _MaintNotificationTechObj._PMNotificationPriorityType,
      _MaintNotificationTechObj._PMNotificationPriority,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._BusinessArea,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlannerGroup,
      _MaintNotificationTechObj._IsCompleted,
      _MaintNotificationTechObj._IsDeleted,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._CompanyCode,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WBSElementBasicData,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._ABCIndicator,
      _MaintNotificationTechObj,
      _MaintNotificationTechObj._TechnicalObject,
      _MaintNotificationTechObj._TechObjIsEquipOrFuncnlLoc,
      _MaintNotificationTechObj._TechnicalObject._TechnicalObjectType,
      _MaintNotificationTechObj._TechnicalObject._ManufacturerCountry,
      _MaintNotificationTechObj._TechnicalObject._ConstructionMaterial,      
      _MaintNotificationTechObj._Equipment,
      _MaintNotificationTechObj._FunctionalLocation,
      _UsedConstructionTypeVH,
      _TechnicalObjectCategory,
      _MaintNotificationTechObj._TechnicalObject._TechnicalObjectCodeCatalog,
      _MaintNotificationTechObj._MainWorkCenter._Plant as _MainWorkCenterPlant

}
// Restrict to Notification Category '01' (PM)

where
      _MaintenanceNotification._PMNotificationType.NotificationCategory = '01'
  and I_MaintenanceNotificationItem.IsDeleted = ''

union all

select from I_MaintNotificationActivity
association [0..1] to I_MaintNotificationTechObj as _MaintNotificationTechObj on  $projection.MaintenanceNotification = _MaintNotificationTechObj.MaintenanceNotification
association [0..1] to I_UsedConstructionTypeVH   as _UsedConstructionTypeVH   on  $projection.constructionmaterial = _UsedConstructionTypeVH.ConstructionMaterial    
association [0..1] to I_TechnicalObjectCategory  as _TechnicalObjectCategory  on  $projection.technicalobjectcategory                = _TechnicalObjectCategory.TechnicalObjectCategory
                                                                              and _TechnicalObjectCategory.TechObjIsEquipOrFuncnlLoc = $projection.techobjisequiporfuncnlloc
{

      /****************************************************************************************************
      * Notification Header Data
      ****************************************************************************************************/

      @ObjectModel.foreignKey.association: '_MaintenanceNotification'
  key I_MaintNotificationActivity.MaintenanceNotification,
  key I_MaintNotificationActivity._MaintenanceNotificationItem.MaintenanceNotificationItem,
  key I_MaintNotificationActivity._MaintenanceNotificationItem._MaintenanceNotificationCause[1: MaintenanceNotificationCause = '0001'].MaintenanceNotificationCause,
  key I_MaintNotificationActivity.MaintNotificationActivity,


      @ObjectModel.foreignKey.association: '_PMNotificationType'
      _MaintNotificationTechObj.NotificationType,

      // Main Work Center

      @ObjectModel.foreignKey.association: '_MaintenancePlanPlant'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlanningPlant,
      cast( _MaintNotificationTechObj._MainWorkCenter.WorkCenter as gewrk ) as MainWorkCenter,
      @ObjectModel.foreignKey.association: '_MainWorkCenterPlant'
      _MaintNotificationTechObj._MainWorkCenter.Plant                       as MainWorkCenterPlant,
      
      // Location

      @ObjectModel.foreignKey.association: '_MaintenancePlant'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintenancePlant,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter.WorkCenter,

      @ObjectModel.foreignKey.association: '_PMNotificationPhase'
      _MaintNotificationTechObj.NotifProcessingPhase,

      // Users involved

      @Semantics.user.createdBy: true
      _MaintNotificationTechObj.CreatedByUser,
      @Semantics.user.lastChangedBy: true
      _MaintNotificationTechObj.LastChangedByUser,
      @Semantics.user.id: true
      _MaintNotificationTechObj.ReportedByUser,

      // Dates

      @Semantics.systemDate.createdAt: true
      _MaintNotificationTechObj.CreationDate,
      @Semantics.systemDate.lastChangedAt: true
      _MaintNotificationTechObj.LastChangeDate,
      _MaintNotificationTechObj.LastChangeDateTime,
      @Semantics.businessDate.createdAt: true
      _MaintNotificationTechObj.NotificationCreationDate,
      _MaintNotificationTechObj.RequiredStartDate,
      _MaintNotificationTechObj.RequiredEndDate,
      @Semantics.businessDate.at: true
      _MaintNotificationTechObj.NotificationReferenceDate,
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartDate,
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndDate,


      // Status flags

      @ObjectModel.foreignKey.association: '_IsDeleted'
      _MaintNotificationTechObj.IsDeleted,
      @ObjectModel.foreignKey.association: '_IsCompleted'
      _MaintNotificationTechObj.IsCompleted,

      @ObjectModel.foreignKey.association: '_MaintNotificationCatalog'
      _MaintNotificationTechObj.MaintNotificationCatalog,
      @ObjectModel.foreignKey.association: '_MaintNotificationCode'
      _MaintNotificationTechObj.MaintNotificationCode,
      @ObjectModel.foreignKey.association: '_MaintNotificationCodeGroup'
      _MaintNotificationTechObj.MaintNotificationCodeGroup,
      @ObjectModel.foreignKey.association: '_MalfunctionEffect'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEffect,      

      @ObjectModel.foreignKey.association: '_PlantSection'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.PlantSection,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetLocation,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetRoom,
      @ObjectModel.foreignKey.association: '_BusinessArea'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.BusinessArea,
      _MaintNotificationTechObj._PMNotifMaintenanceData.Assembly,
      @ObjectModel.foreignKey.association: '_MaintenancePlannerGroup'
      _MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlannerGroup,

      @ObjectModel.foreignKey.association: '_ABCIndicator'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ABCIndicator,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintObjectFreeDefinedAttrib,
      @ObjectModel.foreignKey.association: '_WBSElementBasicData'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.WBSElementInternalID,
      @ObjectModel.foreignKey.association: '_CompanyCode'
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.CompanyCode,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.CostCenter,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ControllingArea,

      @ObjectModel.foreignKey.association: '_PMNotificationPriority'
      _MaintNotificationTechObj.MaintPriority,
      @ObjectModel.foreignKey.association: '_PMNotificationPriorityType'
      _MaintNotificationTechObj.MaintPriorityType,

      /****************************************************************************************************
      * Technical Object
      ****************************************************************************************************/

      @ObjectModel.foreignKey.association: '_TechnicalObject'
      _MaintNotificationTechObj.TechnicalObject,
      @ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
      _MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc,
      @ObjectModel.foreignKey.association: '_TechnicalObjectType'
      _MaintNotificationTechObj._TechnicalObject.TechnicalObjectType,
      _MaintNotificationTechObj._TechnicalObject.AssetManufacturerName,
      _MaintNotificationTechObj._TechnicalObject.ManufacturerPartTypeName,
      @ObjectModel.foreignKey.association: '_ManufacturerCountry'
      _MaintNotificationTechObj._TechnicalObject.ManufacturerCountry,
      @ObjectModel.foreignKey.association: '_UsedConstructionTypeVH'
      _MaintNotificationTechObj._TechnicalObject.ConstructionMaterial,      
      _MaintNotificationTechObj._TechnicalObject.ConstructionYear,
      _MaintNotificationTechObj._TechnicalObject.ConstructionMonth,
      _MaintNotificationTechObj._TechnicalObject.AuthorizationGroup,
      @ObjectModel.foreignKey.association: '_Equipment'
      _MaintNotificationTechObj.Equipment,
      @ObjectModel.foreignKey.association: '_FunctionalLocation'
      _MaintNotificationTechObj.FunctionalLocation,
      @ObjectModel.foreignKey.association: '_TechnicalObjectCategory'
      _MaintNotificationTechObj._TechnicalObject.TechnicalObjectCategory,
      @ObjectModel.foreignKey.association: '_TechnicalObjectCodeCatalog'
      _MaintNotificationTechObj._TechnicalObject.CatalogProfile,

      /****************************************************************************************************
      * Activities
      ****************************************************************************************************/

      // Damages

      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotifDamageCodeCatalog,
      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotificationDamageCode,
      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotifDamageCodeGroup,
      @DefaultAggregation: #SUM
      cast( 0 as sscode )                                                   as NumberOfMaintNotifDamages,

      // Object Parts

      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotifObjPrtCodeCatalog,
      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotifObjPrtCode,
      I_MaintNotificationActivity._MaintenanceNotificationItem.MaintNotifObjPrtCodeGroup,
      @DefaultAggregation: #SUM
      0                                                                     as NumberOfMaintNotifObjectParts,

      // Causes (assign activity to first cause!?)

      I_MaintNotificationActivity._MaintenanceNotificationItem._MaintenanceNotificationCause[1: MaintenanceNotificationCause = '0001'].MaintNotifCauseCodeCatalog,
      I_MaintNotificationActivity._MaintenanceNotificationItem._MaintenanceNotificationCause[1: MaintenanceNotificationCause = '0001'].MaintNotificationCauseCode,
      I_MaintNotificationActivity._MaintenanceNotificationItem._MaintenanceNotificationCause[1: MaintenanceNotificationCause = '0001'].MaintNotifCauseCodeGroup,
      I_MaintNotificationActivity._MaintenanceNotificationItem._MaintenanceNotificationCause[1: MaintenanceNotificationCause = '0001'].MaintNotificationRootCause,
      @DefaultAggregation: #SUM
      cast( 0 as sucode )                                                   as NumberOfMaintNotifCauses,

      // Activities

      I_MaintNotificationActivity.MaintNotifActivityCodeCatalog,
      I_MaintNotificationActivity.MaintNotificationActivityCode,
      I_MaintNotificationActivity.MaintNotifActivityCodeGroup,
      @DefaultAggregation: #SUM
      cast( 1 as sacode )                                                   as NumberOfMaintNotifActivities,

      //Associations

      I_MaintNotificationActivity._MaintenanceNotification,
      _MaintNotificationTechObj._PMNotificationPhase,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._MaintenancePlant,
      _MaintNotificationTechObj._PMNotificationType,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanningPlant,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanPlant,
      _MaintNotificationTechObj._MaintNotificationCatalog,
      _MaintNotificationTechObj._MaintNotificationCode,
      _MaintNotificationTechObj._MaintNotificationCodeGroup,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MalfunctionEffect,      
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._PlantSection,
      _MaintNotificationTechObj._PMNotificationPriorityType,
      _MaintNotificationTechObj._PMNotificationPriority,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._BusinessArea,
      _MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlannerGroup,
      _MaintNotificationTechObj._IsCompleted,
      _MaintNotificationTechObj._IsDeleted,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._CompanyCode,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WBSElementBasicData,
      _MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._ABCIndicator,
      _MaintNotificationTechObj,
      _MaintNotificationTechObj._TechnicalObject,
      _MaintNotificationTechObj._TechObjIsEquipOrFuncnlLoc,
      _MaintNotificationTechObj._TechnicalObject._TechnicalObjectType,
      _MaintNotificationTechObj._TechnicalObject._ManufacturerCountry,
      _MaintNotificationTechObj._TechnicalObject._ConstructionMaterial,       
      _MaintNotificationTechObj._Equipment,
      _MaintNotificationTechObj._FunctionalLocation,
      _UsedConstructionTypeVH,
      _TechnicalObjectCategory,
      _MaintNotificationTechObj._TechnicalObject._TechnicalObjectCodeCatalog,
      _MaintNotificationTechObj._MainWorkCenter._Plant as _MainWorkCenterPlant
            
}
// Restrict to Notification Category '01' (PM)

where
      _MaintenanceNotification._PMNotificationType.NotificationCategory = '01'
  and I_MaintNotificationActivity.IsDeleted = ''
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_LOCATIONACCOUNTASSIGNMENT",
"I_MAINTENANCENOTIFICATION",
"I_MAINTENANCENOTIFICATIONCAUSE",
"I_MAINTENANCENOTIFICATIONITEM",
"I_MAINTNOTIFICATIONACTIVITY",
"I_MAINTNOTIFICATIONTECHOBJ",
"I_PMNOTIFICATIONTYPE",
"I_PMNOTIFMAINTENANCEDATA",
"I_TECHNICALOBJECT",
"I_WORKCENTER"
],
"ASSOCIATED":
[
"I_ABCINDICATOR",
"I_BUSINESSAREA",
"I_COMPANYCODE",
"I_COUNTRY",
"I_EQUIPMENT",
"I_FUNCTIONALLOCATION",
"I_INDICATOR",
"I_INSPECTIONCATALOG",
"I_INSPECTIONCODE",
"I_INSPECTIONCODEGROUP",
"I_MAINTENANCENOTIFICATION",
"I_MAINTENANCEPLANNERGROUP",
"I_MAINTENANCEPLANPLANT",
"I_MAINTNOTIFICATIONTECHOBJ",
"I_MALFUNCTIONEFFECT",
"I_MATERIAL",
"I_PLANT",
"I_PLANTSECTION",
"I_PMNOTIFICATIONPHASE",
"I_PMNOTIFICATIONPRIORITY",
"I_PMNOTIFICATIONPRIORITYTYPE",
"I_PMNOTIFICATIONTYPE",
"I_TECHNICALOBJECT",
"I_TECHNICALOBJECTCATEGORY",
"I_TECHNICALOBJECTTYPE",
"I_TECHNICALREPORT",
"I_TECHOBJISEQUIPORFUNCNLLOC",
"I_USEDCONSTRUCTIONTYPEVH",
"I_WBSELEMENTBASICDATA"
],
"BASE":
[
"I_LOCATIONACCOUNTASSIGNMENT",
"I_MAINTENANCENOTIFICATIONITEM",
"I_MAINTNOTIFICATIONTECHOBJ",
"I_PMNOTIFMAINTENANCEDATA",
"I_TECHNICALOBJECT",
"I_WORKCENTER"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/