@AbapCatalog.sqlViewName: 'CTOMAINTNOTIF'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Maintenance Notifications for Technical Object'
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@VDM.viewType: #CONSUMPTION
@UI.presentationVariant.sortOrder: [
{ by: 'CreationDate', direction: #DESC },
{ by: 'CreationTime', direction: #DESC }
]
define view C_TechObjMaintNotification
as select from I_MaintenanceNotification as I_MaintNotificationTechObj
association [0..1] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsEquipOrFuncnlLocT on _TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
and _TechObjIsEquipOrFuncnlLocT.Language = $session.system_language
{
@Consumption.semanticObject: 'MaintenanceNotification'
@UI: { lineItem: {position: 10, importance: #HIGH}}
@ObjectModel.text.element: [ 'NotificationText' ]
@UI.textArrangement: #TEXT_FIRST
key I_MaintNotificationTechObj.MaintenanceNotification,
@Semantics.text: true
I_MaintNotificationTechObj.NotificationText,
@UI: {lineItem: {position: 20, importance: #HIGH }}
@ObjectModel.text.element: [ 'NotificationTypeName' ]
@UI.textArrangement: #TEXT_FIRST
I_MaintNotificationTechObj._PMNotificationType.NotificationType,
@Semantics.text: true
@EndUserText.label: 'Notification Type Text'
I_MaintNotificationTechObj._PMNotificationType._Text[1:Language=$session.system_language].NotificationTypeName,
@ObjectModel.text.element: 'TechnicalObjectDescription'
@UI.textArrangement: #TEXT_FIRST
cast( _PMNotifMaintenanceData.Equipment as eams_tech_obj_conv ) as TechnicalObjectLabel,
@EndUserText.label: 'Technical Object Description'
cast( _PMNotifMaintenanceData._Equipment._EquipmentText[ 1: Language = $session.system_language ].EquipmentName as eams_tec_obj_des ) as TechnicalObjectDescription,
@ObjectModel.text.element: 'TechObjIsEquipOrFuncnlLocDesc'
@EndUserText.label: 'Technical Object Type'
@UI.textArrangement: #TEXT_ONLY
@UI.hidden
@Environment.sql.passValue: true
cast ( 'EAMS_EQUI' as eams_tec_obj_type_value) as TechObjIsEquipOrFuncnlLoc,
@Semantics.text: true
@EndUserText.label: 'Technical Object Type Description'
_TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLocDesc,
@UI: { lineItem: {position: 60, importance: #HIGH }}
@ObjectModel.text.element: [ 'MaintPriorityDesc' ]
@UI.textArrangement: #TEXT_FIRST
I_MaintNotificationTechObj.MaintPriority,
@Semantics.text: true
I_MaintNotificationTechObj._PMNotificationPriority._Text[1:Language=$session.system_language].MaintPriorityDesc,
@ObjectModel: {
virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_EAM_MNTNTF_STS_EXIT'
}
@Semantics.text: true
@UI: { lineItem: {position: 30, importance: #HIGH } }
@EndUserText.label: 'System Status'
cast ('' as vdm_j_system_status_concat_t) as ConcatenatedActiveSystStsName,
@ObjectModel.text.element: 'MaintenancePlanningPlantName'
@UI.textArrangement: #TEXT_FIRST
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlanningPlant,
@Semantics.text: true
I_MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanningPlant.PlantName as MaintenancePlanningPlantName,
@ObjectModel.text.element: 'MaintenancePlannerGroupName'
@EndUserText.label: 'Maintenance Planner Group'
@UI.textArrangement: #TEXT_FIRST
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlannerGroup,
@Semantics.text: true
I_MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlannerGroup.MaintenancePlannerGroupName,
@ObjectModel.text.element: 'ABCIndicatorDesc'
@UI.textArrangement: #TEXT_FIRST
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ABCIndicator,
@Semantics.text: true
@EndUserText.label: 'ABC Indicator Text'
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._ABCIndicator._Text[1:Language = $session.system_language].ABCIndicatorDesc,
@UI: { lineItem: {position: 40, importance: #HIGH } }
@Semantics.systemDate.createdAt: true
I_MaintNotificationTechObj.CreationDate,
@UI: { lineItem: {position: 50, importance: #HIGH } }
I_MaintNotificationTechObj.CreationTime,
@EndUserText.label: 'User Status'
@ObjectModel: {
virtualElement: true,
virtualElementCalculatedBy: 'ABAP:CL_EAM_MNTNTF_STS_EXIT'
}
cast ('' as vdm_j_user_status_concat_t) as ConcatenatedActiveUserStsName,
I_MaintNotificationTechObj.CreatedByUser,
@ObjectModel.text.element: 'AssemblyName'
I_MaintNotificationTechObj._PMNotifMaintenanceData.Assembly,
@Semantics.text: true
@EndUserText.label: 'Assembly Name'
I_MaintNotificationTechObj._PMNotifMaintenanceData._Assembly._Text[1:Language=$session.system_language].MaterialName as AssemblyName,
// I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenanceObjectIsDown,
@Semantics.businessDate.at: true
@EndUserText.label: 'Malfunction Start On'
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartDate,
@EndUserText.label: 'Malfunction Start At'
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartTime,
@Semantics.businessDate.at: true
@EndUserText.label: 'Malfunction End On'
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndDate,
@EndUserText.label: 'Malfunction End At'
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndTime,
@ObjectModel.text.element: 'MaintenanceWorkCenterText'
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter.WorkCenter as MaintenanceWorkCenter,
@Semantics.text: true
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter._Text[1:Language=$session.system_language].WorkCenterText as MaintenanceWorkCenterText,
@Semantics.businessDate.at: true
@EndUserText.label: 'Required Start On'
I_MaintNotificationTechObj.RequiredStartDate,
@EndUserText.label: 'Required Start At'
I_MaintNotificationTechObj.RequiredStartTime,
@Semantics.businessDate.at: true
@EndUserText.label: 'Required End On'
I_MaintNotificationTechObj.RequiredEndDate,
@EndUserText.label: 'Required End At'
I_MaintNotificationTechObj.RequiredEndTime,
@ObjectModel.text.element: 'MaintenanceWorkCenterPlantName'
I_MaintNotificationTechObj.MaintenanceWorkCenterPlant,
@Semantics.text: true
@EndUserText.label: 'Maintenance Work Center Plant Name'
I_MaintNotificationTechObj._MaintenanceWorkCenterPlant.PlantName as MaintenanceWorkCenterPlantName,
@ObjectModel.text.element: 'AssetLocationName'
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetLocation,
@Semantics.text: true
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._Location.LocationName as AssetLocationName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetRoom,
@ObjectModel.text.element: 'MaintenancePlantName'
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintenancePlant,
@Semantics.text: true
@EndUserText.label: 'Maintenance Plant Name'
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._MaintenancePlant.PlantName as MaintenancePlantName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.PlantSection,
// Technical fields
@UI.hidden: true
I_MaintNotificationTechObj.MaintPriorityType,
@UI.hidden: true
cast( _PMNotifMaintenanceData.Equipment as eams_tec_obj ) as TechnicalObject,
@UI.hidden: true
_PMNotifMaintenanceData._Equipment.AuthorizationGroup,
@UI.hidden: true
I_MaintNotificationTechObj.MaintNotifInternalID,
@UI.hidden: true
I_MaintNotificationTechObj._MaintenanceOrder.MaintenanceOrderType
}
where
_PMNotifMaintenanceData.Equipment <> ''
union all select from I_MaintenanceNotification as I_MaintNotificationTechObj
association [0..1] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsEquipOrFuncnlLocT on _TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
and _TechObjIsEquipOrFuncnlLocT.Language = $session.system_language
{
key I_MaintNotificationTechObj.MaintenanceNotification,
I_MaintNotificationTechObj.NotificationText,
I_MaintNotificationTechObj._PMNotificationType.NotificationType,
I_MaintNotificationTechObj._PMNotificationType._Text[1:Language=$session.system_language].NotificationTypeName,
cast( _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName as eams_tech_obj_conv ) as TechnicalObjectLabel,
cast( _PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[ 1: Language = $session.system_language ].FunctionalLocationName as eams_tec_obj_des ) as TechnicalObjectDescription,
cast ( 'EAMS_FL' as eams_tec_obj_type_value) as TechObjIsEquipOrFuncnlLoc,
_TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLocDesc,
I_MaintNotificationTechObj.MaintPriority,
I_MaintNotificationTechObj._PMNotificationPriority._Text[1:Language=$session.system_language].MaintPriorityDesc,
cast ('' as vdm_j_system_status_concat_t) as ConcatenatedActiveSystStsName,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlanningPlant,
I_MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlanningPlant.PlantName as MaintenancePlanningPlantName,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MaintenancePlannerGroup,
I_MaintNotificationTechObj._PMNotifMaintenanceData._MaintenancePlannerGroup.MaintenancePlannerGroupName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.ABCIndicator,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._ABCIndicator._Text[1:Language = $session.system_language].ABCIndicatorDesc,
I_MaintNotificationTechObj.CreationDate,
I_MaintNotificationTechObj.CreationTime,
cast ('' as vdm_j_user_status_concat_t) as ConcatenatedActiveUserStsName,
I_MaintNotificationTechObj.CreatedByUser,
I_MaintNotificationTechObj._PMNotifMaintenanceData.Assembly,
I_MaintNotificationTechObj._PMNotifMaintenanceData._Assembly._Text[1:Language=$session.system_language].MaterialName as AssemblyName,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartDate,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionStartTime,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndDate,
I_MaintNotificationTechObj._PMNotifMaintenanceData.MalfunctionEndTime,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter.WorkCenter as MaintenanceWorkCenter,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._WorkCenter._Text[1:Language=$session.system_language].WorkCenterText as MaintenanceWorkCenterText,
I_MaintNotificationTechObj.RequiredStartDate,
I_MaintNotificationTechObj.RequiredStartTime,
I_MaintNotificationTechObj.RequiredEndDate,
I_MaintNotificationTechObj.RequiredEndTime,
I_MaintNotificationTechObj.MaintenanceWorkCenterPlant,
I_MaintNotificationTechObj._MaintenanceWorkCenterPlant.PlantName as MaintenanceWorkCenterPlantName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetLocation,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._Location.LocationName as AssetLocationName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.AssetRoom,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.MaintenancePlant,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment._MaintenancePlant.PlantName as MaintenancePlantName,
I_MaintNotificationTechObj._PMNotifMaintenanceData._LocationAccountAssignment.PlantSection,
// Technical fields
I_MaintNotificationTechObj.MaintPriorityType,
cast( _PMNotifMaintenanceData._LocationAccountAssignment.FunctionalLocation as eams_tec_obj ) as TechnicalObject,
_PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.AuthorizationGroup,
I_MaintNotificationTechObj.MaintNotifInternalID,
I_MaintNotificationTechObj._MaintenanceOrder.MaintenanceOrderType
}
where
_PMNotifMaintenanceData.Equipment = ''