C_ObjPgMaintOrderOperation

DDL: C_OBJPGMAINTORDEROPERATION SQL: COBJPGMAINTORDOP Type: view CONSUMPTION

Maintenance Order Operation

C_ObjPgMaintOrderOperation is a Consumption CDS View that provides data about "Maintenance Order Operation" in SAP S/4HANA. It reads from 1 data source (P_ObjPgMaintOrderAndOperation) and exposes 77 fields with key fields MaintenanceOrder, MaintenanceOrderOperation, MaintenanceOrderSubOperation. It has 20 associations to related views.

Data Sources (1)

SourceAliasJoin Type
P_ObjPgMaintOrderAndOperation _MaintenanceOrderOperation from

Associations (20)

CardinalityTargetAliasCondition
[0..*] C_ObjPgMaintOrderOpMaterial _MaintOrderOpMaterial _MaintOrderOpMaterial.MaintenanceOrder = $projection.MaintenanceOrder and _MaintOrderOpMaterial.MaintenanceOrderOperation = $projection.MaintenanceOrderOperation
[0..*] C_ObjPgMaintOrdOpProdnRsceTool _MaintOrderOpProdnRsceTool _MaintOrderOpProdnRsceTool.OrderInternalBillOfOperations = $projection.MaintOrderRoutingNumber and _MaintOrderOpProdnRsceTool.OrderIntBillOfOperationsItem = $projection.MaintOrderOperationCounter
[0..*] C_ObjPgMaintOrdOpCapReq _MaintOrderOpCapReq _MaintOrderOpCapReq.CapacityRequirement = $projection.CapacityRequirement and _MaintOrderOpCapReq.CapacityRequirementItem = $projection.CapacityRequirementItem and _MaintOrderOpCapReq.CapacityRequirementSplit != 0
[0..*] C_ObjPgMaintOrderOperationCost _MaintOrderOpCost _MaintOrderOpCost.MaintOrderOperationInternalID = $projection.MaintOrderOperationInternalID
[0..1] C_ObjPgMaintOrdOpCostAggrgData _MaintOrderOpCostAggrg _MaintOrderOpCostAggrg.MaintOrderOperationInternalID = $projection.MaintOrderOperationInternalID
[0..1] I_MaintOrderTechObj _MaintOrderTechObj _MaintOrderTechObj.MaintenanceOrder = $projection.MaintenanceOrder
[0..1] C_MaintNotificationQuickVw _MaintNotificationQuickView $projection.MaintenanceNotification = _MaintNotificationQuickView.MaintenanceNotification
[0..*] C_MaintenanceObjectStatus _SystemStatus _SystemStatus.StatusObject = $projection.MaintOrderOperationInternalID and _SystemStatus.IsUserStatus = ' '
[0..*] C_MaintenanceObjectStatus _UserStatusWthoutStsNmbr _UserStatusWthoutStsNmbr.StatusObject = $projection.MaintOrderOperationInternalID and _UserStatusWthoutStsNmbr.StatusSequenceNumber = '00' and _UserStatusWthoutStsNmbr.IsUserStatus = 'X'
[0..1] C_MaintObjUserStatusWthStsNmbr _UserStatusWithStatusNumber _UserStatusWithStatusNumber.StatusObject = $projection.MaintOrderOperationInternalID and _UserStatusWithStatusNumber.StatusSequenceNumber != '00' and _UserStatusWithStatusNumber.IsUserStatus = 'X'
[0..1] C_EAMProductQuickVw _EAMProductQuickVw _EAMProductQuickVw.Material = $projection.Assembly
[0..*] I_MaintOpExecStageCodeText _MaintOpExecStageCodeText _MaintOpExecStageCodeText.MaintOperationExecStageCode = $projection.MaintOperationExecStageCode
[0..*] I_CostCenterActivityTypeText _CostCenterActivityTypeText $projection.ControllingArea = _CostCenterActivityTypeText.ControllingArea and $projection.CostCtrActivityType = _CostCenterActivityTypeText.CostCtrActivityType and ValidityStartDate <= $session.system_date and ValidityEndDate >= $session.system_date -- Extensions, do not expose as association:
[0..1] E_MaintenanceOrder _MaintenanceOrderExtension $projection.MaintenanceOrder = _MaintenanceOrderExtension.MaintenanceOrder
[0..1] E_MaintenanceOrderOperation _MaintOrderOperExtension $projection.MaintOrderRoutingNumber = _MaintOrderOperExtension.MaintOrderRoutingNumber and $projection.MaintOrderOperationCounter = _MaintOrderOperExtension.MaintOrderOperationCounter -- Phase Control codes (display only)
[0..*] C_ObjPgMaintObjPhaseControl _ObjPgMaintObjPhaseControl _ObjPgMaintObjPhaseControl.StatusObject = $projection.MaintOrderOperationInternalID and _ObjPgMaintObjPhaseControl.EAMBlockerCodeEntityType = 'OVG' and _ObjPgMaintObjPhaseControl.MaintenanceOrderType = $projection.maintenanceordertype
[0..*] I_EAMProcessPhaseText _EAMOrderOpProcessPhase _EAMOrderOpProcessPhase.EAMProcessPhaseCode = $projection.MaintOrdOpProcessPhaseCode
[0..*] I_EAMProcessSubPhaseText _EAMOrderOpProcessSubPhase _EAMOrderOpProcessSubPhase.EAMProcessSubPhaseCode = $projection.MaintOrdOpProcessSubPhaseCode
[0..1] C_MaintOrdProcessingContextVH _MaintOrderProcessingContextVH _MaintOrderProcessingContextVH.MaintOrderProcessingContext = $projection.MaintOrderProcessingContext
[0..1] I_MaintenanceChecklistType _ChecklistType _ChecklistType.MaintOperationalChecklistType = $projection.MaintOperationalChecklistType

