@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Maintenance Notification Tech Object'
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@ObjectModel.transactionalProcessingEnabled: true
@AccessControl.privilegedAssociations: ['_ActiveSystemStatus', '_TechnicalObjectCategoryT', '_TaskListDesc' ]
@VDM.viewType: #TRANSACTIONAL
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
@ObjectModel.semanticKey: ['MaintenanceNotification']
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.sapObjectNodeType.name: 'MaintenanceNotification'
define root view entity R_MaintenanceNotificationTP
as select from I_MaintNotificationTechObj
// Add Child Composition
composition [0..*] of R_MaintNotificationItemTP as _Item
composition [0..*] of R_MaintNotifEventPrioznTP as _EventPrio
composition [0..*] of R_MaintNotificationPartnerTP as _Partner
composition [0..*] of R_MaintNotificationTaskTP as _Task
composition [0..*] of R_MaintNotificationActivityTP as _Activity
association [0..1] to I_NumberOfOpnNotifByTechObj as _NumberOfOpnNotifByTechObj on _NumberOfOpnNotifByTechObj.TechnicalObject = $projection.TechnicalObject
and _NumberOfOpnNotifByTechObj.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
association [0..*] to I_TechnicalObjectCategoryT as _TechnicalObjectCategoryT on _TechnicalObjectCategoryT.TechnicalObjectCategory = $projection.TechnicalObjectCategory
and _TechnicalObjectCategoryT.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
association [0..*] to C_TechObjCstmHierVH as _TechObjHier on _TechObjHier.TechnicalObject = $projection.TechnicalObject
and _TechObjHier.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
and _TechObjHier.ValidityEndDate = $projection.MalfunctionStartDate
and _TechObjHier.ValidityEndTime = $projection.MalfunctionStartTime
and _TechObjHier.TechnicalObjectLabel = $projection.TechnicalObjectLabel
association [0..1] to I_PMContactCardUser as _CreatedByUser on _CreatedByUser.UserID = $projection.CreatedByUser
association [0..1] to I_Plant as _MaintPlant on _MaintPlant.Plant = $projection.MaintenancePlanningPlant
association [0..1] to I_MaintenancePlannerGroup as _MaintPlantGroup on _MaintPlantGroup.MaintenancePlannerGroup = $projection.MaintenancePlannerGroup
and _MaintPlantGroup.MaintenancePlanningPlant = $projection.MaintenancePlanningPlant
association [0..1] to I_GenericPriorityData as _GenericPriorityData on _GenericPriorityData.GenericPriorityType = $projection.MaintPriorityType
and _GenericPriorityData.PriorityCode = $projection.MaintPriority
association [0..*] to I_StatusObjectActiveStatus as _ActiveSystemStatus on _ActiveSystemStatus.StatusObject = $projection.MaintNotifInternalID
and _ActiveSystemStatus.IsUserStatus = ''
association [0..*] to I_StatusObjectActiveStatus as _SystemStatus on _SystemStatus.StatusObject = $projection.MaintNotifInternalID
and _SystemStatus.IsUserStatus = ''
and (
_SystemStatus.StatusCode = 'I052R'
or _SystemStatus.StatusCode = 'I0527'
)
// association [0..*] to I_StatusObjectStatusBasic as _SystemStatus on _SystemStatus.StatusObject = $projection.MaintNotifInternalID
// with default filter _SystemStatus.StatusIsInactive is initial
// and (
// _SystemStatus.StatusCode = 'I052R'
// or _SystemStatus.StatusCode = 'I0527'
// )
association [0..1] to I_TextObjectPlainLongText as _TextObjectPlainLongText on _TextObjectPlainLongText.TextObjectKey = I_MaintNotificationTechObj.MaintenanceNotification
and _TextObjectPlainLongText.TextObjectType = 'LTXT'
and _TextObjectPlainLongText.TextObjectCategory = 'QMEL'
and _TextObjectPlainLongText.Language = $session.system_language
association [0..*] to I_MaintNotifRejectionReasonTxt as _MaintNotifRejectionReasonTxt on _MaintNotifRejectionReasonTxt.MaintNotifRejectionReasonCode = $projection.maintnotifrejectionreasoncode
association [0..1] to I_TechObjWorkReqQuickVw as _TechnicalObjQuickVw on _TechnicalObjQuickVw.TechnicalObject = $projection.TechnicalObject
and _TechnicalObjQuickVw.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
and _TechnicalObjQuickVw.TechnicalObjectLabel = $projection.TechnicalObjectLabel
association [0..*] to I_FunctionalLocationText as _SupFunctionalLocationText on _SupFunctionalLocationText.FunctionalLocation = $projection.FunctionalLocation
// Association for Task List Description
association [0..1] to I_MaintenanceTaskList as _TaskListDesc on _TaskListDesc.TaskListType = $projection.maintenancetasklisttype
and _TaskListDesc.TaskListGroup = $projection.tasklistgroup
and _TaskListDesc.TaskListGroupCounter = $projection.tasklistgroupcounter
association [0..*] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsEquipOrFuncnlLocDesc on $projection.TechObjIsEquipOrFuncnlLoc = _TechObjIsEquipOrFuncnlLocDesc.TechObjIsEquipOrFuncnlLoc
association [0..*] to I_TechnicalObjectText as _TechnicalObjectText on _TechnicalObjectText.TechnicalObject = $projection.TechnicalObject
and _TechnicalObjectText.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
association [0..1] to I_EAMProcessSubPhase as _SubPhase on $projection.maintnotifprocesssubphasecode = _SubPhase.EAMProcessSubPhaseCode
association [0..1] to I_EAMProcessPhase as _Phase on $projection.maintnotifprocessphasecode = _Phase.EAMProcessPhaseCode
association [0..*] to I_MaintNotifDetectionCodeText as _MaintNotifDetectCodeTxt on $projection.maintnotifdetectioncode = _MaintNotifDetectCodeTxt.MaintNotifDetectionCode
association [0..*] to I_MaintNotifDetectCodeGroupTxt as _MaintNotifDetectCodeGroupTxt on _MaintNotifDetectCodeGroupTxt.MaintNotifDetectionCodeGroup = $projection.maintnotifdetectioncodegroup
association [0..1] to I_MaintNotifProcgContextText as _MaintNotifProcgContextTxt on _MaintNotifProcgContextTxt.MaintNotifProcessingContext = $projection.maintnotifprocessingcontext
and _MaintNotifProcgContextTxt.Language = $session.system_language
association [0..1] to I_OrderType as _MaintOrderType on _MaintOrderType.OrderType = $projection.MaintenanceOrderType
association [0..1] to I_FunctionalLocationLabel as _SupFunctionalLocationLabel on $projection.SuperiorFunctionalLocation = _SupFunctionalLocationLabel.FunctionalLocation
association [0..*] to I_FunctionalLocationText as _SuperiorFuncLocText on $projection.SuperiorFunctionalLocation = _SuperiorFuncLocText.FunctionalLocation
association [0..1] to I_Plant as _MaintenanceWorkCenterPlant on $projection.MaintenanceWorkCenterPlant = _MaintenanceWorkCenterPlant.Plant
association [0..1] to I_UserDescription as _CreatedByUserSimpl on _CreatedByUserSimpl.UserID = $projection.CreatedByUser
association [0..*] to I_ABCIndicatorText as _ABCIndicatorText on $projection.ABCIndicator = _ABCIndicatorText.ABCIndicator
-- Extensions, do not expose as association:
association [0..1] to E_PMNotifMaintenanceData as _NotifMaintenanceDataExtension on _NotifMaintenanceDataExtension.MaintenanceNotification = $projection.MaintenanceNotification
{
key I_MaintNotificationTechObj.MaintenanceNotification,
I_MaintNotificationTechObj.MaintNotifInternalID,
@Semantics.text: true
I_MaintNotificationTechObj.NotificationText,
I_MaintNotificationTechObj.MaintPriority,
I_MaintNotificationTechObj.MaintPriorityType,
cast( _GenericPriorityData.GenericPriorityColorCode as abap.int1) as GenericPriorityColorCode,
@ObjectModel.text.association: '_PMNotificationType'
I_MaintNotificationTechObj.NotificationType, //Notification Type
I_MaintNotificationTechObj.NotifProcessingPhase, //Processing Phase
@ObjectModel.text.association: '_CreatedByUser'
I_MaintNotificationTechObj.CreatedByUser, //Created By User
I_MaintNotificationTechObj.LastChangedByUser, //Last Changed by user
I_MaintNotificationTechObj.CreationDate, //Creation Date
I_MaintNotificationTechObj.LastChangeTime, // Last Change Time
I_MaintNotificationTechObj.LastChangeDate, // Last Change Date
@Semantics.systemDateTime.lastChangedAt: true
I_MaintNotificationTechObj.LastChangeDateTime, // Last Change Date Time for ETAG
I_MaintNotificationTechObj.CreationTime, //Creation Time
cast (dats_tims_to_tstmp( CreationDate, CreationTime, abap_system_timezone( $session.client,'NULL' ) , $session.client, 'NULL') as tzntstmps preserving type ) as CreationDateTime, //Timestamp
@ObjectModel.text.element: [ 'ReporterFullName' ]
I_MaintNotificationTechObj.ReportedByUser, //Reported By user
I_MaintNotificationTechObj.ReporterFullName, // Reported Full Name
I_MaintNotificationTechObj.PersonResponsible, //Person Responsible
@ObjectModel.foreignKey.association: '_MalfunctionEffect'
I_MaintNotificationTechObj.MalfunctionEffect, //Malfunction Effect
I_MaintNotificationTechObj.MalfunctionStartDate, //Malfunction Start Date
I_MaintNotificationTechObj.MalfunctionStartTime, //Malfunction Start Time
cast (dats_tims_to_tstmp( MalfunctionStartDate, MalfunctionStartTime, I_MaintNotificationTechObj.NotificationTimeZone, $session.client, 'NULL') as tzntstmps preserving type ) as MalfunctionStartDateTime,
I_MaintNotificationTechObj.MalfunctionEndDate, //Malfunction End Date
I_MaintNotificationTechObj.MalfunctionEndTime, //Malfunction End Time
cast (dats_tims_to_tstmp( MalfunctionEndDate, MalfunctionEndTime, I_MaintNotificationTechObj.NotificationTimeZone, $session.client, 'NULL') as tzntstmps preserving type ) as MalfunctionEndDateTime,
I_MaintNotificationTechObj.MaintNotificationCatalog, //Notification Catalog
I_MaintNotificationTechObj.MaintNotificationCode, //Notification Code
I_MaintNotificationTechObj.MaintNotificationCodeGroup, //Code Group
I_MaintNotificationTechObj.CatalogProfile, //Catalog Profile
I_MaintNotificationTechObj.NotificationCreationDate, // Notification Creation Date
@Semantics.time: true
I_MaintNotificationTechObj.NotificationCreationTime, // Notif Creation time
cast (dats_tims_to_tstmp( NotificationCreationDate, NotificationCreationTime, I_MaintNotificationTechObj.NotificationTimeZone , $session.client, 'NULL') as tzntstmps preserving type ) as NotificationCreationDateTime,
I_MaintNotificationTechObj.NotificationTimeZone, // Time Zone
//cast (dats_tims_to_tstmp( NotificationReferenceDate, NotificationReferenceTime, I_MaintNotificationTechObj.NotificationTimeZone, $session.client, 'NULL') as tzntstmps preserving type ) as NotificationReferenceDateTime,
I_MaintNotificationTechObj.RequiredStartDate, // Work Request Start Date
@Semantics.time: true
I_MaintNotificationTechObj.RequiredStartTime, // Work Request Start Time
cast (dats_tims_to_tstmp( RequiredStartDate, RequiredStartTime, I_MaintNotificationTechObj.NotificationTimeZone , $session.client, 'NULL') as tzntstmps preserving type ) as MaintNotifRqdStartDateTime,
I_MaintNotificationTechObj.RequiredEndDate, // Work Request End Date
@Semantics.time: true
I_MaintNotificationTechObj.RequiredEndTime, // Work Request End Time
cast (dats_tims_to_tstmp( RequiredEndDate, RequiredEndTime,I_MaintNotificationTechObj.NotificationTimeZone, $session.client, 'NULL') as tzntstmps preserving type ) as MaintNotifRqdEndDateTime,
I_MaintNotificationTechObj.LatestAcceptableCompletionDate as LatestAcceptableCompletionDate, //LACD Date
I_MaintNotificationTechObj.MaintenanceObjectIsDown as MaintenanceObjectIsDown, //Breakdown
// _TextObjectPlainLongText.PlainLongText as MaintNotificationLongText, //Long Text
-- Performance Changes
// I_MaintNotificationTechObj._MaintNotifLongText.TextObjectCategory as TextObjectCategory,
// I_MaintNotificationTechObj._MaintNotifLongText.TextObjectType as TextObjectType,
cast( 'QMEL' as tdobject ) as TextObjectCategory,
cast( 'LTXT' as tdid preserving type ) as TextObjectType,
// I_MaintNotificationTechObj._MaintNotifLongText.MaintNotifLongTextForEdit as MaintNotifLongTextForEdit,
cast('' as eams_ltext ) as MaintNotifLongTextForEdit,
// Technical Object Details
@ObjectModel: { foreignKey.association: '_TechnicalObjQuickVw'}
I_MaintNotificationTechObj.TechnicalObject, //Technical Object
@ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
// @ObjectModel: {[ foreignKey.association: '_TechnicalObjQuickVw',
// foreignKey.association: '_TechObjIsEquipOrFuncnlLoc']}
I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc, //Technical Object is Equi or Floc
// @ObjectModel: { foreignKey.association: '_TechnicalObjQuickVw'}
-- Performance Changes
// cast( case when I_MaintNotificationTechObj._TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' then // Functional Location
// I_MaintNotificationTechObj._TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName
// when I_MaintNotificationTechObj._TechnicalObject.TechObjIsEquipOrFuncnlLoc != 'EAMS_FL'then
// I_MaintNotificationTechObj._TechnicalObject.TechnicalObject end as eams_tech_obj_alpha_conv ) as TechnicalObjectLabel, //Technical Object Label
cast ( case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then ltrim( I_MaintNotificationTechObj.Equipment , '0' )
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then _FunctionalLocationLabel.FunctionalLocationLabelName end as eams_tec_obj preserving type) as TechnicalObjectLabel, //Technical Object Label
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlanningPlant as MaintenancePlanningPlant, //Planning Plant
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlannerGroup as MaintenancePlannerGroup, //PLanner Group
-- Performance Changes
// I_MaintNotificationTechObj._TechnicalObject.AssetManufacturerName as AssetManufacturerName, //Manufacturer
case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then I_MaintNotificationTechObj._Equipment.AssetManufacturerName
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_MaintNotificationTechObj._FunctionalLocation.AssetManufacturerName end as AssetManufacturerName,
I_MaintNotificationTechObj._LocationAccountAssignment.PlantSection as PlantSection, //Plant Section
I_MaintNotificationTechObj._LocationAccountAssignment.ABCIndicator as ABCIndicator, //ABC Indicator
-- Performance Changes
// cast( case when I_MaintNotificationTechObj._TechnicalObject.SuperiorObjIsEquipOrFuncnlLoc = 'EAMS_EQUI' then
// I_MaintNotificationTechObj._TechnicalObject.SuperiorTechnicalObject
// when I_MaintNotificationTechObj._TechnicalObject.SuperiorObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
// then I_MaintNotificationTechObj._TechnicalObject._SuperFunctionalLocationLabel.FunctionalLocationLabelName
// end as eams_tech_obj_alpha_conv) as SuperiorTechnicalObjectLabel,
// cast(
// case
// when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
// then case
// when I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment != ''
// then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment
// when I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment = ''
// then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName end
// when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
// then I_MaintNotificationTechObj._FunctionalLocation._SuperiorFunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName end as eams_tech_obj_alpha_conv preserving type) as SuperiorTechnicalObjectLabel,
cast(
case
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then case
when I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment != ''
then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment
when I_MaintNotificationTechObj._Equipment._CurrentTimeSegment.SuperordinateEquipment = ''
then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName end
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_MaintNotificationTechObj._FunctionalLocation._SuperiorFunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName end as eams_tech_obj_alpha_conv) as SuperiorTechnicalObjectLabel,
-- Performance Changesxx
// I_MaintNotificationTechObj._TechnicalObject.ManufacturerPartTypeName as ManufacturerPartTypeName, //Model
case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then I_MaintNotificationTechObj._Equipment.ManufacturerPartTypeName
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_MaintNotificationTechObj._FunctionalLocation.ManufacturerPartTypeName end as ManufacturerPartTypeName,
cast(I_MaintNotificationTechObj.FunctionalLocation as eams_ui_oid_name preserving type ) as FunctionalLocation, // Functional Location
-- Performance Changes
// I_MaintNotificationTechObj._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName,
I_MaintNotificationTechObj._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName as FunctionalLocationLabelName,
I_MaintNotificationTechObj._LocationAccountAssignment.AssetLocation as AssetLocation, // Location
I_MaintNotificationTechObj._LocationAccountAssignment._Location.LocationName as LocationName, // Location Name
-- Performance Changes
// I_MaintNotificationTechObj._TechnicalObject.TechnicalObjectCategory as TechnicalObjectCategory, // Technical Object Category
// I_MaintNotificationTechObj._TechnicalObject.TechnicalObjectType as TechnicalObjectType, // Technical Object Type
cast( case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then I_MaintNotificationTechObj._Equipment.EquipmentCategory
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_MaintNotificationTechObj._FunctionalLocation.FunctionalLocationCategory end as eams_tec_obj_cat preserving type ) as TechnicalObjectCategory,
cast( case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
then I_MaintNotificationTechObj._Equipment.TechnicalObjectType
when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_MaintNotificationTechObj._FunctionalLocation.TechnicalObjectType end as eqart preserving type) as TechnicalObjectType,
I_MaintNotificationTechObj._LocationAccountAssignment.MaintenancePlant as MaintenancePlant, //Maintenance Plant
// Work Center Details
I_MaintNotificationTechObj.WorkCenterInternalID, //Work Center ID
// I_MaintNotificationTechObj.MaintenanceWorkCenterPlant, // Maintenance Work Center Plant
I_MaintNotificationTechObj._LocationAccountAssignment._WorkCenter.Plant as MaintenanceWorkCenterPlant,
I_MaintNotificationTechObj._MainWorkCenter.WorkCenter as MainWorkCenter, // Maint Work Center From Notification
-- Performance Changes
// cast( I_MaintNotificationTechObj._TechnicalObject._WorkCenter.WorkCenter as gewrk ) as MaintenanceWorkCenter, //Main Work Center Of Tech Obj
// cast( case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
// then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment._LocationAccountAssignment._WorkCenter.WorkCenter
// when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
// then I_MaintNotificationTechObj._FunctionalLocation._LocationAccountAssignment._WorkCenter.WorkCenter end as gewrk ) as MaintenanceWorkCenter,
I_MaintNotificationTechObj._LocationAccountAssignment._WorkCenter.WorkCenter as MaintenanceWorkCenter,
I_MaintNotificationTechObj.WorkCenterTypeCode, //Work Center Type Code
I_MaintNotificationTechObj._MainWorkCenter.Plant as MainWorkCenterPlant, // Maint Work Center Plant From Notification
// I_MaintNotificationTechObj.MaintenanceWorkCenterPlant as MainWorkCenterPlant,
// cast( case when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
// then I_MaintNotificationTechObj._Equipment._CurrentTimeSegment._LocationAccountAssignment._WorkCenter.Plant
// when I_MaintNotificationTechObj.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
// then I_MaintNotificationTechObj._FunctionalLocation._LocationAccountAssignment._WorkCenter.Plant end as werks_d ) as MaintenanceWorkCenterPlant,
//Generic Details
I_MaintNotificationTechObj.LocationDescription as LocationDescription, // Location Description
_NumberOfOpnNotifByTechObj.NmbrOfOpenMaintNotifications as NmbrOfOpenMaintNotifications,
// Performance Issue with Number of Orders(TechOnj Union) _NumberOfOpnOrderByTechObj.NumberOfOrders