P_RSHMaintAssetBoardShapes
Maintenance asset board shapes
P_RSHMaintAssetBoardShapes is a Consumption CDS View that provides data about "Maintenance asset board shapes" in SAP S/4HANA. It reads from 9 data sources and exposes 74 fields with key fields MaintAssetBoardRowObjID, MaintAssetBoardShapeID, MaintAssetBoardShapeID, MaintAssetBoardShapeID.
Data Sources (9)
| Source | Alias | Join Type |
|---|---|---|
| I_MaintenanceOrder | _MaintenanceOrder | from |
| I_MaintenanceItem | I_MaintenanceItem | inner |
| I_MaintenanceItem | I_MaintenanceItem | inner |
| I_MaintenanceOrder | I_MaintenanceOrder | inner |
| I_MaintPlanCallHistory | I_MaintPlanCallHistory | inner |
| I_MaintPlanCallObject | I_MaintPlanCallObject | inner |
| I_MaintPlanCallObject | I_MaintPlanCallObject | inner |
| I_MaintenancePlanBasic | MPlan | union_all |
| I_MaintenancePlanBasic | MPlan | union_all |
Annotations (7)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PRSHMNTASTBRDSHP | view | |
| VDM.private | true | view | |
| VDM.viewType | #CONSUMPTION | view | |
| AbapCatalog.preserveKey | true | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| EndUserText.label | Maintenance asset board shapes | view |
Fields (74)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | MaintAssetBoardRowObjID | I_MaintenanceOrder | MaintenanceOrderInternalID | |
| KEY | MaintAssetBoardShapeID | I_MaintenanceOrder | MaintenanceOrderInternalID | |
| MaintenanceOrder | I_MaintenanceOrder | MaintenanceOrder | ||
| MaintenanceOrderDesc | I_MaintenanceOrder | MaintenanceOrderDesc | ||
| StartDate | I_MaintenanceOrder | MaintOrdBasicStartDate | ||
| EndDate | I_MaintenanceOrder | MaintOrdBasicEndDate | ||
| MaintAssetBoardShapeType | ||||
| MaintObjectLocAcctAssgmtNmbr | I_MaintenanceOrder | MaintObjectLocAcctAssgmtNmbr | ||
| MaintenancePlanningPlant | I_MaintenanceOrder | MaintenancePlanningPlant | ||
| MaintenancePlannerGroup | I_MaintenanceOrder | MaintenancePlannerGroup | ||
| AuthorizationGroupasAuthorizationGroup | ||||
| MaintenanceOrderType | I_MaintenanceOrder | MaintenanceOrderType | ||
| MaintenanceOrderInternalID | I_MaintenanceOrder | MaintenanceOrderInternalID | ||
| OperationSystemCondition | OperationSystemCondition | |||
| ProdnWrkCtrIsRsrvdByPlntMaint | _OperationSystemCondition | ProdnWrkCtrIsRsrvdByPlntMaint | ||
| MaintenanceEvent | I_MaintenanceOrder | MaintenanceRevision | ||
| MaintenanceEventText | ||||
| MaintPriority | I_MaintenanceOrder | MaintPriority | ||
| MaintPriorityDesc | ||||
| MainWorkCenter | ||||
| MainWorkCenterPlant | I_MaintenanceOrder | MainWorkCenterPlant | ||
| MaintPlngBucketLabel | ||||
| MaintPlanningBucketDescription | ||||
| PersonFullName | ||||
| FunctionalLocation | _LocationAccountAssignment | FunctionalLocation | ||
| KEY | MaintAssetBoardShapeID | |||
| MaintenanceOrder | I_MaintenanceOrder | MaintenanceOrder | ||
| MaintenanceOrderDesc | I_MaintenanceOrder | MaintenanceOrderDesc | ||
| StartDate | I_MaintenanceOrder | MaintOrdBasicStartDate | ||
| EndDate | I_MaintenanceOrder | MaintOrdBasicEndDate | ||
| MaintAssetBoardShapeType | ||||
| MaintObjectLocAcctAssgmtNmbr | I_MaintenanceItem | MaintObjectLocAcctAssgmtNmbr | ||
| MaintenancePlanningPlant | I_MaintenanceItem | MaintenancePlanningPlant | ||
| MaintenancePlannerGroup | I_MaintenanceItem | MaintenancePlannerGroup | ||
| AuthorizationGroupasAuthorizationGroup | ||||
| MaintenanceOrderType | I_MaintenanceOrder | MaintenanceOrderType | ||
| MaintenanceOrderInternalID | I_MaintenanceOrder | MaintenanceOrderInternalID | ||
| OperationSystemCondition | I_MaintenanceOrder | OperationSystemCondition | ||
| ProdnWrkCtrIsRsrvdByPlntMaint | ||||
| MaintenanceEvent | I_MaintenanceOrder | MaintenanceRevision | ||
| MaintenanceEventText | ||||
| MaintPriority | I_MaintenanceOrder | MaintPriority | ||
| MaintPriorityDesc | ||||
| MainWorkCenter | ||||
| MainWorkCenterPlant | I_MaintenanceOrder | MainWorkCenterPlant | ||
| MaintPlngBucketLabel | ||||
| MaintPlanningBucketDescription | ||||
| PersonFullName | ||||
| FunctionalLocation | ||||
| KEY | MaintAssetBoardShapeID | |||
| MaintenanceOrder | ||||
| MaintenanceOrderDesc | ||||
| StartDate | I_MaintPlanCallObject | PlannedStartDate | ||
| EndDate | I_MaintPlanCallObject | PlannedStartDate | ||
| MaintAssetBoardShapeType | ||||
| MaintObjectLocAcctAssgmtNmbr | I_MaintenanceItem | MaintObjectLocAcctAssgmtNmbr | ||
| MaintenancePlanningPlant | I_MaintenanceItem | MaintenancePlanningPlant | ||
| MaintenancePlannerGroup | I_MaintenanceItem | MaintenancePlannerGroup | ||
| AuthorizationGroupasAuthorizationGroup | ||||
| MaintenanceOrderType | ||||
| MaintenanceOrderInternalID | ||||
| OperationSystemCondition | ||||
| ProdnWrkCtrIsRsrvdByPlntMaint | ||||
| MaintenanceEvent | ||||
| MaintenanceEventText | ||||
| MaintPriority | ||||
| MaintPriorityDesc | ||||
| MainWorkCenter | ||||
| MainWorkCenterPlant | ||||
| MaintPlngBucketLabel | ||||
| MaintPlanningBucketDescription | ||||
| PersonFullName | ||||
| FunctionalLocation | _LocationAccountAssignment | FunctionalLocation | ||
| Equipment | I_MaintenanceItem | Equipment |
@AbapCatalog.sqlViewName: 'PRSHMNTASTBRDSHP'
@VDM.private: true
@VDM.viewType: #CONSUMPTION
@AbapCatalog.preserveKey:true
@AbapCatalog.compiler.compareFilter:true
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Maintenance asset board shapes'
/*
CONTRACT**********************************************************************************************************************
Name: Maintenance Asset Board Shapes
Specification: This view returns the time frame for the shapes to be displayed for functional locations, equipments,
orders and maintenance plans in the asset board
Red line is displayed below operations if the system condition is Not in Operation
Ensures: Shapes displayed in the asset board are returned. Differnt shape types are used to decide the
display in UI :
ORDER - Orders
MPLAN_ORDER - Called maintenance plans ( Orders are created and shapes will be similar to orders)
MPLAN_OPEN_CALLS - Open maintenance calls
UNDER_MAINT - Indicates there is at least one order attached to the equipment or functional Location
REQ_SHUTDOWN - Indicates there is at least one order attached to the equipment or functional location
with operation system condition as Not in operation.Red line is displayed
EVENT_SHUTDOWN - Indicates there is a one time planned event maintenance shutdown for an asset
EVENT - Indicates there is one time planned maintenance event for an asset but the asset is operational
Owners: AN
Contributors:
Unit Test required Y/N: Yes
Additional comments The view uses several unions for the different shape type and rows
1) ORDER – Maintenance Order shapes shown in order row
2) MPLAN_ORDER - Orders generated from Maintenance plans shown in Maintenance Plan row
3) MPLAN_OPEN_CALLS - Open maintenance plans shown in Maintenance plan row
4) EVENT_SHUTDOWN,EVENT, UNDER_MAINT - Display orders against FunctionalLocation
considering the Planning bucket linkage and system condition
5) EVENT_SHUTDOWN,EVENT, UNDER_MAINT - Display orders against Equipment
considering the Planning bucket linkage and system condition
END OF CONTRACT***************************************************************************************************************
*/
define view P_RSHMaintAssetBoardShapes
// Locked, deleted and completed orders are already filtered in the view C_RSHMaintAssetBoard,
// hence additional filtering is not needed
as select from I_MaintenanceOrder as _MaintenanceOrder
{
key _MaintenanceOrder.MaintenanceOrderInternalID as MaintAssetBoardRowObjID,
key _MaintenanceOrder.MaintenanceOrderInternalID as MaintAssetBoardShapeID,
_MaintenanceOrder.MaintenanceOrder as MaintenanceOrder,
_MaintenanceOrder.MaintenanceOrderDesc as MaintenanceOrderDesc,
// If Basic Start Date is blank, use same details as from Basic End Date
cast(case when MaintOrdBasicStartDate = '00000000'
then
case
when MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(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( MaintOrdBasicEndDate, MaintOrdBasicEndTime,abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(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( MaintOrdBasicStartDate, MaintOrdBasicStartTime,abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_start_tstmp preserving type ) as MaintAssetBoardShapeStrtDteTme,
//If Basic End Date is blank, use same details as from Basic Start Date
cast( case when MaintOrdBasicEndDate = '00000000'
then
case
when MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(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( MaintOrdBasicStartDate, MaintOrdBasicStartTime,abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(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( MaintOrdBasicEndDate, MaintOrdBasicEndTime,abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_end_tstmp preserving type ) as MaintAssetBoardShapeEndDteTme,
_MaintenanceOrder.MaintOrdBasicStartDate as StartDate,
_MaintenanceOrder.MaintOrdBasicEndDate as EndDate,
cast('ORDER' as char50 ) as MaintAssetBoardShapeType,
_MaintenanceOrder.MaintObjectLocAcctAssgmtNmbr,
_MaintenanceOrder.MaintenancePlanningPlant as MaintenancePlanningPlant,
_MaintenanceOrder.MaintenancePlannerGroup as MaintenancePlannerGroup,
coalesce(_Equipment.AuthorizationGroup,
_LocationAccountAssignment._FunctionalLocation.AuthorizationGroup ) as AuthorizationGroup,
_MaintenanceOrder.MaintenanceOrderType as MaintenanceOrderType,
_MaintenanceOrder.MaintenanceOrderInternalID as MaintenanceOrderInternalID,
OperationSystemCondition as OperationSystemCondition,
_OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint,
_MaintenanceOrder.MaintenanceRevision as MaintenanceEvent,
_MaintenanceOrder._MaintenanceRevision.MaintenanceRevisionDesc as MaintenanceEventText,
_MaintenanceOrder.MaintPriority as MaintPriority,
cast( _MaintenancePriority._Text[ 1: Language = $session.system_language ].MaintPriorityDesc as rsh_eam_priority_text preserving type ) as MaintPriorityDesc,
cast( _MaintenanceOrder.MainWorkCenter as rsh_eam_maint_work_center ) as MainWorkCenter,
_MaintenanceOrder.MainWorkCenterPlant,
cast('' as eam_plngbktlabel ) as MaintPlngBucketLabel,
cast('' as eam_plngbktdesc ) as MaintPlanningBucketDescription,
cast('' as rsh_eam_person_resp_name ) as PersonFullName,
_LocationAccountAssignment.FunctionalLocation as FunctionalLocation,
Equipment as Equipment
}
where
MaintenancePlan = '' //we are not interested in calls from maintenance plan
union all
// maintenance plan - called orders
select from I_MaintenancePlanBasic as MPlan
inner join I_MaintenanceItem on MPlan.MaintenancePlan = I_MaintenanceItem.MaintenancePlan
inner join I_MaintPlanCallObject on I_MaintenanceItem.MaintenancePlan = I_MaintPlanCallObject.MaintenancePlan
and I_MaintenanceItem.MaintenanceItem = I_MaintPlanCallObject.MaintenanceItem
and I_MaintPlanCallObject.MaintCallHorizonIsNotReached = ' '
inner join I_MaintenanceOrder on I_MaintPlanCallObject.MaintenanceOrder = I_MaintenanceOrder.MaintenanceOrder
{
key I_MaintenanceItem.ObjectInternalID as MaintAssetBoardRowObjID,
key concat(I_MaintenanceItem.ObjectInternalID, cast( I_MaintPlanCallObject.MaintenancePlanCallNumber as char50)) as MaintAssetBoardShapeID,
I_MaintenanceOrder.MaintenanceOrder as MaintenanceOrder,
I_MaintenanceOrder.MaintenanceOrderDesc as MaintenanceOrderDesc,
// If Basic Start Date is blank, use same details as from Basic End Date
cast(case when I_MaintenanceOrder.MaintOrdBasicStartDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_start_tstmp preserving type ) as MaintAssetBoardShapeStrtDteTme,
//If Basic End Date is blank, use same details as from Basic Start Date
cast( case when I_MaintenanceOrder.MaintOrdBasicEndDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_end_tstmp preserving type ) as MaintAssetBoardShapeEndDteTme,
I_MaintenanceOrder.MaintOrdBasicStartDate as StartDate,
I_MaintenanceOrder.MaintOrdBasicEndDate as EndDate,
'MPLAN_ORDER' as MaintAssetBoardShapeType,
I_MaintenanceItem.MaintObjectLocAcctAssgmtNmbr as MaintObjectLocAcctAssgmtNmbr,
I_MaintenanceItem.MaintenancePlanningPlant as MaintenancePlanningPlant,
I_MaintenanceItem.MaintenancePlannerGroup as MaintenancePlannerGroup,
coalesce(I_MaintenanceItem._Equipment.AuthorizationGroup,
I_MaintenanceItem._LocationAccountAssignment._FunctionalLocation.AuthorizationGroup) as AuthorizationGroup,
I_MaintenanceOrder.MaintenanceOrderType as MaintenanceOrderType,
I_MaintenanceOrder.MaintenanceOrderInternalID,
I_MaintenanceOrder.OperationSystemCondition as OperationSystemCondition,
I_MaintenanceOrder._OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint as ProdnWrkCtrIsRsrvdByPlntMaint,
I_MaintenanceOrder.MaintenanceRevision as MaintenanceEvent,
I_MaintenanceOrder._MaintenanceRevision.MaintenanceRevisionDesc as MaintenanceEventText,
I_MaintenanceOrder.MaintPriority as MaintPriority,
cast( I_MaintenanceOrder._MaintenancePriority._Text[ 1: Language = $session.system_language ].MaintPriorityDesc as rsh_eam_priority_text preserving type ) as MaintPriorityDesc,
cast( I_MaintenanceOrder.MainWorkCenter as rsh_eam_maint_work_center ) as MainWorkCenter,
I_MaintenanceOrder.MainWorkCenterPlant,
'' as MaintPlngBucketLabel,
'' as MaintPlanningBucketDescription,
'' as PersonFullName,
I_MaintenanceItem._LocationAccountAssignment.FunctionalLocation as FunctionalLocation,
I_MaintenanceItem.Equipment as Equipment
}
where
// Maintenance Plans with call object as Maintenance or service orders should be considered
MPlan._MaintenancePlanCatParam.MaintenancePlanCallObject = ''
union all
// maintenance plan - open calls
select from I_MaintenancePlanBasic as MPlan
inner join I_MaintenanceItem on MPlan.MaintenancePlan = I_MaintenanceItem.MaintenancePlan
inner join I_MaintPlanCallObject on I_MaintenanceItem.MaintenancePlan = I_MaintPlanCallObject.MaintenancePlan
and I_MaintenanceItem.MaintenanceItem = I_MaintPlanCallObject.MaintenanceItem
and I_MaintPlanCallObject.MaintCallHorizonIsNotReached = 'X'
inner join I_MaintPlanCallHistory on I_MaintPlanCallObject.MaintenancePlan = I_MaintPlanCallHistory.MaintenancePlan
and I_MaintPlanCallObject.MaintenancePlanCallNumber = I_MaintPlanCallHistory.MaintenancePlanCallNumber
{
key I_MaintenanceItem.ObjectInternalID as MaintAssetBoardRowObjID,
key concat(I_MaintenanceItem.ObjectInternalID, cast( I_MaintPlanCallObject.MaintenancePlanCallNumber as char50)) as MaintAssetBoardShapeID,
' ' as MaintenanceOrder,
' ' as MaintenanceOrderDesc,
cast(dats_tims_to_tstmp( I_MaintPlanCallObject.PlannedStartDate,
cast( '000000' as tims),
abap_system_timezone( $session.client,'NULL'), $session.client,'NULL') as timestamp preserving type) as MaintAssetBoardShapeStrtDteTme,
cast(dats_tims_to_tstmp( I_MaintPlanCallObject.PlannedStartDate,
cast( '235959' as tims),
abap_system_timezone( $session.client,'NULL'), $session.client,'NULL') as timestamp preserving type) as MaintAssetBoardShapeEndDteTme,
I_MaintPlanCallObject.PlannedStartDate as StartDate,
I_MaintPlanCallObject.PlannedStartDate as EndDate,
'MPLAN_OPEN_CALL' as MaintAssetBoardShapeType,
I_MaintenanceItem.MaintObjectLocAcctAssgmtNmbr as MaintObjectLocAcctAssgmtNmbr,
I_MaintenanceItem.MaintenancePlanningPlant as MaintenancePlanningPlant,
I_MaintenanceItem.MaintenancePlannerGroup as MaintenancePlannerGroup,
coalesce(I_MaintenanceItem._Equipment.AuthorizationGroup,
_LocationAccountAssignment._FunctionalLocation.AuthorizationGroup ) as AuthorizationGroup,
'' as MaintenanceOrderType,
'' as MaintenanceOrderInternalID,
'' as OperationSystemCondition,
'' as ProdnWrkCtrIsRsrvdByPlntMaint,
cast ( '' as rsh_eam_maint_event ) as MaintenanceEvent,
'' as MaintenanceEventText,
'' as MaintPriority,
'' as MaintPriorityDesc,
cast ( '' as rsh_eam_maint_work_center ) as MainWorkCenter,
'' as MainWorkCenterPlant,
'' as MaintPlngBucketLabel,
'' as MaintPlanningBucketDescription,
'' as PersonFullName,
_LocationAccountAssignment.FunctionalLocation as FunctionalLocation,
I_MaintenanceItem.Equipment as Equipment
}
where
// Maintenance Plans with call object as Maintenance or service orders should be considered
MPlan._MaintenancePlanCatParam.MaintenancePlanCallObject = ''
// In case maintenance plan is deactivated or deletion flag is set, Scheduled and New Calls are locked. Ignore such locked calls
and(
I_MaintPlanCallHistory.MaintenancePlanCallIsLocked is initial
or I_MaintPlanCallHistory.MaintenancePlanCallIsLocked is null
)
union all
-- Orders resp. Events for FLoc
select from I_MaintenanceOrder
left outer to many join I_StatusObjectStatusBasic as ExclStatus on I_MaintenanceOrder.MaintenanceOrderInternalID = ExclStatus.StatusObject
and ExclStatus.StatusIsInactive = ''
and (
ExclStatus.StatusCode = 'I0045'
or --Confirmed
ExclStatus.StatusCode = 'I0009'
or --Confirmed
ExclStatus.StatusCode = 'I0046'
or --Business Closed
ExclStatus.StatusCode = 'I0013'
or --Deleted
ExclStatus.StatusCode = 'I0043'
) --Locked
left outer to one join I_MaintPlngBucketWithRespyData as _PlanningBucket on I_MaintenanceOrder.MaintenanceOrder = _PlanningBucket.MaintOrderForAdministration
and _PlanningBucket.MaintPlanningBucketType = 'STO'
{
key _LocationAccountAssignment._FunctionalLocation.MaintObjectInternalID as MaintAssetBoardRowObjID,
key I_MaintenanceOrder.MaintenanceOrderInternalID as MaintAssetBoardShapeID,
I_MaintenanceOrder.MaintenanceOrder as MaintenanceOrder,
I_MaintenanceOrder.MaintenanceOrderDesc as MaintenanceOrderDesc,
// If Basic Start Date is blank, use same details as from Basic End Date
cast(case when I_MaintenanceOrder.MaintOrdBasicStartDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_start_tstmp preserving type ) as MaintAssetBoardShapeStrtDteTme,
//If Basic End Date is blank, use same details as from Basic Start Date
cast( case when I_MaintenanceOrder.MaintOrdBasicEndDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_end_tstmp preserving type ) as MaintAssetBoardShapeEndDteTme,
MaintOrdBasicStartDate as StartDate,
MaintOrdBasicEndDate as EndDate,
case
// Order is an administrative order
when _PlanningBucket.MaintOrderForAdministration is not null
then
case
when _OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint = 'X'
then 'EVENT_SHUTDOWN'
else 'EVENT'
end
when _OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint = 'X'
then 'REQ_SHUTDOWN '
else
'UNDER_MAINT' end as MaintAssetBoardShapeType,
I_MaintenanceOrder.MaintObjectLocAcctAssgmtNmbr,
I_MaintenanceOrder.MaintenancePlanningPlant as MaintenancePlanningPlant,
I_MaintenanceOrder.MaintenancePlannerGroup as MaintenancePlannerGroup,
_LocationAccountAssignment._FunctionalLocation.AuthorizationGroup as AuthorizationGroup,
I_MaintenanceOrder.MaintenanceOrderType as MaintenanceOrderType,
I_MaintenanceOrder.MaintenanceOrderInternalID as MaintenanceOrderInternalID,
I_MaintenanceOrder.OperationSystemCondition as OperationSystemCondition,
_OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint,
cast ( I_MaintenanceOrder.MaintenanceRevision as rsh_eam_maint_event ) as MaintenanceEvent,
I_MaintenanceOrder._MaintenanceRevision.MaintenanceRevisionDesc as MaintenanceEventText,
I_MaintenanceOrder. MaintPriority as MaintPriority,
cast( I_MaintenanceOrder._MaintenancePriority._Text[ 1: Language = $session.system_language ].MaintPriorityDesc as rsh_eam_priority_text preserving type ) as MaintPriorityDesc,
cast( I_MaintenanceOrder.MainWorkCenter as rsh_eam_maint_work_center ) as MainWorkCenter,
I_MaintenanceOrder.MainWorkCenterPlant,
_PlanningBucket.MaintPlngBucketLabel as MaintPlngBucketLabel,
_PlanningBucket.MaintPlanningBucketDescription as MaintPlanningBucketDescription,
_PlanningBucket._PersonWorkAgreement.PersonFullName as PersonFullName,
_LocationAccountAssignment.FunctionalLocation as FunctionalLocation,
Equipment as Equipment
}
where
(
_LocationAccountAssignment.FunctionalLocation is not initial
and Equipment is initial
and ExclStatus.StatusObject is null
)
union all
-- orders resp. events for equipments
select from I_MaintenanceOrder
left outer to many join I_StatusObjectStatusBasic as ExclStatus on I_MaintenanceOrder.MaintenanceOrderInternalID = ExclStatus.StatusObject
and ExclStatus.StatusIsInactive = ''
and (
ExclStatus.StatusCode = 'I0045'
or --Confirmed
ExclStatus.StatusCode = 'I0009'
or --Confirmed
ExclStatus.StatusCode = 'I0046'
or --Business Closed
ExclStatus.StatusCode = 'I0013'
or --Deleted
ExclStatus.StatusCode = 'I0043'
) --Locked
left outer to one join I_MaintPlngBucketWithRespyData as _PlanningBucket on I_MaintenanceOrder.MaintenanceOrder = _PlanningBucket.MaintOrderForAdministration
and _PlanningBucket.MaintPlanningBucketType = 'STO'
{
key _Equipment.MaintObjectInternalID as MaintAssetBoardRowObjID,
key I_MaintenanceOrder.MaintenanceOrderInternalID as MaintAssetBoardShapeID,
I_MaintenanceOrder.MaintenanceOrder as MaintenanceOrder,
I_MaintenanceOrder.MaintenanceOrderDesc as MaintenanceOrderDesc,
// If Basic Start Date is blank, use same details as from Basic End Date
cast(case when I_MaintenanceOrder.MaintOrdBasicStartDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_start_tstmp preserving type ) as MaintAssetBoardShapeStrtDteTme,
//If Basic End Date is blank, use same details as from Basic Start Date
cast( case when MaintOrdBasicEndDate = '00000000'
then
case
when I_MaintenanceOrder.MaintOrdBasicStartTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicStartDate, I_MaintenanceOrder.MaintOrdBasicStartTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
else
case
when I_MaintenanceOrder.MaintOrdBasicEndTime = '240000'
then cast(dats_tims_to_tstmp( dats_add_days(I_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( I_MaintenanceOrder.MaintOrdBasicEndDate, I_MaintenanceOrder.MaintOrdBasicEndTime,
abap_system_timezone( $session.client,'NULL'),$session.client,'NULL') as timestamp preserving type)
end
end as rsh_eam_order_end_tstmp preserving type ) as MaintAssetBoardShapeEndDteTme,
MaintOrdBasicStartDate as StartDate,
MaintOrdBasicEndDate as EndDate,
case
// Order is an administrative order
when _PlanningBucket.MaintOrderForAdministration is not null
then
case
when _OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint = 'X'
then 'EVENT_SHUTDOWN'
else 'EVENT'
end
when _OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint = 'X'
then 'REQ_SHUTDOWN '
else
'UNDER_MAINT' end as MaintAssetBoardShapeType,
I_MaintenanceOrder.MaintObjectLocAcctAssgmtNmbr,
I_MaintenanceOrder.MaintenancePlanningPlant as MaintenancePlanningPlant,
I_MaintenanceOrder.MaintenancePlannerGroup as MaintenancePlannerGroup,
_Equipment.AuthorizationGroup as AuthorizationGroup,
I_MaintenanceOrder.MaintenanceOrderType as MaintenanceOrderType,
I_MaintenanceOrder.MaintenanceOrderInternalID as MaintenanceOrderInternalID,
I_MaintenanceOrder.OperationSystemCondition as OperationSystemCondition,
_OperationSystemCondition.ProdnWrkCtrIsRsrvdByPlntMaint,
cast ( I_MaintenanceOrder.MaintenanceRevision as rsh_eam_maint_event ) as MaintenanceEvent,
I_MaintenanceOrder._MaintenanceRevision.MaintenanceRevisionDesc as MaintenanceEventText,
I_MaintenanceOrder. MaintPriority as MaintPriority,
cast( I_MaintenanceOrder._MaintenancePriority._Text[ 1: Language = $session.system_language ].MaintPriorityDesc as rsh_eam_priority_text preserving type ) as MaintPriorityDesc,
cast( I_MaintenanceOrder.MainWorkCenter as rsh_eam_maint_work_center ) as MainWorkCenter,
I_MaintenanceOrder.MainWorkCenterPlant,
_PlanningBucket.MaintPlngBucketLabel as MaintPlngBucketLabel,
_PlanningBucket.MaintPlanningBucketDescription as MaintPlanningBucketDescription,
_PlanningBucket._PersonWorkAgreement.PersonFullName as PersonFullName,
_LocationAccountAssignment.FunctionalLocation as FunctionalLocation,
Equipment as Equipment
}
where
//We need this union only to display orders against the equipments
(
Equipment is not initial
and ExclStatus.StatusObject is null
)
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