Annotations (23)

NameValueLevelField
AbapCatalog.sqlViewName COBJPGMAINTORDOP view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
ClientHandling.algorithm #SESSION_VARIABLE view
EndUserText.label Maintenance Order Operation view
Metadata.allowExtensions true view
ObjectModel.compositionRoot true view
ObjectModel.createEnabled false view
ObjectModel.deleteEnabled false view
ObjectModel.updateEnabled false view
ObjectModel.draftEnabled false view
ObjectModel.representativeKey MaintenanceOrderOperation view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
Search.searchable true view
VDM.viewType #CONSUMPTION view
UI.headerInfo.description.value OperationDescription view
UI.headerInfo.description.type #STANDARD view
UI.headerInfo.title.value MaintenanceOrderOperation view
UI.headerInfo.title.type #STANDARD view
UI.headerInfo.typeName Maintenance Order Operation view
UI.headerInfo.typeNamePlural Maintenance Order Operations view

Fields (77)

KeyFieldSource TableSource FieldDescription
KEY MaintenanceOrder P_ObjPgMaintOrderAndOperation MaintenanceOrder
KEY MaintenanceOrderOperation P_ObjPgMaintOrderAndOperation MaintenanceOrderOperation Operation
KEY MaintenanceOrderSubOperation P_ObjPgMaintOrderAndOperation MaintenanceOrderSubOperation Suboperation
OperationDescription P_ObjPgMaintOrderAndOperation OperationDescription Operation Description
OperationControlKey P_ObjPgMaintOrderAndOperation OperationControlKey Control Key
OperationControlProfileName Control Key Description
OperationExternalProcessing External Processing
OperationExternalProcName External Processing Text
WorkCenter
WorkCenterText
Plant P_ObjPgMaintOrderAndOperation Plant
PlantName
OperationPlannedWork Planned Work
OperationPlannedWorkUnit
OperationPersonResponsible P_ObjPgMaintOrderAndOperation OperationPersonResponsible Personnel Number
OperationPersonRespName Personnel Name
MaintOrderOperationLongText Long Text
OperationHasLongText P_ObjPgMaintOrderAndOperation OperationHasLongText
TechnicalObjectLabel
TechnicalObjectDescription Technical Object Description
TechObjIsEquipOrFuncnlLoc P_ObjPgMaintOrderAndOperation TechObjIsEquipOrFuncnlLoc Technical Object Type
TechObjIsEquipOrFuncnlLocDesc Technical Object Type Text
MaintenanceOrderType _MaintOrderTechObj MaintenanceOrderType
MaintOrderProcessingContext _MaintOrderTechObj MaintOrderProcessingContext
MaintOrdProcessingContextText
OrderTypeName
AcctAssgmtIsDfndAtOpLvl
OperationDuration P_ObjPgMaintOrderAndOperation OperationDuration Normal Duration
OperationDurationUnit P_ObjPgMaintOrderAndOperation OperationDurationUnit
OperationPurgInfoRecdSearchTxt P_ObjPgMaintOrderAndOperation OperationPurgInfoRecdSearchTxt
OperationRequisitionerName P_ObjPgMaintOrderAndOperation OperationRequisitionerName
OperationGoodsRecipientName P_ObjPgMaintOrderAndOperation OperationGoodsRecipientName Goods Recipient
OpExternalProcessingPrice P_ObjPgMaintOrderAndOperation OpExternalProcessingPrice
OpExternalProcessingCurrency P_ObjPgMaintOrderAndOperation OpExternalProcessingCurrency
OpExternalProcessingPriceUnit P_ObjPgMaintOrderAndOperation OpExternalProcessingPriceUnit Price Unit
OperationTrackingNumber P_ObjPgMaintOrderAndOperation OperationTrackingNumber Requirement Tracking Number
PurchaseRequisition P_ObjPgMaintOrderAndOperation PurchaseRequisition Purchase Requisition
PurchaseRequisitionItem P_ObjPgMaintOrderAndOperation PurchaseRequisitionItem Purchase Requisition Item
OperationPurchasingInfoRecord P_ObjPgMaintOrderAndOperation OperationPurchasingInfoRecord Purchasing Info Record
OperationUnloadingPointName P_ObjPgMaintOrderAndOperation OperationUnloadingPointName
OpPurchaseOutlineAgreement P_ObjPgMaintOrderAndOperation OpPurchaseOutlineAgreement Purchase Outline Agreement
OpPurchaseOutlineAgreementItem P_ObjPgMaintOrderAndOperation OpPurchaseOutlineAgreementItem Purchase Outline Agreement Item
PurchasingGroup P_ObjPgMaintOrderAndOperation PurchasingGroup
PurchasingOrganization P_ObjPgMaintOrderAndOperation PurchasingOrganization Purchasing Organization
OperationSupplier P_ObjPgMaintOrderAndOperation OperationSupplier Supplier
SupplierName Supplier Name
Assembly P_ObjPgMaintOrderAndOperation Assembly
MaterialName Assembly Name
MaterialGroup P_ObjPgMaintOrderAndOperation MaterialGroup
MaterialGroupName Material Group Description
CostElement P_ObjPgMaintOrderAndOperation CostElement
CostElementName Cost Element Name
OperationSystemCondition P_ObjPgMaintOrderAndOperation OperationSystemCondition Operation System Condition
OperationSystemConditionText Operation System Condition Text
CostCtrActivityType P_ObjPgMaintOrderAndOperation CostCtrActivityType
ControllingArea P_ObjPgMaintOrderAndOperation ControllingArea
CostCtrActivityTypeName Activity Type Name
OperationCalculationControl P_ObjPgMaintOrderAndOperation OperationCalculationControl
OperationCalcControlDesc Calculation Key Description
OperationWorkPercent P_ObjPgMaintOrderAndOperation OperationWorkPercent
NumberOfCapacities P_ObjPgMaintOrderAndOperation NumberOfCapacities Number of Required Capacities
MaintOrdOpProcessPhaseCode MaintOrdOpProcessPhaseCode Operation Phase
_EAMOrderOpProcessPhase _EAMOrderOpProcessPhase
MaintOrdOpProcessSubPhaseCode MaintOrdOpProcessSubPhaseCode Operation Subphase
_EAMOrderOpProcessSubPhase _EAMOrderOpProcessSubPhase
MaintObjNmbrOfPhaseCtrlCodes Phase Control Count
MaintOrdTypeHasActvPhaseModel
IsCloudSystem
OperationQuantity Operation Quantity
OperationQuantityUnit Operation Quantity Unit
OpPlndDeliveryDurationInDays Planned Delivery Time in Days
OpErlstSchedldExecStrtDte Earliest Start Date
OpErlstSchedldExecStrtTme Earliest Start Time
OpErlstSchedldExecEndDte Earliest Finish Date
OpErlstSchedldExecEndTme Earliest Finish Time
OpLtstSchedldExecStrtDte Latest Start Date
OpLtstSchedldExecStrtTme Latest Start Time
@AbapCatalog.sqlViewName: 'COBJPGMAINTORDOP'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@AccessControl.privilegedAssociations:  ['_SystemStatus', '_UserStatusWthoutStsNmbr', '_MaintNotificationQuickView', '_EAMProductQuickVw', '_ObjPgMaintObjPhaseControl', '_EAMOrderOpProcessPhase', '_EAMOrderOpProcessSubPhase', '_MaintOrderProcessingContextVH']
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Maintenance Order Operation'
@Metadata.allowExtensions: true
@ObjectModel.compositionRoot: true
@ObjectModel.createEnabled: false
@ObjectModel.deleteEnabled: false
@ObjectModel.updateEnabled: false
@ObjectModel.draftEnabled: false
@ObjectModel.semanticKey: [ 'MaintenanceOrder', 'MaintenanceOrderOperation', 'MaintenanceOrderSubOperation' ]
@ObjectModel.representativeKey: 'MaintenanceOrderOperation'
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL

