C_PMNotificationHeader

DDL: C_PMNOTIFICATIONHEADER SQL: CPMNOTIFHEAD Type: view CONSUMPTION Package: IWOC

Maintenance Notification

C_PMNotificationHeader is a Consumption CDS View that provides data about "Maintenance Notification" in SAP S/4HANA. It reads from 1 data source (I_MaintenanceNotification) and exposes 66 fields with key field MaintNotifWithLeadingZeros. It has 7 associations to related views. Part of development package IWOC.

Data Sources (1)

SourceAliasJoin Type
I_MaintenanceNotification I_MaintenanceNotification from

Parameters (5)

NameTypeDefault
P_Language sylangu
P_KeyDate sydate
P_KeyTime sytime
P_User syuname
P_NotificationCategory qmtyp

Associations (7)

CardinalityTargetAliasCondition
[0..1] C_TechObjNotifSubQuery _TechnicalObject _TechnicalObject.MaintenanceNotification = $projection.MaintNotifWithLeadingZeros
[0..*] I_PlantMaintenancePartner _InterestedParty _InterestedParty.MaintObjectInternalID = $projection.MaintNotifInternalID and _InterestedParty.PartnerFunction = 'IT'
[0..1] I_PMContactCardUser _PMContactCardUser _PMContactCardUser.UserID = $projection.ReportedByUser
[0..1] I_EquipmentText _EquipmentText _EquipmentText.Equipment = $projection.equipment and _EquipmentText.Language = $session.system_language
[0..1] I_FunctionalLocationText _FunctionalLocationText _FunctionalLocationText.FunctionalLocation = $projection.functionallocation and _FunctionalLocationText.Language = $session.system_language
[0..1] I_TechObjIsEquipOrFuncnlLocT _TechObjIsEquipT _TechObjIsEquipT.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI' and _TechObjIsEquipT.Language = $session.system_language
[0..1] I_TechObjIsEquipOrFuncnlLocT _TechObjIsFuncnlLocT _TechObjIsFuncnlLocT.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and _TechObjIsFuncnlLocT.Language = $session.system_language

Annotations (10)

NameValueLevelField
EndUserText.label Maintenance Notification view
VDM.viewType #CONSUMPTION view
AbapCatalog.sqlViewName CPMNOTIFHEAD view
AccessControl.authorizationCheck #CHECK view
AbapCatalog.compiler.compareFilter true view
ObjectModel.representativeKey MaintNotifWithLeadingZeros view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view

Fields (66)

KeyFieldSource TableSource FieldDescription
KEY MaintNotifWithLeadingZeros MaintenanceNotification
MaintenanceNotification
MaintNotifInternalID MaintNotifInternalID
ReportedByUser ReportedByUser
Equipment _PMNotifMaintenanceData Equipment
FunctionalLocation
FunctionalLocationLabelName
MaintPriority MaintPriority
MaintPriorityType MaintPriorityType
NotificationType NotificationType
NotifProcessingPhase NotifProcessingPhase
NotificationText NotificationText
CreatedByUser CreatedByUser
CreationDate CreationDate
CreationTime CreationTime
LastChangedByUser LastChangedByUser
MaintenanceOrder MaintenanceOrder
RequiredStartDate RequiredStartDate
RequiredStartTime RequiredStartTime
RequiredEndDate RequiredEndDate
RequiredEndTime RequiredEndTime
NotificationCreationDate NotificationCreationDate
NotificationCreationTime NotificationCreationTime
NotificationTimeZone NotificationTimeZone
IsCompleted IsCompleted
IsDeleted IsDeleted
NotificationCategory _PMNotificationType NotificationCategory
NotificationDateTime
LastChangeDateTime
Assembly _PMNotifMaintenanceData Assembly
MaintenancePlannerGroup _PMNotifMaintenanceData MaintenancePlannerGroup
MaintenancePlanningPlant _PMNotifMaintenanceData MaintenancePlanningPlant
MainWorkCenter _MainWorkCenter WorkCenter
MaintenanceWorkCenterPlant MaintenanceWorkCenterPlant
MalfunctionEffect _PMNotifMaintenanceData MalfunctionEffect
MalfunctionEffectText
MaintenanceObjectLocation
MaintenancePlant
AssetLocation
AssetRoom
PlantSection
MaintenanceWorkCenter
LocationDescription _PMNotifMaintenanceData LocationDescription
ControllingArea
BusinessArea
CostCenter
CompanyCode
NotifProcessingPhaseDesc
MaintPriorityDesc
NotificationTypeName
ChangedDateTime
ReporterUserID _PMContactCardUser UserID
UserCanBeNotified _PMNotificationType UserCanBeNotified
TechnicalObjectCategory
TechnicalObjectType
AssetManufacturerName
ManufacturerPartTypeName
ABCIndicator
AuthorizationGroup
_PMNotificationPhase _PMNotificationPhase
_PMNotificationPriority _PMNotificationPriority
_PMNotificationType _PMNotificationType
_PMNotifMaintenanceData _PMNotifMaintenanceData
_InterestedParty _InterestedParty
_TechnicalObject _TechnicalObject
_PMContactCardUser _PMContactCardUser
@EndUserText.label: 'Maintenance Notification'
@VDM.viewType: #CONSUMPTION
@AbapCatalog.sqlViewName: 'CPMNOTIFHEAD'
@AccessControl.authorizationCheck:#CHECK
@AbapCatalog.compiler.compareFilter: true
@ObjectModel.representativeKey: 'MaintNotifWithLeadingZeros'

