CDS标准视图:有技术对象的维修工单 I_MAINTORDERTECHOBJCUBE

  • 视图名称:有技术对象的维修工单 I_MAINTORDERTECHOBJCUBE
  • 视图类型:基础
  • 视图代码:
点击查看代码
@EndUserText.label: 'Maintenance Order With Tech Object - Cube'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IMNTORDTOCUBE'
@AccessControl.authorizationCheck: #CHECK
@AbapCatalog.compiler.compareFilter: true
@ClientHandling.algorithm: #SESSION_VARIABLE

@Analytics: {
  dataCategory: #CUBE,
  dataExtraction: {
    enabled: true,
    delta.byElement: {
      name: 'LastChangeDateTime'
    }
  }
}

@Metadata.allowExtensions:true

@ObjectModel: {
  usageType: {
    dataClass: #TRANSACTIONAL,
    serviceQuality: #D,
    sizeCategory: #XL
  }
}
@ObjectModel.supportedCapabilities:[ #ANALYTICAL_PROVIDER ]
@ObjectModel.modelingPattern: #ANALYTICAL_CUBE

@Metadata.ignorePropagatedAnnotations: true

define view I_MaintOrderTechObjCube
  as select from           I_MaintenanceOrder                                        as I_MaintenanceOrder
    left outer to one join P_MaintOrderDurationInWorkdays(im_clnt : $session.client) as durn on durn.MaintenanceOrder = I_MaintenanceOrder.MaintenanceOrder
  association [0..1] to I_TechObjIsEquipOrFuncnlLoc as _TechObjIsEquipOrFuncnlLoc   on  $projection.TechObjIsEquipOrFuncnlLoc = _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc
  association [0..1] to I_TechnicalObjectType       as _TechnicalObjectType         on  $projection.TechnicalObjectType = _TechnicalObjectType.TechnicalObjectType
  association [0..1] to I_WorkCenterBySemanticKey   as _MainWorkCenterBySemanticKey on  $projection.MainWorkCenter      = _MainWorkCenterBySemanticKey.WorkCenter
                                                                                    and $projection.MainWorkCenterPlant = _MainWorkCenterBySemanticKey.Plant
  association [0..1] to I_WorkCenterBySemanticKey   as _WorkCenterBySemanticKey     on  $projection.workcenter      = _WorkCenterBySemanticKey.WorkCenter
                                                                                    and $projection.WorkCenterPlant = _WorkCenterBySemanticKey.Plant
  association [0..*] to I_EquipmentData             as _EquipmentData               on  _EquipmentData.Equipment = $projection.Equipment
  association [0..1] to I_FunctionalLocationData    as _FunctionalLocationData      on  _FunctionalLocationData.FunctionalLocation = $projection.functionallocation
  association [0..1] to I_UnitOfMeasure             as _OrderDurationUnit           on  _OrderDurationUnit.UnitOfMeasure = $projection.OrderDurationUnit
  association [0..1] to I_WorkCenter                as _WorkCenter                  on  $projection.WorkCenterInternalID = _WorkCenter.WorkCenterInternalID
                                                                                    and _WorkCenter.WorkCenterTypeCode   = 'A'
  association [0..1] to I_MaintenancePlanPlant      as _MaintenancePlanPlant        on  $projection.MaintenancePlanningPlant = _MaintenancePlanPlant.MaintenancePlanningPlant

  -- Extensions, do not expose as association:
  association [0..1] to E_MaintenanceOrder          as _MaintenanceOrderExtension   on  $projection.MaintenanceOrder = _MaintenanceOrderExtension.MaintenanceOrder
{
      @ObjectModel.text.element:  [ 'MaintenanceOrderDesc' ]
  key I_MaintenanceOrder.MaintenanceOrder,

      cast( ' ' as eam_is_historical_order preserving type )                                                         as MaintenanceOrderIsHistorical,

      @ObjectModel.foreignKey.association: '_MaintenanceOrderType'
      I_MaintenanceOrder.MaintenanceOrderType,

      @Semantics.text: true
      I_MaintenanceOrder.MaintenanceOrderDesc,

      I_MaintenanceOrder.MaintPriority,
      I_MaintenanceOrder.MaintPriorityType,

      @ObjectModel.foreignKey.association: '_FunctionalLocationData'
      I_MaintenanceOrder._LocationAccountAssignment.FunctionalLocation,
      @Consumption.filter.businessDate.at
      @ObjectModel.foreignKey.association: '_EquipmentData'
      I_MaintenanceOrder.Equipment,
      @ObjectModel.foreignKey.association: '_Assembly'
      I_MaintenanceOrder.Assembly,
      I_MaintenanceOrder._Equipment.Material,
      I_MaintenanceOrder.SerialNumber,

      @ObjectModel.foreignKey.association: '_MaintenanceNotification'
      I_MaintenanceOrder.MaintenanceNotification,

      I_MaintenanceOrder._Order.LeadingOrder,

      @ObjectModel.foreignKey.association: '_MaintenancePlannerGroup'
      I_MaintenanceOrder.MaintenancePlannerGroup,
      @ObjectModel.foreignKey.association: '_MaintenancePlanPlant'
      I_MaintenanceOrder.MaintenancePlanningPlant,

      cast( '' as i_parnr_vera )                                                                                     as MaintOrdPersonResponsible,
      I_MaintenanceOrder.MaintenanceRevision,

      @ObjectModel.foreignKey.association: '_MaintenancePlan'
      I_MaintenanceOrder.MaintenancePlan,
      @ObjectModel.foreignKey.association: '_MaintenanceItem'
      I_MaintenanceOrder.MaintenanceItem,

      @ObjectModel.foreignKey.association: '_BillOfOperationsType'
      I_MaintenanceOrder._Order.BillOfOperationsType                                                                 as TaskListType,
      @ObjectModel.foreignKey.association: '_BillOfOperationsGroup'
      I_MaintenanceOrder._Order.BillOfOperations                                                                     as TaskListGroup,
      I_MaintenanceOrder._Order.BillOfOperationsVariant                                                              as TaskListGroupCounter,

      I_MaintenanceOrder.MaintenanceOrderPlanningCode,

      @ObjectModel.foreignKey.association: '_MaintenanceActivityType'
      I_MaintenanceOrder.MaintenanceActivityType,

      @ObjectModel.foreignKey.association: '_ABCIndicator'
      I_MaintenanceOrder._LocationAccountAssignment.ABCIndicator,

      @ObjectModel.foreignKey.association: '_MaintenancePlant'
      I_MaintenanceOrder._LocationAccountAssignment.MaintenancePlant,
      @ObjectModel.foreignKey.association: '_Location'
      I_MaintenanceOrder._LocationAccountAssignment.AssetLocation,
      I_MaintenanceOrder._LocationAccountAssignment.AssetRoom,

      I_MaintenanceOrder.MaintenanceProcessingPhase,

      I_MaintenanceOrder.OperationSystemCondition,

      @ObjectModel.foreignKey.association: '_PlantSection'
      I_MaintenanceOrder._LocationAccountAssignment.PlantSection,

      @ObjectModel.foreignKey.association: '_MainWorkCenterBySemanticKey'
      cast( I_MaintenanceOrder._MainWorkCenter.WorkCenter as gewrk preserving type )                                 as MainWorkCenter,
      @ObjectModel.foreignKey.association: '_MainWorkCenterPlant'
      cast( I_MaintenanceOrder._MainWorkCenter.Plant as wergw preserving type )                                      as MainWorkCenterPlant,
      @ObjectModel.foreignKey.association: '_WorkCenterBySemanticKey'
      I_MaintenanceOrder._LocationAccountAssignment._WorkCenter.WorkCenter,
      @ObjectModel.foreignKey.association: '_WorkCenterPlant'
      I_MaintenanceOrder._LocationAccountAssignment._WorkCenter.Plant                                                as WorkCenterPlant,

      I_MaintenanceOrder.ReferenceElement,

      @ObjectModel.foreignKey.association: '_CostCenter'
      I_MaintenanceOrder._LocationAccountAssignment.CostCenter,
      @ObjectModel.foreignKey.association: '_ControllingArea'
      I_MaintenanceOrder._LocationAccountAssignment.ControllingArea,
      I_MaintenanceOrder._Order.SuperiorProjectNetwork,

      @ObjectModel.foreignKey.association: '_CompanyCode'
      I_MaintenanceOrder._LocationAccountAssignment.CompanyCode,
      @ObjectModel.foreignKey.association: '_BusinessArea'
      I_MaintenanceOrder._LocationAccountAssignment.BusinessArea,
      @ObjectModel.foreignKey.association: '_WBSElementBasicData'
      I_MaintenanceOrder._LocationAccountAssignment.WBSElementInternalID,
      I_MaintenanceOrder._LocationAccountAssignment.MasterFixedAsset,
      I_MaintenanceOrder._LocationAccountAssignment.FixedAsset,

      I_MaintenanceOrder._LocationAccountAssignment.SettlementOrder,
      I_MaintenanceOrder.MaintenanceOrderInternalID,

      I_MaintenanceOrder._Order.IsMarkedForDeletion,

      // Dates and Times
      @Semantics.systemDate.createdAt: true
      I_MaintenanceOrder._Order.CreationDate,
      I_MaintenanceOrder._Order.CreationTime,
      @Semantics.systemDate.lastChangedAt: true
      I_MaintenanceOrder._Order.LastChangeDate,
      I_MaintenanceOrder._Order.LastChangeTime,
      --@Semantics.calendarItem.dtStart: true
      I_MaintenanceOrder._Order.PlannedStartDate,
      I_MaintenanceOrder._Order.PlannedStartTime,
      --@Semantics.calendarItem.dtEnd: true
      I_MaintenanceOrder._Order.PlannedEndDate,
      I_MaintenanceOrder._Order.PlannedEndTime,
      --@Semantics.calendarItem.dtStart: true
      I_MaintenanceOrder._Order.ScheduledBasicStartDate                                                              as ScheduledBasicStartDate,
      I_MaintenanceOrder._Order.ScheduledBasicStartTime,
      --@Semantics.calendarItem.dtEnd: true
      I_MaintenanceOrder._Order.ScheduledBasicEndDate,
      I_MaintenanceOrder._Order.ScheduledBasicEndTime,
      --@Semantics.calendarItem.dtStart: true
      I_MaintenanceOrder._Order.ActualStartDate,
      I_MaintenanceOrder._Order.ActualStartTime,
      --@Semantics.calendarItem.dtEnd: true
      I_MaintenanceOrder._Order.ConfirmedEndDate                                                                     as ConfirmedEndDate,
      I_MaintenanceOrder._Order.ConfirmedEndTime,
      @Semantics.businessDate.at: true
      I_MaintenanceOrder.MaintOrderReferenceDate,

      // Dates and Times as timestamps
      @Semantics.systemDateTime.createdAt: true
      cast( dats_tims_to_tstmp( I_MaintenanceOrder._Order.CreationDate, I_MaintenanceOrder._Order.CreationTime, abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as creation_timestamp )                                          as CreationDateTime,
      @Semantics.systemDateTime.lastChangedAt: true
      cast( I_MaintenanceOrder.LastChangeDateTime as rslastchangedat preserving type )                               as LastChangeDateTime,
      cast( dats_tims_to_tstmp( I_MaintenanceOrder._Order.ScheduledBasicEndDate, I_MaintenanceOrder._Order.ScheduledBasicEndTime, abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as sched_basic_end_timestamp )                                   as ScheduledBasicEndDateTime,
      cast( dats_tims_to_tstmp( I_MaintenanceOrder._Order.ConfirmedEndDate, I_MaintenanceOrder._Order.ConfirmedEndTime, abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as conf_end_timestamp )                                          as ConfirmedEndDateTime,


      // Users
      @Semantics.user.createdBy: true
      I_MaintenanceOrder._Order.CreatedByUser,
      @Semantics.user.lastChangedBy: true
      I_MaintenanceOrder._Order.LastChangedByUser,

      /****************************************************************************************************
      * Technical Object
      ****************************************************************************************************/
      case when Equipment = '' then
                  cast( _LocationAccountAssignment.FunctionalLocation as eams_tec_obj )
           else cast( Equipment as eams_tec_obj ) end                                                                as TechnicalObject,

      @ObjectModel.foreignKey.association: '_TechnicalObjectType'
      coalesce( _Equipment.TechnicalObjectType, _LocationAccountAssignment._FunctionalLocation.TechnicalObjectType ) as TechnicalObjectType,

      @ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
      cast( case when Equipment = '' and _LocationAccountAssignment.FunctionalLocation = '' then ''
            else case when Equipment = '' then 'EAMS_FL'
            else 'EAMS_EQUI' end end as eams_tec_obj_type_value )                                                    as TechObjIsEquipOrFuncnlLoc,

      /****************************************************************************************************
      * Measures
      ****************************************************************************************************/
      // Durations
      //@Semantics.calendarItem.duration: true
      @DefaultAggregation: #SUM
      //@Semantics.quantity.unitOfMeasure: 'OrderDurationUnit' -- not supported by BW for INT4 fields
      durn.DLZNetto                                                                                                  as OrderLeadTimeDuration,
      //@Semantics.calendarItem.duration: true
      @DefaultAggregation: #SUM
      //@Semantics.quantity.unitOfMeasure: 'OrderDurationUnit' -- not supported by BW for INT4 fields
      durn.DLZBrutto                                                                                                 as OrderRuntimeDuration,
      @Semantics.unitOfMeasure: true
      @ObjectModel.foreignKey.association: '_OrderDurationUnit'
      cast( 'TAG' as qeinhtag )                                                                                      as OrderDurationUnit,

      @DefaultAggregation: #SUM
      cast( 1 as eam_num_orders_created )                                                                            as NumberOfCreatedMaintOrders,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder._Order.IsMarkedForDeletion != 'X' then 1
      else 0 end as eam_num_orders )                                                                                 as NumberOfOrders,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder.MaintenanceProcessingPhase = '3'
                     or ( I_MaintenanceOrder.MaintenanceProcessingPhase = '4'
                              and not (I_MaintenanceOrder._StatusObjectStatus[1: IsUserStatus='' and StatusIsInactive = '' and StatusCode = 'I0015' ].StatusCode != '' ) )
                     or I_MaintenanceOrder.MaintenanceProcessingPhase = '5'
                     or ( I_MaintenanceOrder.MaintenanceProcessingPhase = '6' and I_MaintenanceOrder._Order.TechnicalCompletionDate != '00000000' )
                   then 1
      else 0 end as eam_num_orders_compl )                                                                           as NumberOfCompletedMaintOrders,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder.MaintenanceOrderPlanningCode = '1' then 1
      else 0 end as eam_num_orders_planned )                                                                         as NumberOfPlannedMaintOrders,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder.MaintenanceOrderPlanningCode = ' ' then 1
      else 0 end as eam_num_orders_unplanned )                                                                       as NumberOfUnplannedMaintOrders,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder.MaintenanceOrderPlanningCode = '2' then 1
      else 0 end as eam_num_orders_immediate )                                                                       as NumberOfImmediateMaintOrders,


      @DefaultAggregation: #SUM
      cast( case when ( I_MaintenanceOrder.MaintenanceProcessingPhase = '4'
                              and I_MaintenanceOrder._StatusObjectStatus[1: IsUserStatus='' and StatusIsInactive='' and StatusCode = 'I0015' ].StatusCode != '' )
                     or ( I_MaintenanceOrder.MaintenanceProcessingPhase = '6' and I_MaintenanceOrder._Order.TechnicalCompletionDate = '00000000' )
                   then 1
      else 0 end as eam_num_orders_not_to_be_exec )                                                                  as NmbrOfMaintOrdsNotToBeExecuted,

      @DefaultAggregation: #SUM
      cast( case when I_MaintenanceOrder.MaintenanceProcessingPhase = '0'
                    or I_MaintenanceOrder.MaintenanceProcessingPhase = '2'
                    then 1
      else 0 end as eam_num_orders_outstanding )                                                                     as NmbrOfOutstandingMaintOrders,

      @DefaultAggregation: #SUM
      cast( case when ( I_MaintenanceOrder._Order.ConfirmedEndDate != '00000000'
                        and I_MaintenanceOrder._Order.ScheduledBasicEndDate != '00000000'
                        and ( I_MaintenanceOrder._Order.ConfirmedEndDate < I_MaintenanceOrder._Order.ScheduledBasicEndDate
                             or  ( I_MaintenanceOrder._Order.ConfirmedEndDate = I_MaintenanceOrder._Order.ScheduledBasicEndDate
                                 and I_MaintenanceOrder._Order.ConfirmedEndTime <= I_MaintenanceOrder._Order.ScheduledBasicEndTime  ) ) )
                        then 1
      else 0 end as eam_num_orders_compl_on_time )                                                                   as NmbrOfMaintOrdsCompletedOnTime,

      @DefaultAggregation: #SUM
      cast( 0 as eam_num_orders_historical)                                                                          as NmbrOfHistoricalOrders,

      //Technical Fields
      I_MaintenanceOrder.WorkCenterInternalID                                                                        as MainWorkCenterInternalID,
      I_MaintenanceOrder._LocationAccountAssignment.WorkCenterInternalID,
      I_MaintenanceOrder.WorkCenterTypeCode,

      //Associations
      I_MaintenanceOrder._MaintenanceOrderType,
      I_MaintenanceOrder._Equipment,
      I_MaintenanceOrder._Assembly,
      I_MaintenanceOrder._MaintenanceItem,
      I_MaintenanceOrder._MaintenanceNotification,
      I_MaintenanceOrder._MaintenancePlannerGroup,
      I_MaintenanceOrder._MaintenancePlanningPlant,
      _MaintenancePlanPlant,
      I_MaintenanceOrder._MaintenancePlan,
      I_MaintenanceOrder._Order._BillOfOperationsType,
      I_MaintenanceOrder._Order._BillOfOperationsGroup,
      I_MaintenanceOrder._MaintenanceActivityType,
      I_MaintenanceOrder._LocationAccountAssignment._ABCIndicator,
      I_MaintenanceOrder._LocationAccountAssignment._CompanyCode,
      I_MaintenanceOrder._LocationAccountAssignment._MaintenancePlant,
      I_MaintenanceOrder._LocationAccountAssignment._Location,
      I_MaintenanceOrder._LocationAccountAssignment._PlantSection,
      I_MaintenanceOrder._LocationAccountAssignment._FunctionalLocation,
      I_MaintenanceOrder._LocationAccountAssignment._WorkCenter._Plant                                               as _WorkCenterPlant,
      I_MaintenanceOrder._LocationAccountAssignment._CostCenter,
      I_MaintenanceOrder._LocationAccountAssignment._ControllingArea,
      I_MaintenanceOrder._LocationAccountAssignment._BusinessArea,
      I_MaintenanceOrder._MainWorkCenter,
      I_MaintenanceOrder._MainWorkCenter._Plant                                                                      as _MainWorkCenterPlant,
      I_MaintenanceOrder._LocationAccountAssignment._WBSElementBasicData,
      _TechnicalObjectType,
      _TechObjIsEquipOrFuncnlLoc,

      _MainWorkCenterBySemanticKey,
      _WorkCenterBySemanticKey,
      _EquipmentData,
      _FunctionalLocationData,
      _OrderDurationUnit,
      _WorkCenter
}

