//@AbapCatalog.sqlViewName: 'RMAINTJOBTP'
//@AbapCatalog.compiler.compareFilter: true
//@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Maintenance Order TP'
//@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@VDM.usage.type: [#TRANSACTIONAL_PROCESSING_SERVICE]
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
@ObjectModel.usageType: {serviceQuality: #C, sizeCategory: #L, dataClass: #TRANSACTIONAL}
@ObjectModel.sapObjectNodeType.name: 'MaintenanceOrder'
define root view entity R_MaintenanceJobTP
as select from I_MaintenanceOrder
association [0..*] to I_StatusObjectStatus as _OrderStatusObjectStatus on $projection.MaintenanceOrderInternalID = _OrderStatusObjectStatus.StatusObject
association [0..1] to I_Indicator as _IsFinallyConfirmed on $projection.IsFinallyConfirmed = _IsFinallyConfirmed.IndicatorValue
association [0..1] to I_Indicator as _IsInProcess on $projection.IsInProcess = _IsInProcess.IndicatorValue
composition [0..*] of R_MaintenanceJobWorkItemTP as _MaintenanceJobWorkItem
{
key MaintenanceOrder,
MaintOrderRoutingNumber,
MaintenanceOrderType,
MaintenanceOrderDesc,
MaintPriority,
MaintPriorityType,
cast(dats_tims_to_tstmp(MaintOrdBasicStartDate, MaintOrdBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') as timestamp preserving type) as MaintOrdBasicStartDateTime,
cast(dats_tims_to_tstmp(MaintOrdBasicEndDate, MaintOrdBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') as timestamp preserving type) as MaintOrdBasicEndDateTime,
tstmp_to_dats( dats_tims_to_tstmp(MaintOrdBasicStartDate, MaintOrdBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrdBasicStartDate,
tstmp_to_tims( dats_tims_to_tstmp(MaintOrdBasicStartDate, MaintOrdBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrdBasicStartTime,
tstmp_to_dats( dats_tims_to_tstmp(MaintOrdBasicEndDate, MaintOrdBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrdBasicEndDate,
tstmp_to_tims( dats_tims_to_tstmp(MaintOrdBasicEndDate, MaintOrdBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrdBasicEndTime,
cast(dats_tims_to_tstmp(ScheduledBasicStartDate, ScheduledBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') as timestamp preserving type) as MaintOrdSchedldBscStrtDateTime,
cast(dats_tims_to_tstmp(ScheduledBasicEndDate, ScheduledBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') as timestamp preserving type) as MaintOrdSchedldBscEndDateTime,
tstmp_to_dats( dats_tims_to_tstmp(ScheduledBasicStartDate, ScheduledBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as ScheduledBasicStartDate,
tstmp_to_tims( dats_tims_to_tstmp(ScheduledBasicStartDate, ScheduledBasicStartTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as ScheduledBasicStartTime,
tstmp_to_dats( dats_tims_to_tstmp(ScheduledBasicEndDate, ScheduledBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as ScheduledBasicEndDate,
tstmp_to_tims( dats_tims_to_tstmp(ScheduledBasicEndDate, ScheduledBasicEndTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as ScheduledBasicEndTime,
cast(dats_tims_to_tstmp(MaintOrderReferenceDate, MaintOrderReferenceTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL') as timestamp preserving type) as MaintOrderReferenceDateTime,
tstmp_to_dats( dats_tims_to_tstmp(MaintOrderReferenceDate, MaintOrderReferenceTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrderReferenceDate,
tstmp_to_tims( dats_tims_to_tstmp(MaintOrderReferenceDate, MaintOrderReferenceTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), 'UTC', $session.client, 'NULL' ) as MaintOrderReferenceTime,
MaintenanceNotification,
OrdIsNotSchedldAutomatically,
MainWorkCenter,
MainWorkCenterPlant,
MaintenancePlanningPlant,
MaintenancePlant,
Assembly,
BusinessArea,
ReferenceElement,
FunctionalArea,
AdditionalDeviceData,
Equipment,
MaintenanceOrderPlanningCode,
MaintenancePlannerGroup,
MaintenanceActivityType,
OrderProcessingGroup,
ProfitCenter,
ResponsibleCostCenter,
MaintenanceRevision,
cast ( SerialNumber as vdm_eam_gernr ) as SerialNumber,
SuperiorProjectNetwork,
OperationSystemCondition,
cast ( WBSElementInternalID as ps_s4_pspnr ) as WBSElementInternalID,
ControllingObjectClass,
cast ( _LocationAccountAssignment.FunctionalLocation as vdm_eam_tplnr ) as FunctionalLocation,
BasicSchedulingType,
LatestAcceptableCompletionDate,
MaintOrdPersonResponsible,
@ObjectModel.readOnly: null
LastChangeDateTime,
CreatedByUser,
MaintObjectLocAcctAssgmtNmbr,
// used for asscosiating I_StatusObjectStatus
MaintenanceOrderInternalID,
// this field is used for View Job Card action on the UI. this is a calculated field. impl. class is asociated in C view.
@Semantics.text: true
cast ('' as vdm_j_system_status_concat_t) as ConcatenatedActiveSystStsName,
// this field is used for View Job Card action on the UI.
@ObjectModel.foreignKey.association: '_IsFinallyConfirmed'
cast( case when _OrderStatusObjectStatus[1: StatusCode = 'I0009'].StatusCode is not null and
_OrderStatusObjectStatus[1: StatusCode = 'I0009'].StatusIsInactive <> 'X'
then 'X'
else '' end as eams_finally_confirmed ) as IsFinallyConfirmed,
// this field is used for View Job Card action on the UI.
@ObjectModel.foreignKey.association: '_IsInProcess'
cast( case when (_StatusObjectActiveStatus[1: StatusCode = 'I0010' ].StatusCode != '' and _StatusObjectActiveStatus[1: StatusCode = 'I0010' ].StatusIsActive = 'X') or
(_StatusObjectActiveStatus[1: StatusCode = 'I0809' ].StatusCode != '' and _StatusObjectActiveStatus[1: StatusCode = 'I0809' ].StatusIsActive = 'X')
then 'X'
else '' end as xfeld ) as IsInProcess,
/* Associations */
_Equipment,
_LocationAccountAssignment,
_MaintenanceJobWorkItem,
_IsFinallyConfirmed, // needed for foreign key association
_IsInProcess // // needed for foreign key association
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_LOCATIONACCOUNTASSIGNMENT",
"I_MAINTENANCEORDER",
"I_STATUSOBJECTACTIVESTATUS",
"I_STATUSOBJECTSTATUS"
],
"ASSOCIATED":
[
"I_EQUIPMENT",
"I_INDICATOR",
"I_LOCATIONACCOUNTASSIGNMENT",
"R_MAINTENANCEJOBWORKITEMTP"
],
"BASE":
[
"I_MAINTENANCEORDER"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/