@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL


@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')

define view C_PMNotificationHeader
  with parameters
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_LANGUAGE
    P_Language             : sylangu,
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_DATE
    P_KeyDate              : sydate,
    @Consumption.hidden: true
    @Environment.systemField: #SYSTEM_TIME
    P_KeyTime              : sytime,
    @Consumption.hidden: true
    @Environment.systemField: #USER
    P_User                 : syuname,

    // Notification Category (Maintenance Notification = '01')

    P_NotificationCategory : qmtyp
  as select from I_MaintenanceNotification
  association [0..1] to C_TechObjNotifSubQuery       as _TechnicalObject        on  _TechnicalObject.MaintenanceNotification = $projection.MaintNotifWithLeadingZeros
  // 0..* due to association cardinality check:

  association [0..*] to I_PlantMaintenancePartner    as _InterestedParty        on  _InterestedParty.MaintObjectInternalID = $projection.MaintNotifInternalID
                                                                                and _InterestedParty.PartnerFunction       = 'IT' // Interested party

  association [0..1] to I_PMContactCardUser          as _PMContactCardUser      on  _PMContactCardUser.UserID = $projection.ReportedByUser
  association [0..1] to I_EquipmentText              as _EquipmentText          on  _EquipmentText.Equipment = $projection.equipment
                                                                                and _EquipmentText.Language  = $session.system_language
  association [0..1] to I_FunctionalLocationText     as _FunctionalLocationText on  _FunctionalLocationText.FunctionalLocation = $projection.functionallocation
                                                                                and _FunctionalLocationText.Language           = $session.system_language
  association [0..1] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsEquipT        on  _TechObjIsEquipT.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
                                                                                and _TechObjIsEquipT.Language                  = $session.system_language
  association [0..1] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsFuncnlLocT    on  _TechObjIsFuncnlLocT.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
                                                                                and _TechObjIsFuncnlLocT.Language                  = $session.system_language
{
      @ObjectModel.foreignKey.association: '_TechnicalObject'
  key MaintenanceNotification                                                                                                                                                                                                    as MaintNotifWithLeadingZeros,
      ltrim( MaintenanceNotification, '0')                                                                                                                                                                                       as MaintenanceNotification,

      //Associations

      @ObjectModel.foreignKey.association: '_InterestedParty'
      MaintNotifInternalID,
      @ObjectModel.foreignKey.association: '_PMContactCardUser'
      ReportedByUser,

      _PMNotifMaintenanceData.Equipment,
      _PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation,
      _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName,
      MaintPriority,
      MaintPriorityType,
      NotificationType,
      NotifProcessingPhase,
      NotificationText,
      CreatedByUser,
      CreationDate,
      CreationTime,
      LastChangedByUser,
      MaintenanceOrder,
      RequiredStartDate,
      RequiredStartTime,
      RequiredEndDate,
      RequiredEndTime,
      NotificationCreationDate,
      NotificationCreationTime,
      NotificationTimeZone,
      IsCompleted,
      IsDeleted,
      _PMNotificationType.NotificationCategory,

      dats_tims_to_tstmp(NotificationCreationDate, NotificationCreationTime, NotificationTimeZone, $session.client, 'NULL' )                                                                                                     as NotificationDateTime,
      // LastChangeDateTime shall never turn NULL, as it will cause DPC to raise an exception (ETag handling).

      // SAP Note 636992: Internal timestamps are always in system timezone.

      dats_tims_to_tstmp(LastChangeDate, LastChangeTime, abap_system_timezone($session.client, 'INITIAL'), $session.client, 'FAIL')                                                                                              as LastChangeDateTime,

      // Reference Object

      _PMNotifMaintenanceData.Assembly,

      //Responsibilities

      _PMNotifMaintenanceData.MaintenancePlannerGroup,
      _PMNotifMaintenanceData.MaintenancePlanningPlant,
      _MainWorkCenter.WorkCenter                                                                                                                                                                                                 as MainWorkCenter,
      MaintenanceWorkCenterPlant,

      // Malfunction Effect

      _PMNotifMaintenanceData.MalfunctionEffect,
      _PMNotifMaintenanceData._MalfunctionEffect._Text[1: Language = $parameters.P_Language ].MalfunctionEffectText,

      //Location Data

      _PMNotifMaintenanceData._LocationAccountAssignment.MaintenanceObjectLocation,
      _PMNotifMaintenanceData._LocationAccountAssignment.MaintenancePlant,
      _PMNotifMaintenanceData._LocationAccountAssignment.AssetLocation,
      _PMNotifMaintenanceData._LocationAccountAssignment.AssetRoom,
      _PMNotifMaintenanceData._LocationAccountAssignment.PlantSection,
      _PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter.WorkCenter                                                                                                                                                  as MaintenanceWorkCenter,
      _PMNotifMaintenanceData.LocationDescription,

      // Account assignment

      _PMNotifMaintenanceData._LocationAccountAssignment.ControllingArea,
      _PMNotifMaintenanceData._LocationAccountAssignment.BusinessArea,
      _PMNotifMaintenanceData._LocationAccountAssignment.CostCenter,
      _PMNotifMaintenanceData._LocationAccountAssignment.CompanyCode,


      // Text fields

      _PMNotificationPhase._Text[1: Language = $parameters.P_Language ].NotifProcessingPhaseDesc,
      _PMNotificationPriority._Text[1: Language = $parameters.P_Language ].MaintPriorityDesc,
      _PMNotificationType._Text[1: Language = $parameters.P_Language ].NotificationTypeName,


      // Corresponding 'Interested Party' entry in Maintenance Partner Table exists for User? --> Subscribed!

      case _InterestedParty[1: Partner = $parameters.P_User ].MaintObjectInternalID
          when MaintNotifInternalID then 'X'
          else '' end                                                                                                                                                                                                            as UserIsNotified,

      // Changed Timestamp

      CONCAT(LastChangeDate, LastChangeTime)                                                                                                                                                                                     as ChangedDateTime,

      // Reporter field to display on UI

      case  when _PMContactCardUser.FullName is not null and _PMContactCardUser.FullName != ''  then _PMContactCardUser.FullName
            when _PMContactCardUser.UserID is not null and _PMContactCardUser.UserID != '' then _PMContactCardUser.UserID
            else ReportedByUser end                                                                                                                                                                                              as ReporterFullName,

      // SAP User ID of Reporter (if available)

      _PMContactCardUser.UserID                                                                                                                                                                                                  as ReporterUserID,


      // Calculated Date Monitor Field

      case when ( RequiredStartDate is null or RequiredStartDate = '00000000' ) and
                ( RequiredEndDate is null or RequiredEndDate = '00000000' )
          then 'I' // Inactive

      else
          case when  RequiredStartDate > $parameters.P_KeyDate or
          ( RequiredStartDate = $parameters.P_KeyDate and RequiredStartTime  > $parameters.P_KeyTime)
              then 'G' // Green --> Start Date not reached

          else
              case when RequiredEndDate > $parameters.P_KeyDate or
                          RequiredEndDate is null or RequiredEndDate = '00000000' or
                          ( RequiredEndDate =  $parameters.P_KeyDate and RequiredEndTime > $parameters.P_KeyTime )
                              then 'Y' // Yellow --> End Date not reached

                    else  'R' // Red --> End Date reached

               end
           end
       end                                                                                                                                                                                                                       as DateMonitor,


      _PMNotificationType.UserCanBeNotified,

      //_ResponsiblePerson.Partner as PersonResponsible,


      // Technical Object fields

      // Technical Object fields

      case when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment != '' then
            cast( I_MaintenanceNotification._PMNotifMaintenanceData.Equipment as eams_tec_obj )
      when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment = '' and
          I_MaintenanceNotification._PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation != '' then
            cast(  I_MaintenanceNotification._PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation as eams_tec_obj)
      else cast('' as eams_tec_obj ) end                                                                                                                                                                                         as TechObjectWithLeadingZeros,

      case when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment != '' then
                  cast ( 'EAMS_EQUI' as eams_tec_obj_type)
           when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment = '' and
                I_MaintenanceNotification._PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation != '' then
                  cast ( 'EAMS_FL' as eams_tec_obj_type)
           else cast('' as eams_tec_obj_type ) end                                                                                                                                                                               as TechObjIsEquipOrFuncnlLoc,

      case when _PMNotifMaintenanceData.Equipment = '' then
      cast( _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName as eams_tec_obj )
      else cast( _PMNotifMaintenanceData.Equipment as eams_tec_obj ) end                                                                                                                                                         as TechnicalObject,

      case when _PMNotifMaintenanceData.Equipment = '' then
            cast( _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[1: Language = $session.system_language  ].FunctionalLocationName as eams_tec_obj_des )
      else cast( _PMNotifMaintenanceData._Equipment._EquipmentText[1: Language = $session.system_language  ].EquipmentName as eams_tec_obj_des ) end                                                                             as TechnicalObjectDescription,

      cast( case when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment != '' then _TechObjIsEquipT.TechObjIsEquipOrFuncnlLocDesc
            when I_MaintenanceNotification._PMNotifMaintenanceData.Equipment = '' and
                I_MaintenanceNotification._PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation != '' then _TechObjIsFuncnlLocT.TechObjIsEquipOrFuncnlLocDesc end as eams_tec_obj_type_desc )                    as TechObjIsEquipOrFuncnlLocDesc,

      coalesce( _PMNotifMaintenanceData._Equipment.EquipmentCategory,  _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.FunctionalLocationCategory )                                                       as TechnicalObjectCategory,
      case when _PMNotifMaintenanceData.Equipment = '' then  _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationCategory._Text[ Language = $parameters.P_Language ].FunctionalLocationCategoryDesc
           else _PMNotifMaintenanceData._Equipment._EquipmentCategory._Text[ Language = $parameters.P_Language ].EquipmentCategoryDesc end                                                                                       as TechnicalObjectCategoryDesc,
      coalesce( _PMNotifMaintenanceData._Equipment.TechnicalObjectType, _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.TechnicalObjectType )                                                             as TechnicalObjectType,
      case when _PMNotifMaintenanceData.Equipment = '' then  _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._TechnicalObjectType._Text[ Language = $parameters.P_Language ].TechnicalObjectTypeDesc
           else _PMNotifMaintenanceData._Equipment._TechnicalObjectType._Text[ Language = $parameters.P_Language ].TechnicalObjectTypeDesc end                                                                                   as TechnicalObjectTypeDesc,
      coalesce( _PMNotifMaintenanceData._Equipment.AssetManufacturerName, _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.AssetManufacturerName )                                                         as AssetManufacturerName,
      coalesce( _PMNotifMaintenanceData._Equipment.ManufacturerPartTypeName, _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.ManufacturerPartTypeName )                                                   as ManufacturerPartTypeName,
      coalesce( _PMNotifMaintenanceData._Equipment._CurrentTimeSegment._LocationAccountAssignment.ABCIndicator, _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._LocationAccountAssignment.ABCIndicator ) as ABCIndicator,
      coalesce( _PMNotifMaintenanceData._Equipment.AuthorizationGroup, _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.AuthorizationGroup )                                                               as AuthorizationGroup,


      // Propagate associations

      _PMNotificationPhase,
      _PMNotificationPriority,
      _PMNotificationType,
      _PMNotifMaintenanceData,
      _InterestedParty,
      _TechnicalObject,
      _PMContactCardUser
      //_ResponsiblePerson


}
where
  _PMNotificationType.NotificationCategory = $parameters.P_NotificationCategory