union all

select from I_MaintOrderHistTechObj
association [0..1] to I_TechObjIsEquipOrFuncnlLoc as _TechObjIsEquipOrFuncnlLoc   on  $projection.TechObjIsEquipOrFuncnlLoc = _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc
association [0..1] to I_TechnicalObjectType       as _TechnicalObjectType         on  $projection.technicalobjecttype = _TechnicalObjectType.TechnicalObjectType
association [0..1] to I_WorkCenterBySemanticKey   as _MainWorkCenterBySemanticKey on  $projection.MainWorkCenter      = _MainWorkCenterBySemanticKey.WorkCenter
                                                                                  and $projection.MainWorkCenterPlant = _MainWorkCenterBySemanticKey.Plant
association [0..1] to I_WorkCenterBySemanticKey   as _WorkCenterBySemanticKey     on  $projection.workcenter      = _WorkCenterBySemanticKey.WorkCenter
                                                                                  and $projection.WorkCenterPlant = _WorkCenterBySemanticKey.Plant
association [0..*] to I_EquipmentData             as _EquipmentData               on  _EquipmentData.Equipment = $projection.Equipment
association [0..1] to I_FunctionalLocationData    as _FunctionalLocationData      on  _FunctionalLocationData.FunctionalLocation = $projection.functionallocation
association [0..1] to I_UnitOfMeasure             as _OrderDurationUnit           on  _OrderDurationUnit.UnitOfMeasure = $projection.OrderDurationUnit
association [0..1] to I_WorkCenter                as _WorkCenter                  on  $projection.WorkCenterInternalID = _WorkCenter.WorkCenterInternalID
                                                                                  and _WorkCenter.WorkCenterTypeCode   = 'A'
