@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@EndUserText.label: 'Maintenance Work Request'
@VDM.viewType: #TRANSACTIONAL
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
@ObjectModel.representativeKey: 'MaintenanceNotification'
@ObjectModel.semanticKey: [ 'MaintenanceNotification' ]
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'R_MaintenanceNotificationTP'
define root view entity R_MaintenanceWorkRequestTP
as select from I_MaintNotificationTechObj
// association [0..1] to I_MaintNotifLongText as _MaintNotifLongText on $projection.MaintenanceNotification = _MaintNotifLongText.MaintenanceNotification
// association [0..1] to I_TechnicalObject as _TechnicalObject on _TechnicalObject.TechnicalObject = $projection.TechnicalObject
// and _TechnicalObject.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
// association [0..1] to I_TechObjIsEquipOrFuncnlLoc as _TechObjIsEquipOrFuncnlLoc on _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
// association [0..1] to I_PMNotificationPriority as _PMNotificationPriority on $projection.MaintPriority = _PMNotificationPriority.MaintPriority
// and $projection.MaintPriorityType = _PMNotificationPriority.MaintPriorityType
association [1..*] to I_StatusObjectStatus as _StatusObjectStatus on $projection.MaintNotifInternalID = _StatusObjectStatus.StatusObject
association [0..1] to I_MaintenanceJobOverallStatus as _OverallJobStatus on $projection.MaintNotifInternalID = _OverallJobStatus.MaintenanceJobInternalID
-- Extensions, do not expose as association:
association [0..1] to E_PMNotifMaintenanceData as _NotifMaintenanceDataExtension on $projection.MaintenanceNotification = _NotifMaintenanceDataExtension.MaintenanceNotification
{
//@ObjectModel.text.element: [ 'NotificationText' ]
key I_MaintNotificationTechObj.MaintenanceNotification,
@ObjectModel.foreignKey.association: '_PMNotificationType'
I_MaintNotificationTechObj.NotificationType,
I_MaintNotificationTechObj.MaintNotifInternalID,
I_MaintNotificationTechObj.MaintenanceOrder,
I_MaintNotificationTechObj._MaintenanceOrder.MaintenanceOrderDesc,
// @ObjectModel.foreignKey.association: '_PMNotificationPriority'
@ObjectModel.text.element: [ 'MaintPriorityDesc' ]
I_MaintNotificationTechObj.MaintPriority,
// @ObjectModel.foreignKey.association: '_PMNotificationPriority'
I_MaintNotificationTechObj.MaintPriorityType,
I_MaintNotificationTechObj._PMNotificationPriority.MaintPriorityColorCode,
I_MaintNotificationTechObj._PMNotificationPriority._Text[1: Language = $session.system_language ].MaintPriorityDesc,
// @ObjectModel.foreignKey.association: '_TechnicalObject'
I_MaintNotificationTechObj.TechnicalObject,
// @ObjectModel.foreignKey.association: '_TechnicalObject'
@ObjectModel.text.element: [ 'TechnicalObjectDescription' ]
cast( case when I_MaintNotificationTechObj._TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' then // Functional Location
I_MaintNotificationTechObj._TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName
else I_MaintNotificationTechObj._TechnicalObject.TechnicalObject end as eams_tech_obj_alpha_conv )
as TechnicalObjectLabel,
I_MaintNotificationTechObj._TechObjIsEquipOrFuncnlLoc._Text[1: Language = $session.system_language ].TechObjIsEquipOrFuncnlLocDesc,
@ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc,
I_MaintNotificationTechObj.Equipment,
I_MaintNotificationTechObj._FunctionalLocation.FunctionalLocation,
I_MaintNotificationTechObj._TechnicalObject._TechnicalObjectText[1: Language = $session.system_language ].TechnicalObjectDescription,
I_MaintNotificationTechObj.PersonResponsible,
I_MaintNotificationTechObj.CreatedByUser,
I_MaintNotificationTechObj.CreationDateTime,
I_MaintNotificationTechObj.CreationDate,
@Semantics.text: true
I_MaintNotificationTechObj.NotificationText,
I_MaintNotificationTechObj.NotificationCreationDate,
@Semantics.time: true
I_MaintNotificationTechObj.NotificationCreationTime,
I_MaintNotificationTechObj.NotificationTimeZone,
@ObjectModel.foreignKey.association: '_MalfunctionEffect'
I_MaintNotificationTechObj.MalfunctionEffect,
I_MaintNotificationTechObj.MaintNotificationCatalog,
I_MaintNotificationTechObj.MaintNotificationCode,
I_MaintNotificationTechObj._PMNotifMaintenanceData.LocationDescription,
@ObjectModel.text.element: [ 'ReporterFullName' ]
I_MaintNotificationTechObj.ReportedByUser,
I_MaintNotificationTechObj.ReporterFullName,
I_MaintNotificationTechObj.MalfunctionStartDate,
I_MaintNotificationTechObj.MalfunctionStartTime,
I_MaintNotificationTechObj.MalfunctionEndDate,
I_MaintNotificationTechObj.MalfunctionEndTime,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment.AssetLocation,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment._Location.LocationName,
I_MaintNotificationTechObj._MaintNotifLongText.MaintNotificationLongText,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenanceObjectIsDown,
@ObjectModel.text.element: [ 'EAMOverallStatusDescription' ]
cast( case when _StatusObjectStatus[ StatusCode = 'I3350' and StatusIsInactive = '' ].StatusObject is not null then 'F2023' else '' end as pm_source_appl) as MaintNotifSourceApplication,
_OverallJobStatus.EAMOverallObjectStatus,
_OverallJobStatus._OverallStatus._Text[Language = $session.system_language].EAMOverallStatusDescription,
_OverallJobStatus.EAMOverallObjectStatusProfile,
I_MaintNotificationTechObj.NotifProcessingPhase,
cast('' as objky) as MaintWorkRequestAttchKey, // transient field for attachment ID (temp key)
I_MaintNotificationTechObj._TechnicalObject.MaintenancePlannerGroup,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment.PlantSection,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment.BusinessArea,
I_MaintNotificationTechObj._TechnicalObject.CatalogProfile,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment.CompanyCode,
cast( I_MaintNotificationTechObj._TechnicalObject._WorkCenter.WorkCenter as gewrk ) as MainWorkCenter,
I_MaintNotificationTechObj._TechnicalObject._LocationAccountAssignment.MaintenancePlant,
I_MaintNotificationTechObj._TechnicalObject.TechnicalObjectCategory,
I_MaintNotificationTechObj._TechnicalObject.TechnicalObjectType,
// _TechnicalObject,
_TechObjIsEquipOrFuncnlLoc,
_PMNotificationPriority,
_StatusObjectStatus,
_OverallJobStatus,
_PMNotificationType,
_MalfunctionEffect
// I_MaintNotificationTechObj._PMNotificationType,
// I_MaintNotificationTechObj._MalfunctionEffect,
//I_MaintNotificationTechObj._PMNotificationPriority,
} where CreatedByUser = $session.user
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_EAMOVERALLSTATUS",
"I_EAMOVERALLSTATUSTEXT",
"I_FUNCTIONALLOCATION",
"I_FUNCTIONALLOCATIONLABEL",
"I_LOCATION",
"I_LOCATIONACCOUNTASSIGNMENT",
"I_MAINTENANCEJOBOVERALLSTATUS",
"I_MAINTENANCEORDER",
"I_MAINTNOTIFICATIONTECHOBJ",
"I_MAINTNOTIFLONGTEXT",
"I_PMNOTIFICATIONPRIORITY",
"I_PMNOTIFICATIONPRIORITYTEXT",
"I_PMNOTIFMAINTENANCEDATA",
"I_STATUSOBJECTSTATUS",
"I_TECHNICALOBJECT",
"I_TECHNICALOBJECTTEXT",
"I_TECHOBJISEQUIPORFUNCNLLOC",
"I_TECHOBJISEQUIPORFUNCNLLOCT",
"I_WORKCENTER"
],
"ASSOCIATED":
[
"I_MAINTENANCEJOBOVERALLSTATUS",
"I_MALFUNCTIONEFFECT",
"I_PMNOTIFICATIONPRIORITY",
"I_PMNOTIFICATIONTYPE",
"I_STATUSOBJECTSTATUS",
"I_TECHOBJISEQUIPORFUNCNLLOC"
],
"BASE":
[
"I_MAINTNOTIFICATIONTECHOBJ"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/