@Search.searchable: true
@VDM.viewType: #CONSUMPTION


@UI: {
    headerInfo: {
      description: {
          value: 'OperationDescription',
          type: #STANDARD
      },
      title: {
          value: 'MaintenanceOrderOperation',
          type: #STANDARD
      },
      typeName: 'Maintenance Order Operation',
      typeNamePlural: 'Maintenance Order Operations'
    },
    presentationVariant: {
        requestAtLeast:  [ 'TechObjIsEquipOrFuncnlLoc', 'TechnicalObject' ]
    }
}

define view C_ObjPgMaintOrderOperation
  as select from P_ObjPgMaintOrderAndOperation as _MaintenanceOrderOperation

  association [0..*] to C_ObjPgMaintOrderOpMaterial    as _MaintOrderOpMaterial       on  _MaintOrderOpMaterial.MaintenanceOrder          = $projection.MaintenanceOrder
                                                                                      and _MaintOrderOpMaterial.MaintenanceOrderOperation = $projection.MaintenanceOrderOperation
  association [0..*] to C_ObjPgMaintOrdOpProdnRsceTool as _MaintOrderOpProdnRsceTool  on  _MaintOrderOpProdnRsceTool.OrderInternalBillOfOperations = $projection.MaintOrderRoutingNumber
                                                                                      and _MaintOrderOpProdnRsceTool.OrderIntBillOfOperationsItem  = $projection.MaintOrderOperationCounter
  association [0..*] to C_ObjPgMaintOrdOpCapReq        as _MaintOrderOpCapReq         on  _MaintOrderOpCapReq.CapacityRequirement     = $projection.CapacityRequirement
                                                                                      and _MaintOrderOpCapReq.CapacityRequirementItem = $projection.CapacityRequirementItem

                                                                                      and _MaintOrderOpCapReq.CapacityRequirementSplit != 0
  association [0..*] to C_ObjPgMaintOrderOperationCost as _MaintOrderOpCost           on  _MaintOrderOpCost.MaintOrderOperationInternalID = $projection.MaintOrderOperationInternalID
  association [0..1] to C_ObjPgMaintOrdOpCostAggrgData as _MaintOrderOpCostAggrg      on  _MaintOrderOpCostAggrg.MaintOrderOperationInternalID = $projection.MaintOrderOperationInternalID
  association [0..1] to I_MaintOrderTechObj            as _MaintOrderTechObj          on  _MaintOrderTechObj.MaintenanceOrder = $projection.MaintenanceOrder

  association [0..1] to C_MaintNotificationQuickVw     as _MaintNotificationQuickView on  $projection.MaintenanceNotification = _MaintNotificationQuickView.MaintenanceNotification
  // assocation for Systems status UI annotation

  association [0..*] to C_MaintenanceObjectStatus      as _SystemStatus               on  _SystemStatus.StatusObject = $projection.MaintOrderOperationInternalID
                                                                                      and _SystemStatus.IsUserStatus = ' '

  association [0..*] to C_MaintenanceObjectStatus      as _UserStatusWthoutStsNmbr    on  _UserStatusWthoutStsNmbr.StatusObject         = $projection.MaintOrderOperationInternalID
                                                                                      and _UserStatusWthoutStsNmbr.StatusSequenceNumber = '00'
                                                                                      and _UserStatusWthoutStsNmbr.IsUserStatus         = 'X'
  association [0..1] to C_MaintObjUserStatusWthStsNmbr as _UserStatusWithStatusNumber on  _UserStatusWithStatusNumber.StatusObject = $projection.MaintOrderOperationInternalID
                                                                                      and _UserStatusWithStatusNumber.StatusSequenceNumber != '00'
                                                                                      and _UserStatusWithStatusNumber.IsUserStatus = 'X'
  association [0..1] to C_EAMProductQuickVw            as _EAMProductQuickVw          on  _EAMProductQuickVw.Material = $projection.Assembly

  association [0..*] to I_MaintOpExecStageCodeText     as _MaintOpExecStageCodeText   on  _MaintOpExecStageCodeText.MaintOperationExecStageCode = $projection.MaintOperationExecStageCode
  association [0..*] to I_CostCenterActivityTypeText   as _CostCenterActivityTypeText on  $projection.ControllingArea     = _CostCenterActivityTypeText.ControllingArea
                                                                                      and $projection.CostCtrActivityType = _CostCenterActivityTypeText.CostCtrActivityType
                                                                                      and ValidityStartDate               <= $session.system_date
                                                                                      and ValidityEndDate                 >= $session.system_date
  -- Extensions, do not expose as association:
  association [0..1] to E_MaintenanceOrder             as _MaintenanceOrderExtension  on  $projection.MaintenanceOrder = _MaintenanceOrderExtension.MaintenanceOrder
  association [0..1] to E_MaintenanceOrderOperation    as _MaintOrderOperExtension    on  $projection.MaintOrderRoutingNumber    = _MaintOrderOperExtension.MaintOrderRoutingNumber
                                                                                      and $projection.MaintOrderOperationCounter = _MaintOrderOperExtension.MaintOrderOperationCounter
  -- Phase Control codes (display only)
  association [0..*] to C_ObjPgMaintObjPhaseControl    as _ObjPgMaintObjPhaseControl  on  _ObjPgMaintObjPhaseControl.StatusObject             = $projection.MaintOrderOperationInternalID
                                                                                      and _ObjPgMaintObjPhaseControl.EAMBlockerCodeEntityType = 'OVG'
                                                                                      and _ObjPgMaintObjPhaseControl.MaintenanceOrderType     = $projection.maintenanceordertype
  association [0..*] to I_EAMProcessPhaseText          as _EAMOrderOpProcessPhase     on  _EAMOrderOpProcessPhase.EAMProcessPhaseCode = $projection.MaintOrdOpProcessPhaseCode
  association [0..*] to I_EAMProcessSubPhaseText       as _EAMOrderOpProcessSubPhase  on  _EAMOrderOpProcessSubPhase.EAMProcessSubPhaseCode = $projection.MaintOrdOpProcessSubPhaseCode

  association [0..1] to C_MaintOrdProcessingContextVH  as _MaintOrderProcessingContextVH  on  _MaintOrderProcessingContextVH.MaintOrderProcessingContext = $projection.MaintOrderProcessingContext

  association [0..1] to I_MaintenanceChecklistType     as _ChecklistType              on  _ChecklistType.MaintOperationalChecklistType = $projection.MaintOperationalChecklistType
{
      @Search.defaultSearchElement: true
      @UI.textArrangement: #TEXT_FIRST
  key _MaintenanceOrderOperation.MaintenanceOrder,

      @EndUserText.label: 'Operation'
      @Search.defaultSearchElement: true
      @UI: {
        lineItem: { position: 10, importance: #HIGH }
      }
  key _MaintenanceOrderOperation.MaintenanceOrderOperation,

      @EndUserText.label: 'Suboperation'
      @EndUserText.quickInfo: 'Suboperation'
      @UI: {
          fieldGroup: { qualifier: 'HeaderOrder', position: 20, importance: #HIGH },
          lineItem: { position: 20, importance: #HIGH }
      }
  key _MaintenanceOrderOperation.MaintenanceOrderSubOperation,

      @EndUserText.label: 'Operation Description'
      @UI: {
          lineItem: { position: 30, importance: #HIGH }
      }
      @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8}
      @Semantics.text: true
      _MaintenanceOrderOperation.OperationDescription,

      @EndUserText.label: 'Control Key'
      @ObjectModel.text.element: 'OperationControlProfileName'
      @UI: {
        lineItem: { position: 40, importance: #HIGH },
        fieldGroup: { qualifier: 'OperationDetails2', position: 30, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.OperationControlKey,

      @EndUserText.label: 'Control Key Description'
      _MaintenanceOrderOperation._OperationControlKey._Text[1:Language = $session.system_language].OperationControlProfileName,

      @EndUserText.label: 'External Processing'
      @ObjectModel.text.element: 'OperationExternalProcName'
      @UI: {
        fieldGroup: { qualifier: 'HeaderTechObj', groupLabel: 'Technical Object Details', position: 40, importance: #HIGH },
        textArrangement: #TEXT_ONLY
      }
      _MaintenanceOrderOperation._OperationControlKey.OperationExternalProcessing,
      @EndUserText.label: 'External Processing Text'
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationControlKey._OperationExternalProcessing._Text[1:Language = $session.system_language].OperationExternalProcName,

      @ObjectModel.text.element: 'WorkCenterText'
      @UI: {
        lineItem: { position: 50, importance: #HIGH },
        fieldGroup: { qualifier: 'OperationDetails2', position: 10, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation._WorkCenter.WorkCenter,

      _MaintenanceOrderOperation._WorkCenter._Text[1:Language = $session.system_language].WorkCenterText,

      @ObjectModel.text.element: 'PlantName'
      @UI: {
        lineItem: { position: 60, importance: #HIGH },
        fieldGroup: { qualifier: 'OperationDetails2', position: 20, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.Plant,

      _MaintenanceOrderOperation._Plant.PlantName,

      @EndUserText.label: 'Planned Work'
      @Semantics.quantity.unitOfMeasure: 'OperationPlannedWorkUnit'
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails3', position: 10, importance: #HIGH },
        lineItem: { position: 70, importance: #HIGH }
      }
      _MaintenanceOrderOperation._OperationPlanningValues.OperationPlannedWork,

      _MaintenanceOrderOperation._OperationPlanningValues.OperationPlannedWorkUnit,

      @EndUserText.label: 'Personnel Number'
      @ObjectModel.text.element:  [ 'OperationPersonRespName' ]
      @UI: {
        lineItem: { position: 80, importance: #HIGH },
        fieldGroup: { qualifier: 'OperationDetails3', position: 60, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.OperationPersonResponsible,

      @EndUserText.label: 'Personnel Name'
      _MaintenanceOrderOperation._PersonResponsible.PersonFullName                                                              as OperationPersonRespName,

      @EndUserText.label: 'Long Text'
      @Semantics.text: true
      @UI: {
        fieldGroup: [ { qualifier:'General', position:10, importance: #HIGH } ]
      }
      @ObjectModel.virtualElement
      @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_EAM_ORDER_LTXT_EXIT'
      cast (' ' as abap.sstring( 1333 ))                                                                                        as MaintOrderOperationLongText,

      @UI.hidden: true
      _MaintenanceOrderOperation.OperationHasLongText,

      @Consumption.semanticObject: 'MaintenanceObject'
      @ObjectModel.text.element:  [ 'TechnicalObjectDescription' ]
      @UI: {
        fieldGroup: [{ qualifier: 'HeaderTechObj', groupLabel: 'Technical Object Details', position: 10, importance: #HIGH },
                     { qualifier: 'OperationDetails1', position: 30, importance: #HIGH }],
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation._TechnicalObject.TechnicalObjectLabel                                                          as TechnicalObjectLabel,

      @EndUserText.label: 'Technical Object Description'
      _MaintenanceOrderOperation._TechnicalObject._TechnicalObjectText[1:Language = $session.system_language].TechnicalObjectDescription,

      @EndUserText.label: 'Technical Object Type'
      @ObjectModel.text.element: [ 'TechObjIsEquipOrFuncnlLocDesc' ]
      @UI.textArrangement: #TEXT_FIRST
      _MaintenanceOrderOperation.TechObjIsEquipOrFuncnlLoc,

      @EndUserText.label: 'Technical Object Type Text'
      _MaintenanceOrderOperation._TechObjIsEquipOrFuncnlLoc._Text[1:Language=$session.system_language].TechObjIsEquipOrFuncnlLocDesc,

      @ObjectModel.text.element:  [ 'OrderTypeName' ]
      @UI: {
        fieldGroup: [{ qualifier: 'HeaderTechObj', position: 20, importance: #HIGH },
                     { qualifier: 'OperationDetails1', position: 10, importance: #HIGH }],
        textArrangement: #TEXT_FIRST
      }
      _MaintOrderTechObj.MaintenanceOrderType,

      @ObjectModel.foreignKey.association: '_MaintOrderProcessingContextVH'
      @ObjectModel.text.element: ['MaintOrdProcessingContextText']
      @Consumption :
      {
        valueHelpDefinition: [{ entity.name: 'C_MaintOrdProcessingContextVH',
                                 entity.element: 'MaintOrderProcessingContext' }],
        filter.multipleSelections: true,
        filter.selectionType: #SINGLE
      }
      @UI:{
        fieldGroup: {
          importance: #HIGH,
          groupLabel: 'Context',
          qualifier: 'HeaderTechObj',
          position: 30
        },
        textArrangement: #TEXT_FIRST
      }
      _MaintOrderTechObj.MaintOrderProcessingContext as MaintOrderProcessingContext,

      @UI.hidden: true
      _MaintOrderTechObj._MaintOrderProcessingContext._Text[1:Language = $session.system_language].MaintOrdProcessingContextText,

      _MaintOrderTechObj._Order._OrderType._Text[1:Language = $session.system_language].OrderTypeName,

      @UI.hidden: true
      _MaintOrderTechObj._Order._OrderTypeDetails.AcctAssgmtIsDfndAtOpLvl,

      @EndUserText.label: 'Normal Duration'
      @Semantics.quantity.unitOfMeasure: 'OperationDurationUnit'
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails3', position: 20, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationDuration,

      _MaintenanceOrderOperation.OperationDurationUnit,

      @UI: {
        fieldGroup: { qualifier: 'ExternalData1', position:40, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationPurgInfoRecdSearchTxt,

      @UI: {
        fieldGroup: { qualifier: 'ExternalData3', groupLabel: 'External Data 2', position:20, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationRequisitionerName,

      @EndUserText.label: 'Goods Recipient'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData3', groupLabel: 'External Data 3', position:10, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationGoodsRecipientName,

      @Semantics.amount.currencyCode: 'OpExternalProcessingCurrency'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData1', position:20, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OpExternalProcessingPrice,

      _MaintenanceOrderOperation.OpExternalProcessingCurrency,

      @EndUserText.label: 'Price Unit'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData1', position:30, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OpExternalProcessingPriceUnit,

      @EndUserText.label: 'Requirement Tracking Number'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData3', position:50, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationTrackingNumber,

      @Consumption.semanticObject: 'PurchaseRequisition'
      @EndUserText.label: 'Purchase Requisition'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData4', position:30, importance: #HIGH }
      }
      _MaintenanceOrderOperation.PurchaseRequisition,

      @Consumption.semanticObject: 'PurchaseRequisitionItem'
      @EndUserText.label: 'Purchase Requisition Item'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData4', position:40, importance: #HIGH }
      }
      _MaintenanceOrderOperation.PurchaseRequisitionItem,

      @EndUserText.label: 'Purchasing Info Record'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData2', position:60, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationPurchasingInfoRecord,

      @UI: {
        fieldGroup: { qualifier: 'ExternalData3', position:40, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationUnloadingPointName,

      @EndUserText.label: 'Purchase Outline Agreement'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData2', position:30, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OpPurchaseOutlineAgreement,

      @EndUserText.label: 'Purchase Outline Agreement Item'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData2', position:40, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OpPurchaseOutlineAgreementItem,

      @UI: {
        fieldGroup: { qualifier: 'ExternalData2', position:10, importance: #HIGH }
      }
      _MaintenanceOrderOperation.PurchasingGroup,

      @EndUserText.label: 'Purchasing Organization'
      @UI: {
         fieldGroup: { qualifier: 'ExternalData2', position:20, importance: #HIGH }
      }
      _MaintenanceOrderOperation.PurchasingOrganization,

      @EndUserText.label: 'Supplier'
      @EndUserText.quickInfo: 'Supplier'
      @ObjectModel.text.element:  [ 'SupplierName' ]
      @UI: {
        fieldGroup: { qualifier: 'ExternalData2', position:50, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationSupplier,

      @EndUserText.label: 'Supplier Name'
      _MaintenanceOrderOperation._Supplier.SupplierName,

      @Consumption.semanticObject: 'Material'
      @ObjectModel.text.element:  [ 'MaterialName' ]
      @ObjectModel: { foreignKey.association: '_EAMProductQuickVw', mandatory: true}
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails1', position: 40, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.Assembly,

      @EndUserText.label: 'Assembly Name'
      @EndUserText.quickInfo: 'Assembly Name'
      _MaintenanceOrderOperation._Assembly._Text[1:Language = $session.system_language].MaterialName,

      @ObjectModel.text.element:  [ 'MaterialGroupName' ]
      @UI: {
        fieldGroup: { qualifier: 'ExternalData4', position:10, importance: #HIGH }
           }
      _MaintenanceOrderOperation.MaterialGroup,

      @EndUserText.label: 'Material Group Description'
      _MaintenanceOrderOperation._MaterialGroup._Text[1:Language = $session.system_language].MaterialGroupName,

      @ObjectModel.text.element:  [ 'CostElementName' ]
      @UI: {
        fieldGroup: { qualifier: 'ExternalData4', position:20, importance: #HIGH }
            }
      _MaintenanceOrderOperation.CostElement,

      @EndUserText.label: 'Cost Element Name'
      @EndUserText.quickInfo: 'Cost Element Name'
      _MaintenanceOrderOperation._CostElement._Text[1:Language = $session.system_language].CostElementName,

      @EndUserText.label: 'Operation System Condition'
      @ObjectModel.text.element:  [ 'OperationSystemConditionText' ]
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails1', position: 50, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.OperationSystemCondition,

      @EndUserText.label: 'Operation System Condition Text'
      _MaintenanceOrderOperation._OperationSystemCondition._Text[1:Language = $session.system_language].OperationSystemConditionText,

      @ObjectModel.text.element:  [ 'CostCtrActivityTypeName' ]
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails2', position: 30, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.CostCtrActivityType,
      @Consumption.hidden: true
      _MaintenanceOrderOperation.ControllingArea,
      @EndUserText.label: 'Activity Type Name'
      @EndUserText.quickInfo: 'Activity Type Name'
      _CostCenterActivityTypeText[1:Language = $session.system_language].CostCtrActivityTypeName,

      @ObjectModel.text.element:  [ 'OperationCalcControlDesc' ]
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails2', position: 40, importance: #HIGH },
        textArrangement: #TEXT_FIRST
      }
      _MaintenanceOrderOperation.OperationCalculationControl,

      @EndUserText.label: 'Calculation Key Description'
      _MaintenanceOrderOperation._OperationCalculationControl._Text[1:Language = $session.system_language].OperationCalcControlDesc,

      @UI: {
        fieldGroup: { qualifier: 'OperationDetails3', position: 40, importance: #HIGH }
      }
      _MaintenanceOrderOperation.OperationWorkPercent,

      @EndUserText.label: 'Number of Required Capacities'
      @UI: {
        fieldGroup: { qualifier: 'OperationDetails3', position: 50, importance: #HIGH }
      }
      _MaintenanceOrderOperation.NumberOfCapacities,

      @EndUserText.label: 'System Status'
      @ObjectModel: {
        virtualElement: true,
        virtualElementCalculatedBy: 'ABAP:CL_EAM_ORDOP_STS_EXIT'
      }
      @Semantics.text: true
      @UI: {
         fieldGroup: { qualifier: 'HeaderStat', position:10, groupLabel: 'Header Status', importance: #HIGH },
         lineItem: { position: 90, importance: #HIGH }
      }
      cast ('' as vdm_j_system_status_concat_t)                                                                                 as ConcatenatedActiveSystStsName,

      @Consumption.filter.hidden
      @EndUserText.label: 'User Status'
      @ObjectModel: {
        virtualElement: true,
        virtualElementCalculatedBy: 'ABAP:CL_EAM_ORDOP_STS_EXIT'
      }
      @UI: {
        fieldGroup: { qualifier: 'HeaderStat', position:20, importance: #HIGH }
      }
      cast ('' as vdm_j_user_status_concat_t)                                                                                   as ConcatenatedActiveUserStsName,
      @Feature: 'BF:EAM_PHASE_MODEL_PROCESSING'
      @EndUserText.label: 'Operation Phase'
      @Consumption :
      {
        valueHelpDefinition: [{ entity.name: 'C_MaintOrdOpProcPhaseVH',
                                 entity.element: 'MaintOrdOpProcessPhaseCode' }],
        filter.hidden: true
      }
      @UI :
      {
        textArrangement: #TEXT_ONLY,
        fieldGroup: {
          qualifier: 'HeaderStat',
          position:30,
          importance: #HIGH
          }
      }
      @ObjectModel.foreignKey.association: '_MaintOrdOpProcessPhase'
      @ObjectModel.text.association: '_EAMOrderOpProcessPhase'
      @ObjectModel.text.control: #ASSOCIATED_TEXT_UI_HIDDEN
      MaintOrdOpProcessPhaseCode,

      @Consumption.hidden:true
      _EAMOrderOpProcessPhase,
      @Feature: 'BF:EAM_PHASE_MODEL_PROCESSING'
      @EndUserText.label: 'Operation Subphase'
      @UI :
      {
        textArrangement: #TEXT_ONLY,
        fieldGroup: {
          qualifier: 'HeaderStat',
          position:40,
          importance: #HIGH }
      }
      @ObjectModel.foreignKey.association: '_MaintOrdOpProcessSubPhase'
      @ObjectModel.text.association: '_EAMOrderOpProcessSubPhase'
      @ObjectModel.text.control: #ASSOCIATED_TEXT_UI_HIDDEN
      MaintOrdOpProcessSubPhaseCode,

      @Consumption.hidden:true
      _EAMOrderOpProcessSubPhase,

      //      @EndUserText.label: 'Opeartion SubPhase Name'

      //      _MaintenanceOrderOperation._Supplier.SupplierName,

      @Feature: 'BF:EAM_PHASE_MODEL_PROCESSING'
      @EndUserText.label: 'Phase Control Count'
      @ObjectModel: {
        virtualElement: true,
        virtualElementCalculatedBy: 'ABAP:CL_EAM_PHASECTL_ORD_OP_EXIT'
      }
      @UI:{
          fieldGroup: {
                importance: #HIGH,
                qualifier: 'HeaderStat',
                position: 50
          }
      }
      cast('0' as abap.int2)                                                                                                    as MaintObjNmbrOfPhaseCtrlCodes,

      @UI.hidden: true
      @ObjectModel : {
        readOnly : true,
        virtualElement: true,
        virtualElementCalculatedBy: 'ABAP:CL_EAM_OBJPG_MNTORD_PHMOD_EXIT'
      }
      cast('' as eams_ime_active preserving type)                                                                               as MaintOrdTypeHasActvPhaseModel,

      // Cloud system indicator to switch visibility of User Status

      @UI.hidden: true
      @ObjectModel : {
        readOnly : true,
        virtualElement: true,
        virtualElementCalculatedBy: 'ABAP:CL_EAM_OBJPG_MNTORD_PHMOD_EXIT'
      }
      cast( '' as char1 )                                                                                                       as IsCloudSystem,

      @EndUserText.label: 'Operation Quantity'
      @Semantics.quantity.unitOfMeasure: 'OperationQuantityUnit'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData1', groupLabel: 'External Data 1', position:10, importance: #HIGH }
      }
      _MaintenanceOrderOperation._OperationPlanningValues.OperationQuantity,

      @EndUserText.label: 'Operation Quantity Unit'
      _MaintenanceOrderOperation._OperationPlanningValues.OperationQuantityUnit,

      @EndUserText.label: 'Planned Delivery Time in Days'
      @UI: {
        fieldGroup: { qualifier: 'ExternalData3', position:30, importance: #HIGH }
      }
      _MaintenanceOrderOperation._OperationPlanningValues.OpPlndDeliveryDurationInDays,

      @EndUserText.label: 'Earliest Start Date'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', groupLabel: 'Planned Times 1', position:10, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecStrtDte,

      @EndUserText.label: 'Earliest Start Time'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', position:20, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecStrtTme,

      @EndUserText: {label: 'Earliest Start', quickInfo: 'Earliest Start Date and Time'}
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', position:50, importance: #HIGH }
      }
      cast(dats_tims_to_tstmp( _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecStrtDte,
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecStrtTme,
      abap_system_timezone($session.client,'NULL'), $session.client,'NULL') as timestamp)                                       as OpErlstSchedldExecStrtDteTme,

      @EndUserText.label: 'Earliest Finish Date'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', position:30, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecEndDte,

      @EndUserText.label: 'Earliest Finish Time'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', position:40, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecEndTme,

       @EndUserText:{label: 'Earliest Finish',quickInfo: 'Earliest Finish Date and Time'}
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes1', position:60, importance: #HIGH }
      }
      cast(dats_tims_to_tstmp( _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecEndDte,
      _MaintenanceOrderOperation._OperationPlanningValues.OpErlstSchedldExecEndTme,
      abap_system_timezone($session.client,'NULL'), $session.client,'NULL') as timestamp)                                       as OpErlstSchedldExecEndDteTme,

      @EndUserText.label: 'Latest Start Date'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes2', groupLabel: 'Planned Times 2', position:10, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpLtstSchedldExecStrtDte,

      @EndUserText.label: 'Latest Start Time'
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes2', position:20, importance: #HIGH }
      }
      @UI.hidden: true
      _MaintenanceOrderOperation._OperationPlanningValues.OpLtstSchedldExecStrtTme,

      @EndUserText: {label: 'Latest Start', quickInfo: 'Latest Start Date and Time'}
      @UI: {
        fieldGroup: { qualifier: 'PlannedTimes2', position:50, importance: #HIGH }
      }
      cast(dats_tims_to_tstmp( _MaintenanceOrderOperation._OperationPlanningValues.OpLtstSchedldExecStrtDte,
      _MaintenanceOrderOperation._OperationPlanningValues.OpLtstSchedldExecStrtTme,
      abap_system_timezone($session.client,'NULL'), $session.client,'NULL') as timestamp)