P_RSHMaintAssetBoardShapes

DDL: P_RSHMAINTASSETBOARDSHAPES SQL: PRSHMNTASTBRDSHP Type: view CONSUMPTION

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)

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

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

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