C_MaintPlanCallObject
Maintenance Plan Call Objects
C_MaintPlanCallObject is a Consumption CDS View that provides data about "Maintenance Plan Call Objects" in SAP S/4HANA. It reads from 1 data source (I_MaintPlanCallObject) and exposes 56 fields with key fields MaintenancePlan, MaintenancePlanCallNumber, MaintenanceItem. It has 8 associations to related views. It is exposed through 2 OData services (UI_MAINTENANCE_PLAN, UI_MAINTENANCEITEM). It is used in 2 Fiori applications: Manage Maintenance Plans, Manage Maintenance Items.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| I_MaintPlanCallObject | I_MaintPlanCallObject | from |
Associations (8)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | I_OrderType | _MaintenanceOrderType | _MaintenanceOrderType.OrderType = $projection.MaintenanceOrderType |
| [1..1] | I_PMNotificationType | _PMNotificationType | _PMNotificationType.NotificationType = $projection.NotificationType |
| [0..1] | I_ServiceDocumentType | _ServiceDocumentType | _ServiceDocumentType.ServiceDocumentType = $projection.ServiceDocumentType |
| [0..1] | I_MaintCallSchedulingType | _SchedulingType | _SchedulingType.SchedulingType = $projection.SchedulingType |
| [0..1] | C_MaintOrderQuickVw | _MaintenanceOrderQuickView | _MaintenanceOrderQuickView.MaintenanceOrder = $projection.MaintenanceOrder |
| [0..1] | C_MaintenancePlanQuickVw | _MaintenancePlanQuickVw | _MaintenancePlanQuickVw.MaintenancePlan = $projection.MaintenancePlan |
| [0..1] | C_MaintNotificationQuickVw | _MaintNotificationQuickView | _MaintNotificationQuickView.MaintenanceNotification = $projection.MaintenanceNotification |
| [0..1] | I_MaintPlanMaintCall | _MaintPlanCallHistory | _MaintPlanCallHistory.MaintenancePlan = $projection.MaintenancePlan and _MaintPlanCallHistory.MaintenancePlanCallNumber = $projection.MaintenancePlanCallNumber |
Annotations (11)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | CMPLANCALLOBJ | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| EndUserText.label | Maintenance Plan Call Objects | view | |
| Metadata.allowExtensions | true | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| VDM.viewType | #CONSUMPTION | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #M | view |
OData Services (2)
| Service | Binding | Version | Contract | Release |
|---|---|---|---|---|
| UI_MAINTENANCE_PLAN | UI_MAINTENANCE_PLAN | V2 | C1 | NOT_RELEASED |
| UI_MAINTENANCEITEM | UI_MAINTENANCEITEM | V2 | C1 | NOT_RELEASED |
Fiori Apps (2)
| App ID | App Name | Type | Description |
|---|---|---|---|
| F5325 | Manage Maintenance Plans | Transactional | An application to Manage Maintenance Plans, provides and comprehensive maintenance plan view including general data, scheduling information, assigned Maintenance Items, as well as review Maintenance calls, create new maintenance plan, edit existing maintenance plan. |
| F5356 | Manage Maintenance Items | Transactional | An application to Manage Maintenance Items, provides and comprehensive Maintenance Item view, create new Maintenance Item, edit existing Maintenance Item. |
Manage Maintenance Plans
Business Role: Maintenance Planner
With the Manage Maintenance Plans app, you as a maintenance planner can view, create, change, schedule, activate, and delete maintenance plans.
Manage Maintenance Items
Business Role: Maintenance Planner
With the Manage Maintenance Items app, you as a maintenance planner can manage maintenance items. You can create maintenance items, decide how to evaluate final due date for a maintenance item, assign maintenance item to a maintenance plan, view details of a maintenance item, view status of an equipment or a functional location within a maintenance item, and so on.
Fields (56)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | MaintenancePlan | MaintenancePlan | ||
| KEY | MaintenancePlanCallNumber | MaintenancePlanCallNumber | Maintenance Plan Call Number | |
| KEY | MaintenanceItem | MaintenanceItem | ||
| MaintenanceItemDescription | _MaintenanceItem | MaintenanceItemDescription | ||
| MaintenancePlanDesc | _MaintenancePlan | MaintenancePlanDesc | ||
| MaintenanceOrder | MaintenanceOrder | |||
| MaintenanceOrderDesc | _MaintenanceOrder | MaintenanceOrderDesc | ||
| MaintenanceOrderType | _MaintenanceOrder | MaintenanceOrderType | ||
| OrderTypeName | ||||
| MaintOrdBasicStartDate | _MaintenanceOrder | MaintOrdBasicStartDate | Basic Start Date | |
| MaintOrdBasicStartTime | _MaintenanceOrder | MaintOrdBasicStartTime | Basic Start Time | |
| MaintOrdBasicEndDate | _MaintenanceOrder | MaintOrdBasicEndDate | ||
| MaintOrdBasicEndTime | _MaintenanceOrder | MaintOrdBasicEndTime | ||
| ScheduledBasicStartDate | _MaintenanceOrder | ScheduledBasicStartDate | Scheduled Start Date | |
| ScheduledBasicEndDate | _MaintenanceOrder | ScheduledBasicEndDate | Scheduled End Date | |
| MaintenanceNotification | MaintenanceNotification | |||
| MaintenanceNotificationText | _MaintenanceNotification | NotificationText | ||
| NotificationType | _MaintenanceNotification | NotificationType | ||
| NotificationTypeName | ||||
| RequiredStartDate | _MaintenanceNotification | RequiredStartDate | Required Start Date | |
| RequiredEndDate | _MaintenanceNotification | RequiredEndDate | ||
| MaintNotifRqdStartDateTime | Required Start Date Time | |||
| MaintNotifRqdEndDateTime | Required End Date Time | |||
| ServiceOrder | ServiceOrder | Service Order | ||
| ServiceOrderDescription | _ServiceOrder | ServiceDocumentDescription | ||
| ServiceDocumentType | _ServiceOrder | ServiceDocumentType | Service Order Type | |
| ServiceOrderTypeName | ||||
| RequestedServiceStartDateTime | _ServiceOrder | RequestedServiceStartDateTime | Service Start Date Time | |
| RequestedServiceEndDateTime | _ServiceOrder | RequestedServiceEndDateTime | ||
| SchedulingStatus | Scheduling Status | |||
| SchedulingStatusText | ||||
| PlannedStartDate | PlannedStartDate | |||
| ReleasedByUserName | ReleasedByUserName | User Scheduling | ||
| CompletionDate | CompletionDate | |||
| CompletionTime | CompletionTime | |||
| SchedulingType | _MaintPlanCallHistory | SchedulingType | Scheduling Type | |
| SchedulingTypeName | ||||
| MaintCallIsInvokedOnPlndDate | _MaintPlanCallHistory | MaintCallIsInvokedOnPlndDate | ||
| MaintenanceCallIsOutstanding | _MaintPlanCallHistory | MaintenanceCallIsOutstanding | ||
| MaintPlanStatusCriticality | ||||
| MaintPriorityelseendasMaintPriority | Priority | |||
| ServiceDocumentPriority | _ServiceOrder | ServiceDocumentPriority | ||
| _MaintenancePlan | _MaintenancePlan | |||
| _MaintenanceItem | _MaintenanceItem | |||
| _MaintenanceOrder | _MaintenanceOrder | |||
| _MaintenanceNotification | _MaintenanceNotification | |||
| _MaintPlanCallHistory | _MaintPlanCallHistory | |||
| _ServiceOrder | _ServiceOrder | |||
| _ServiceDocumentType | _ServiceDocumentType | |||
| _ServiceDocumentPriority | _ServiceOrder | _ServiceDocumentPriority | ||
| _MaintenanceOrderType | _MaintenanceOrderType | |||
| _PMNotificationType | _PMNotificationType | |||
| _SchedulingType | _SchedulingType | |||
| _MaintenancePlanQuickVw | _MaintenancePlanQuickVw | |||
| _MaintenanceOrderQuickView | _MaintenanceOrderQuickView | |||
| _MaintNotificationQuickView | _MaintNotificationQuickView |
@AbapCatalog.sqlViewName: 'CMPLANCALLOBJ'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.privilegedAssociations: [ '_MaintNotificationQuickView', '_MaintenancePlanQuickVw', '_MaintenanceOrderQuickView' ]
@EndUserText.label: 'Maintenance Plan Call Objects'
@Metadata.allowExtensions: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #CONSUMPTION
@ObjectModel: {
usageType: {
dataClass: #TRANSACTIONAL,
serviceQuality: #C,
sizeCategory: #M
}
}
define view C_MaintPlanCallObject
as select from I_MaintPlanCallObject
association [1..1] to I_OrderType as _MaintenanceOrderType on _MaintenanceOrderType.OrderType = $projection.MaintenanceOrderType
association [1..1] to I_PMNotificationType as _PMNotificationType on _PMNotificationType.NotificationType = $projection.NotificationType
association [0..1] to I_ServiceDocumentType as _ServiceDocumentType on _ServiceDocumentType.ServiceDocumentType = $projection.ServiceDocumentType
association [0..1] to I_MaintCallSchedulingType as _SchedulingType on _SchedulingType.SchedulingType = $projection.SchedulingType
association [0..1] to C_MaintOrderQuickVw as _MaintenanceOrderQuickView on _MaintenanceOrderQuickView.MaintenanceOrder = $projection.MaintenanceOrder
association [0..1] to C_MaintenancePlanQuickVw as _MaintenancePlanQuickVw on _MaintenancePlanQuickVw.MaintenancePlan = $projection.MaintenancePlan
association [0..1] to C_MaintNotificationQuickVw as _MaintNotificationQuickView on _MaintNotificationQuickView.MaintenanceNotification = $projection.MaintenanceNotification
association [0..1] to I_MaintPlanMaintCall as _MaintPlanCallHistory on _MaintPlanCallHistory.MaintenancePlan = $projection.MaintenancePlan
and _MaintPlanCallHistory.MaintenancePlanCallNumber = $projection.MaintenancePlanCallNumber
{
@Consumption.semanticObject: 'MaintenancePlan'
@ObjectModel: { foreignKey.association: '_MaintenancePlanQuickVw' }
@ObjectModel.text.element: ['MaintenancePlanDesc']
@UI.textArrangement: #TEXT_FIRST
key MaintenancePlan,
@EndUserText.label: 'Maintenance Plan Call Number'
key MaintenancePlanCallNumber,
@Consumption.semanticObject: 'MaintenanceItem'
@ObjectModel.text.element: ['MaintenanceItemDescription']
@UI.textArrangement: #TEXT_FIRST
key MaintenanceItem,
@UI.hidden: true
@Semantics.text: true
_MaintenanceItem.MaintenanceItemDescription as MaintenanceItemDescription,
@UI.hidden: true
@Semantics.text: true
_MaintenancePlan.MaintenancePlanDesc,
@Consumption.semanticObject: 'MaintenanceOrder'
@ObjectModel.text.element: [ 'MaintenanceOrderDesc' ]
@UI.textArrangement: #TEXT_FIRST
@ObjectModel: { foreignKey.association: '_MaintenanceOrderQuickView' }
MaintenanceOrder,
@UI.hidden: true
@Semantics.text: true
_MaintenanceOrder.MaintenanceOrderDesc as MaintenanceOrderDesc,
@ObjectModel.foreignKey.association: '_MaintenanceOrderType'
@ObjectModel.text.element: [ 'OrderTypeName' ]
@UI.textArrangement: #TEXT_FIRST
_MaintenanceOrder.MaintenanceOrderType as MaintenanceOrderType,
@UI.hidden: true
@Semantics.text: true
_MaintenanceItem._MaintenanceOrderType._Text[1:Language = $session.system_language ].OrderTypeName,
@EndUserText.label: 'Basic Start Date'
_MaintenanceOrder.MaintOrdBasicStartDate as MaintOrdBasicStartDate,
@EndUserText.label: 'Basic Start Time'
_MaintenanceOrder.MaintOrdBasicStartTime as MaintOrdBasicStartTime,
@EndUserText.label: 'Basic Start Date Time'
case _MaintenanceOrder.MaintOrdBasicStartTime when '240000'
then cast(dats_tims_to_tstmp( dats_add_days( _MaintenanceOrder.MaintOrdBasicStartDate, 1, 'NULL'), cast( '000000' as abap.tims ),
abap_system_timezone( $session.client,'NULL' ),
$session.client, 'NULL') as timestamp preserving type)
else cast(dats_tims_to_tstmp( _MaintenanceOrder.MaintOrdBasicStartDate, _MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,'NULL') as timestamp preserving type)
end as MaintOrdBasicStartDateTime,
_MaintenanceOrder.MaintOrdBasicEndDate as MaintOrdBasicEndDate,
_MaintenanceOrder.MaintOrdBasicEndTime as MaintOrdBasicEndTime,
@EndUserText.label: 'Basic End Date Time'
case _MaintenanceOrder.MaintOrdBasicEndTime when '240000'
then cast(dats_tims_to_tstmp( dats_add_days( _MaintenanceOrder.MaintOrdBasicEndDate , 1, 'NULL'), cast( '000000' as abap.tims ),
abap_system_timezone( $session.client,'NULL' ),
$session.client, 'NULL') as timestamp preserving type)
else cast(dats_tims_to_tstmp( _MaintenanceOrder.MaintOrdBasicEndDate , _MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client, 'NULL') as timestamp preserving type)
end as MaintOrdBasicEndDateTime,
@EndUserText.label: 'Scheduled Start Date'
_MaintenanceOrder.ScheduledBasicStartDate as ScheduledBasicStartDate,
@EndUserText.label: 'Scheduled Start Date Time'
case _MaintenanceOrder.ScheduledBasicStartTime when '240000'
then cast(dats_tims_to_tstmp( dats_add_days( _MaintenanceOrder.ScheduledBasicStartDate, 1, 'NULL'), cast( '000000' as abap.tims ),
abap_system_timezone( $session.client,'NULL' ),
$session.client, 'NULL') as timestamp preserving type)
else cast(dats_tims_to_tstmp( _MaintenanceOrder.ScheduledBasicStartDate, _MaintenanceOrder.ScheduledBasicStartTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,'NULL') as timestamp preserving type)
end as MaintOrdSchedldBscStrtDateTime,
@EndUserText.label: 'Scheduled End Date'
_MaintenanceOrder.ScheduledBasicEndDate as ScheduledBasicEndDate,
@EndUserText.label: 'Scheduled End Date Time'
case _MaintenanceOrder.ScheduledBasicEndTime when '240000'
then cast(dats_tims_to_tstmp( dats_add_days( _MaintenanceOrder.ScheduledBasicEndDate, 1, 'NULL'), cast( '000000' as abap.tims ),
abap_system_timezone( $session.client,'NULL' ),
$session.client, 'NULL') as timestamp preserving type)
else cast(dats_tims_to_tstmp( _MaintenanceOrder.ScheduledBasicEndDate, _MaintenanceOrder.ScheduledBasicEndTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,'NULL') as timestamp preserving type)
end as MaintOrdSchedldBscEndDateTime,
@ObjectModel.text.element: [ 'MaintenanceNotificationText' ]
@Consumption.semanticObject: 'MaintenanceNotification'
@ObjectModel: { foreignKey.association: '_MaintNotificationQuickView' }
@UI.textArrangement: #TEXT_FIRST
MaintenanceNotification,
@Semantics.text: true
_MaintenanceNotification.NotificationText as MaintenanceNotificationText,
@ObjectModel.foreignKey.association: '_PMNotificationType'
@ObjectModel.text.element: ['NotificationTypeName']
@UI.textArrangement: #TEXT_FIRST
_MaintenanceNotification.NotificationType as NotificationType,
@UI.hidden: true
@Semantics.text: true
_MaintenanceItem._PMNotificationType._Text[1:Language = $session.system_language ].NotificationTypeName as NotificationTypeName,
@EndUserText.label: 'Required Start Date'
_MaintenanceNotification.RequiredStartDate as RequiredStartDate,
_MaintenanceNotification.RequiredEndDate as RequiredEndDate,
@EndUserText.label: 'Required Start Date Time'
cast (dats_tims_to_tstmp( _MaintenanceNotification.RequiredStartDate, _MaintenanceNotification.RequiredStartTime, _MaintenanceNotification.NotificationTimeZone , $session.client, 'NULL') as tzntstmps preserving type ) as MaintNotifRqdStartDateTime,
@EndUserText.label: 'Required End Date Time'
cast (dats_tims_to_tstmp( _MaintenanceNotification.RequiredEndDate, _MaintenanceNotification.RequiredEndTime, _MaintenanceNotification.NotificationTimeZone, $session.client, 'NULL') as tzntstmps preserving type ) as MaintNotifRqdEndDateTime,
@Consumption.semanticObject: 'ServiceOrder'
@EndUserText.label: 'Service Order'
@EndUserText.quickInfo: 'Service Order'
@ObjectModel.text.element: ['ServiceOrderDescription']
@UI.textArrangement: #TEXT_FIRST
ServiceOrder,
@UI.hidden: true
@Semantics.text: true
_ServiceOrder.ServiceDocumentDescription as ServiceOrderDescription,
@EndUserText.label: 'Service Order Type'
@EndUserText.quickInfo: 'Service Order Type '
@ObjectModel.foreignKey.association: '_ServiceDocumentType'
@ObjectModel.text.element: ['ServiceOrderTypeName']
@UI.textArrangement: #TEXT_FIRST
_ServiceOrder.ServiceDocumentType as ServiceDocumentType,
@UI.hidden: true
@Semantics.text: true
_ServiceOrder._ServiceDocumentType._ServiceDocumentTypeText[1:Language = $session.system_language ].ServiceDocumentTypeName as ServiceOrderTypeName,
@EndUserText.label: 'Service Start Date Time'
_ServiceOrder.RequestedServiceStartDateTime as RequestedServiceStartDateTime,
_ServiceOrder.RequestedServiceEndDateTime as RequestedServiceEndDateTime,
//// MaintCallHorizonIsNotReached,
//
@ObjectModel.text.element: [ 'SchedulingStatusText' ]
@EndUserText.label: 'Scheduling Status'
@EndUserText.quickInfo: 'Scheduling Status'
@UI.textArrangement: #TEXT_ONLY
@UI.hidden:true
cast(SchedulingStatus as char1 preserving type ) as SchedulingStatus,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'CL_EAM_MPLAN_CALL_STATUS_EXIT'
cast ('' as abap.sstring(256) ) as SchedulingStatusText,
@UI.hidden: true
PlannedStartDate,
@EndUserText.label: 'User Scheduling'
ReleasedByUserName,
@UI.hidden: true
CompletionDate,
@UI.hidden: true
CompletionTime,
@EndUserText.label: 'Maintenance Plan Completion Date Time'
@Semantics.dateTime: true
dats_tims_to_tstmp( CompletionDate,
CompletionTime,
abap_system_timezone($session.client,'NULL'),
$session.client,
'NULL' ) as MaintPlnCallCompletionDateTime,
@ObjectModel.foreignKey.association: '_SchedulingType'
@ObjectModel.text.element: ['SchedulingTypeName']
@UI.textArrangement: #TEXT_FIRST
@EndUserText.label: 'Scheduling Type'
_MaintPlanCallHistory.SchedulingType as SchedulingType,
@UI.hidden: true
_MaintPlanCallHistory._SchedulingType._Text[1: Language = $session.system_language ].SchedulingTypeName as SchedulingTypeName,
@Consumption.hidden: true
_MaintPlanCallHistory.MaintCallIsInvokedOnPlndDate,
@Consumption.hidden: true
_MaintPlanCallHistory.MaintenanceCallIsOutstanding,
@Consumption.hidden: true
cast ( 000 as int1 preserving type ) as MaintPlanStatusCriticality,
//
// // _MaintenanceItem.MaintPriorityType as MaintPriorityType,
//
@ObjectModel.text.element: ['MaintPriorityDesc']
@UI.textArrangement: #TEXT_FIRST
@EndUserText.label: 'Priority'
case _MaintenanceItem.MaintenancePlanCallObject
when '' then _MaintenanceOrder.MaintPriority
when '2' then _MaintenanceNotification.MaintPriority
else '' end as MaintPriority,
@UI.hidden: true
@Semantics.text: true
case _MaintenanceItem.MaintenancePlanCallObject
when '' then _MaintenanceOrder._MaintenancePriority._Text[1:Language=$session.system_language].MaintPriorityDesc
when '2' then _MaintenanceNotification._PMNotificationPriority._Text[1:Language=$session.system_language].MaintPriorityDesc
else '' end as MaintPriorityDesc,
@UI.hidden: true
case _MaintenanceItem.MaintenancePlanCallObject
when '' then _MaintenanceOrder._MaintenancePriority.MaintPriorityColorCode
when '2' then _MaintenanceNotification._PMNotificationPriority.MaintPriorityColorCode
else 0 end as MaintPriorityColorCode,
@ObjectModel.text.element: [ 'ServiceDocumentPriorityName' ]
@UI.textArrangement: #TEXT_FIRST
_ServiceOrder.ServiceDocumentPriority as ServiceDocumentPriority,
@UI.hidden: true
@Semantics.text: true
_ServiceOrder.
_ServiceDocumentPriority.
_ServiceDocumentPriorityText[1:Language = $session.system_language].ServiceDocumentPriorityName as ServiceDocumentPriorityName,
_MaintenancePlan,
_MaintenanceItem,
_MaintenanceOrder,
_MaintenanceNotification,
_MaintPlanCallHistory,
_ServiceOrder,
_ServiceDocumentType,
_ServiceOrder._ServiceDocumentPriority,
_MaintenanceOrderType,
_PMNotificationType,
_SchedulingType,
_MaintenancePlanQuickVw,
_MaintenanceOrderQuickView,
_MaintNotificationQuickView
}
where
MaintenanceOrder <> ''
or MaintenanceNotification <> ''
or ServiceOrder <> ''
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA