C_MaintPlanCallObject

DDL: C_MAINTPLANCALLOBJECT SQL: CMPLANCALLOBJ Type: view CONSUMPTION Package: VDM_EAM_MAINTENANCEPLAN

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. Part of development package VDM_EAM_MAINTENANCEPLAN.

Data Sources (1)

SourceAliasJoin Type
I_MaintPlanCallObject I_MaintPlanCallObject from

Associations (8)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
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)

ServiceBindingVersionContractRelease
UI_MAINTENANCE_PLAN UI_MAINTENANCE_PLAN V2 C1 NOT_RELEASED
UI_MAINTENANCEITEM UI_MAINTENANCEITEM V2 C1 NOT_RELEASED

Fiori Apps (2)

App IDApp NameTypeDescription
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)

KeyFieldSource TableSource FieldDescription
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            <> ''