association [0..1] to I_MaintenancePlanPlant      as _MaintenancePlanPlant        on  $projection.MaintenancePlanningPlant = _MaintenancePlanPlant.MaintenancePlanningPlant

{
  key I_MaintOrderHistTechObj.MaintenanceOrder,

      cast( 'X' as eam_is_historical_order preserving type )                             as MaintenanceOrderIsHistorical,

      I_MaintOrderHistTechObj.MaintenanceOrderType,

      I_MaintOrderHistTechObj.MaintenanceOrderDesc,

      I_MaintOrderHistTechObj.MaintPriority,
      I_MaintOrderHistTechObj.MaintPriorityType,

      I_MaintOrderHistTechObj._LocationAccountAssignment.FunctionalLocation,
      I_MaintOrderHistTechObj.Equipment,
      I_MaintOrderHistTechObj.Assembly,
      I_MaintOrderHistTechObj._Equipment.Material,
      I_MaintOrderHistTechObj.SerialNumber,

      I_MaintOrderHistTechObj.MaintenanceNotification,

      I_MaintOrderHistTechObj.LeadingOrder,

      I_MaintOrderHistTechObj.MaintenancePlannerGroup,
      @ObjectModel.foreignKey.association: '_MaintenancePlanPlant'
      I_MaintOrderHistTechObj.MaintenancePlanningPlant,

      I_MaintOrderHistTechObj.MaintOrdPersonResponsible,
      I_MaintOrderHistTechObj.MaintenanceRevision,

      I_MaintOrderHistTechObj.MaintenancePlan,
      I_MaintOrderHistTechObj.MaintenanceItem,

      I_MaintOrderHistTechObj.BillOfOperationsType                                       as TaskListType,
      I_MaintOrderHistTechObj.BillOfOperations                                           as TaskListGroup,
      I_MaintOrderHistTechObj.BillOfOperationsVariant                                    as TaskListGroupCounter,

      I_MaintOrderHistTechObj.MaintenanceOrderPlanningCode,

      I_MaintOrderHistTechObj.MaintenanceActivityType,

      I_MaintOrderHistTechObj._LocationAccountAssignment.ABCIndicator,

      I_MaintOrderHistTechObj._LocationAccountAssignment.MaintenancePlant,
      I_MaintOrderHistTechObj._LocationAccountAssignment.AssetLocation,
      I_MaintOrderHistTechObj._LocationAccountAssignment.AssetRoom,

      I_MaintOrderHistTechObj.MaintenanceProcessingPhase,

      I_MaintOrderHistTechObj.OperationSystemCondition,

      I_MaintOrderHistTechObj._LocationAccountAssignment.PlantSection,

      I_MaintOrderHistTechObj._MainWorkCenter.WorkCenter                                 as MainWorkCenter,
      I_MaintOrderHistTechObj._MainWorkCenter.Plant                                      as MainWorkCenterPlant,
      I_MaintOrderHistTechObj._LocationAccountAssignment._WorkCenter.WorkCenter,
      I_MaintOrderHistTechObj._LocationAccountAssignment._WorkCenter.Plant               as WorkCenterPlant,

      // ADPSP is not available HIKO
      ''                                                                                 as ReferenceElement,

      I_MaintOrderHistTechObj._LocationAccountAssignment.CostCenter,
      I_MaintOrderHistTechObj._LocationAccountAssignment.ControllingArea,
      // SuperiorProjectNetwork not available because AUFNT missing in HIKO
      //@ObjectModel.foreignKey.association: '_SuperiorProjectNetwork'
      ''                                                                                 as SuperiorProjectNetwork,

      @ObjectModel.foreignKey.association: '_CompanyCode'
      I_MaintOrderHistTechObj._LocationAccountAssignment.CompanyCode,
      I_MaintOrderHistTechObj._LocationAccountAssignment.BusinessArea,
      @ObjectModel.foreignKey.association: '_WBSElementBasicData'
      I_MaintOrderHistTechObj._LocationAccountAssignment.WBSElementInternalID,

      I_MaintOrderHistTechObj._LocationAccountAssignment.MasterFixedAsset,
      I_MaintOrderHistTechObj._LocationAccountAssignment.FixedAsset,

      I_MaintOrderHistTechObj._LocationAccountAssignment.SettlementOrder,

      I_MaintOrderHistTechObj.MaintenanceOrderInternalID,

      I_MaintOrderHistTechObj.IsMarkedForDeletion,

      // Dates and Times

      I_MaintOrderHistTechObj.CreationDate,
      '000000'                                                                           as CreationTime,

      I_MaintOrderHistTechObj.LastChangeDate,
      '000000'                                                                           as LastChangeTime,

      I_MaintOrderHistTechObj.MaintOrdBasicStartDate                                     as PlannedStartDate,
      '000000'                                                                           as PlannedStartTime,

      I_MaintOrderHistTechObj.MaintOrdBasicEndDate                                       as PlannedEndDate,
      '000000'                                                                           as PlannedEndTime,

      '00000000'                                                                         as ScheduledBasicStartDate,
      '000000'                                                                           as ScheduledBasicStartTime,

      '00000000'                                                                         as ScheduledBasicEndDate,
      '000000'                                                                           as ScheduledBasicEndTime,

      I_MaintOrderHistTechObj.ActualStartDate,
      '000000'                                                                           as ActualStartTime,

      I_MaintOrderHistTechObj.ConfirmedEndDate,
      '000000'                                                                           as ConfirmedEndTime,

      I_MaintOrderHistTechObj.MaintOrderReferenceDate,

      // Dates and Times as timestamps
      cast( dats_tims_to_tstmp( CreationDate, cast('000000' as abap.tims), abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as creation_timestamp )              as CreationDateTime,
      cast( dats_tims_to_tstmp( CreationDate, cast('000000' as abap.tims), abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as rslastchangedat preserving type ) as LastChangeDateTime,
      cast( dats_tims_to_tstmp( cast('00000000' as abap.dats), cast('000000' as abap.tims), abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as sched_basic_end_timestamp )       as ScheduledBasicEndDateTime,
      cast( dats_tims_to_tstmp( ConfirmedEndDate, cast('000000' as abap.tims), abap_system_timezone( $session.client,'NULL' ),
                          $session.client, 'NULL' ) as conf_end_timestamp )              as ConfirmedEndDateTime,

      // Users
      I_MaintOrderHistTechObj.CreatedByUser,
      I_MaintOrderHistTechObj.LastChangedByUser,

      /****************************************************************************************************
      * Technical Object
      ****************************************************************************************************/
      I_MaintOrderHistTechObj.TechnicalObject,

      I_MaintOrderHistTechObj._TechnicalObject.TechnicalObjectType,
      I_MaintOrderHistTechObj.TechObjIsEquipOrFuncnlLoc,

      /****************************************************************************************************
      * Measures
      ****************************************************************************************************/
      // Durations
      // no durations, because ScheduledBasicStartDate is missing
      cast (0 as eam_order_leadtime_in_workdays)                                         as OrderLeadTimeDuration,
      cast (0 as eam_order_runtime_in_cal_days)                                          as OrderRuntimeDuration,
      cast( 'TAG' as qeinhtag )                                                          as OrderDurationUnit,

      cast( 1 as eam_num_orders_created )                                                as NumberOfCreatedMaintOrders,

      cast( case when I_MaintOrderHistTechObj.IsMarkedForDeletion != 'X' then 1
      else 0 end as eam_num_orders )                                                     as NumberOfOrders,

      cast( case when I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '3'
                     or ( I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '4'
                             and not (I_MaintOrderHistTechObj._StatusObjectStatus[1: IsUserStatus='' and StatusIsActive='X' and StatusCode = 'I0015' ].StatusCode != '' ) )
                     or I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '5'
                   then 1
      else 0 end as eam_num_orders_compl )                                               as NumberOfCompletedMaintOrders,

      cast( case when I_MaintOrderHistTechObj.MaintenanceOrderPlanningCode = '1' then 1
      else 0 end as eam_num_orders_planned )                                             as NumberOfPlannedMaintOrders,

      cast( case when I_MaintOrderHistTechObj.MaintenanceOrderPlanningCode = ' ' then 1
      else 0 end as eam_num_orders_unplanned )                                           as NumberOfUnplannedMaintOrders,

      cast( case when I_MaintOrderHistTechObj.MaintenanceOrderPlanningCode = '2' then 1
      else 0 end as eam_num_orders_immediate )                                           as NumberOfImmediateMaintOrders,

      cast( case when ( I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '4'
                              and I_MaintOrderHistTechObj._StatusObjectStatus[1: IsUserStatus='' and StatusIsActive='X' and StatusCode = 'I0015' ].StatusCode != '' )
                   then 1
      else 0 end as eam_num_orders_not_to_be_exec )                                      as NmbrOfMaintOrdsNotToBeExecuted,

      cast( case when I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '0'
                    or I_MaintOrderHistTechObj.MaintenanceProcessingPhase = '2'
                    then 1
      else 0 end as eam_num_orders_outstanding )                                         as NmbrOfOutstandingMaintOrders,

      cast( 0 as eam_num_orders_compl_on_time)                                           as NmbrOfMaintOrdsCompletedOnTime,

      cast( 1 as eam_num_orders_historical)                                              as NmbrOfHistoricalOrders,

      //Technical Fields
      I_MaintOrderHistTechObj.WorkCenterInternalID                                       as MainWorkCenterInternalID,
      I_MaintOrderHistTechObj._LocationAccountAssignment.WorkCenterInternalID,
      I_MaintOrderHistTechObj.WorkCenterTypeCode,

      //Associations
      I_MaintOrderHistTechObj._MaintenanceOrderType,
      I_MaintOrderHistTechObj._Equipment,
      I_MaintOrderHistTechObj._Assembly,
      I_MaintOrderHistTechObj._MaintenanceItem,
      I_MaintOrderHistTechObj._MaintenanceNotification,
      I_MaintOrderHistTechObj._MaintenancePlannerGroup,
      I_MaintOrderHistTechObj._MaintenancePlanningPlant,
      _MaintenancePlanPlant,
      I_MaintOrderHistTechObj._MaintenancePlan,
      I_MaintOrderHistTechObj._BillOfOperationsType,
      I_MaintOrderHistTechObj._BillOfOperationsGroup,
      I_MaintOrderHistTechObj._MaintenanceActivityType,
      I_MaintOrderHistTechObj._LocationAccountAssignment._ABCIndicator,
      I_MaintOrderHistTechObj._LocationAccountAssignment._CompanyCode,
      I_MaintOrderHistTechObj._LocationAccountAssignment._MaintenancePlant,
      I_MaintOrderHistTechObj._LocationAccountAssignment._Location,
      I_MaintOrderHistTechObj._LocationAccountAssignment._PlantSection,
      I_MaintOrderHistTechObj._LocationAccountAssignment._FunctionalLocation,
      I_MaintOrderHistTechObj._LocationAccountAssignment._WorkCenter._Plant              as _WorkCenterPlant,
      I_MaintOrderHistTechObj._LocationAccountAssignment._CostCenter,
      I_MaintOrderHistTechObj._LocationAccountAssignment._ControllingArea,
      I_MaintOrderHistTechObj._LocationAccountAssignment._BusinessArea,
      I_MaintOrderHistTechObj._MainWorkCenter,
      I_MaintOrderHistTechObj._MainWorkCenter._Plant                                     as _MainWorkCenterPlant,
      I_MaintOrderHistTechObj._LocationAccountAssignment._WBSElementBasicData,
      _TechnicalObjectType,
      _TechObjIsEquipOrFuncnlLoc,

      _MainWorkCenterBySemanticKey,
      _WorkCenterBySemanticKey,
      _EquipmentData,
      _FunctionalLocationData,
      _OrderDurationUnit,
      _WorkCenter
}
  • 事务代码:IW33/IW39
    包含维修工单短描述、通知、计划参数、分配、科目分配、计划数据

  • 视图结构:

字段名称 技术名称
订单 MAINTENANCEORDER
为历史 MAINTENANCEORDERISHISTORICAL
订单类型 MAINTENANCEORDERTYPE
描述 MAINTENANCEORDERDESC
优先级 MAINTPRIORITY
优先级类型 MAINTPRIORITYTYPE
功能位置 FUNCTIONALLOCATION
设备 EQUIPMENT
装配 ASSEMBLY
物料 MATERIAL
序列号 SERIALNUMBER
通知 MAINTENANCENOTIFICATION
主要订单 LEADINGORDER
计划人员组 MAINTENANCEPLANNERGROUP
计划工厂 MAINTENANCEPLANNINGPLANT
负责合伙人 MAINTORDPERSONRESPONSIBLE
修订 MAINTENANCEREVISION
维护计划 MAINTENANCEPLAN
维护项目 MAINTENANCEITEM
工序单类型 TASKLISTTYPE
工序清单 TASKLISTGROUP
工序清单变式 TASKLISTGROUPCOUNTER
订单计划标识 MAINTENANCEORDERPLANNINGCODE
活动类型 MAINTENANCEACTIVITYTYPE
ABC 标识 ABCINDICATOR
维护工厂 MAINTENANCEPLANT
位置 ASSETLOCATION
房间 ASSETROOM
阶段 MAINTENANCEPROCESSINGPHASE
系统条件 OPERATIONSYSTEMCONDITION
厂区 PLANTSECTION
主工作中心 MAINWORKCENTER
工厂工作中心 MAINWORKCENTERPLANT
工作中心 WORKCENTER
工厂 WORKCENTERPLANT
参考元素 PM/PS REFERENCEELEMENT
成本中心 COSTCENTER
成本控制范围 CONTROLLINGAREA
子网络 SUPERIORPROJECTNETWORK
公司代码 COMPANYCODE
业务范围 BUSINESSAREA
WBS 要素 WBSELEMENTINTERNALID
资产 MASTERFIXEDASSET
子编号 FIXEDASSET
结算订单 SETTLEMENTORDER
对象编号 MAINTENANCEORDERINTERNALID
删除标记 ISMARKEDFORDELETION
创建日期 CREATIONDATE
创建的时间 CREATIONTIME
更改日期 LASTCHANGEDATE
更改时间 LASTCHANGETIME
基本开始日期 PLANNEDSTARTDATE
开始时间 PLANNEDSTARTTIME
基本完成日期 PLANNEDENDDATE
基本完成时间 PLANNEDENDTIME
按计划开始 SCHEDULEDBASICSTARTDATE
计划开始时间 SCHEDULEDBASICSTARTTIME
计划完工 SCHEDULEDBASICENDDATE
完成时间 SCHEDULEDBASICENDTIME
实际开始 ACTUALSTARTDATE
实际开始 ACTUALSTARTTIME
实际完成 CONFIRMEDENDDATE
实际完成 CONFIRMEDENDTIME
参考日期 MAINTORDERREFERENCEDATE
创建日期/时间 CREATIONDATETIME
已更改 LASTCHANGEDATETIME
计划结束日期/时间 SCHEDULEDBASICENDDATETIME
确认结束日期/时间 CONFIRMEDENDDATETIME
输入者 CREATEDBYUSER
更改人 LASTCHANGEDBYUSER
技术对象 TECHNICALOBJECT
TECHNICALOBJECTTYPE
技术对象类型 TECHOBJISEQUIPORFUNCNLLOC
净提前期 ORDERLEADTIMEDURATION
总运行时间 ORDERRUNTIMEDURATION
ORDERDURATIONUNIT
已创建订单 NUMBEROFCREATEDMAINTORDERS
未删除总数 NUMBEROFORDERS
已完成订单 NUMBEROFCOMPLETEDMAINTORDERS
计划订单 NUMBEROFPLANNEDMAINTORDERS
未计划订单 NUMBEROFUNPLANNEDMAINTORDERS
即时订单 NUMBEROFIMMEDIATEMAINTORDERS
不执行 NMBROFMAINTORDSNOTTOBEEXECUTED
未处理订单 NMBROFOUTSTANDINGMAINTORDERS
准时完成 NMBROFMAINTORDSCOMPLETEDONTIME
历史订单 NMBROFHISTORICALORDERS
工作中心 MAINWORKCENTERINTERNALID
PP工作中心 WORKCENTERINTERNALID
对象类型 WORKCENTERTYPECODE

作者:观兴

出处:https://www.cnblogs.com/guanxing/p/18657261

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载需本人同意,未经同意转载视同接受稿费2元/字

posted @   观兴  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示