I_MAINTENANCEORDERCOMPONENT

CDS View

Maintenance Order Component

I_MAINTENANCEORDERCOMPONENT is a CDS View in S/4HANA. Maintenance Order Component. 2 CDS views read from this table.

CDS Views using this table (2)

ViewTypeJoinVDMDescription
P_MaintOrdCompScheduleLine view inner COMPOSITE Schedule Lines for directly procured components
R_MaintOrderOpComponentTP view_entity from TRANSACTIONAL Maintenance Order Operation Component TP
@AbapCatalog.sqlViewName: 'IMAINTORDCOMP'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Maintenance Order Component'
@VDM.viewType: #BASIC

@ObjectModel.representativeKey: 'MaintenanceOrderComponent'
@ObjectModel.semanticKey:  [ 'MaintenanceOrder', 'MaintenanceOrderOperation', 'MaintenanceOrderComponent' ]

@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #B
@ObjectModel.usageType.sizeCategory: #XL
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'I_MaintenanceOrderComponent_2'
define view I_MaintenanceOrderComponent
  as select from           resb
    left outer to one join aufk               on resb.aufnr = aufk.aufnr
    left outer join        rsdb as rsdb_banfn on  rsdb_banfn.rsnum =  resb.rsnum
                                              and rsdb_banfn.rspos =  resb.rspos
                                              and rsdb_banfn.rsart =  resb.rsart
                                              and rsdb_banfn.banfn <> ''
    left outer join        rsadd              on  resb.rsnum = rsadd.rsnum
                                              and resb.rspos = rsadd.rspos
                                              and resb.rsart = rsadd.rsart
  association [0..1] to I_MaintenanceOrder            as _MaintenanceOrder            on  _MaintenanceOrder.MaintenanceOrder = $projection.MaintenanceOrder
  association [0..1] to I_MaintenanceOrderOperation   as _MaintenanceOrderOperation   on  _MaintenanceOrderOperation.MaintenanceOrder           = $projection.MaintenanceOrder
                                                                                      and _MaintenanceOrderOperation.MaintOrderRoutingNumber    = $projection.MaintOrderRoutingNumber
                                                                                      and _MaintenanceOrderOperation.MaintOrderOperationCounter = $projection.MaintOrderOperationCounter
  association [0..1] to I_Material                    as _Material                    on  _Material.Material = $projection.Material
  association [0..*] to I_MaterialText                as _MaterialText                on  _MaterialText.Material = $projection.Material
  association [0..1] to I_MaterialGroup               as _MaterialGroup               on  _MaterialGroup.MaterialGroup = $projection.MaterialGroup
  association [0..1] to I_StorageLocation             as _StorageLocation             on  _StorageLocation.Plant           = $projection.Plant
                                                                                      and _StorageLocation.StorageLocation = $projection.StorageLocation
  association [0..1] to I_Supplier                    as _Supplier                    on  _Supplier.Supplier = $projection.Supplier
  association [0..1] to I_StatusObject                as _StatusObject                on  _StatusObject.StatusObject = $projection.MaintOrderComponentInternalID
  association [0..1] to I_Plant                       as _Plant                       on  _Plant.Plant = $projection.Plant
  association [0..1] to I_PMUnitOfMeasureVH           as _UnitOfMeasure               on  _UnitOfMeasure.UnitOfMeasure = $projection.BaseUnit
  association [0..1] to I_PMUnitOfMeasureVH           as _UnitOfMeasureEntry          on  _UnitOfMeasureEntry.UnitOfMeasure = $projection.UnitOfEntry
  association [0..1] to I_SafetyRelevance             as _SafetyRelevance             on  _SafetyRelevance.SafetyRelevantObjectType = 'MA'
                                                                                      and _SafetyRelevance.SafetyRelevantObject     = $projection.Material
  association [0..*] to I_BomItemCategoryText         as _ItemCategoryText            on  _ItemCategoryText.BillOfMaterialItemCategory = $projection.ItemCategory
  association [0..1] to I_Purchaserequisitionitem     as _PurchaseRequisitionItem     on  _PurchaseRequisitionItem.PurchaseRequisition     = $projection.PurchaseRequisition
                                                                                      and _PurchaseRequisitionItem.PurchaseRequisitionItem = $projection.PurchaseRequisitionItem
  association [0..1] to I_Indicator                   as _ReservationIsFinallyIssued  on  $projection.ReservationIsFinallyIssued = _ReservationIsFinallyIssued.IndicatorValue
  association [0..1] to I_ProductTypeCode             as _ProductTypeCode             on  _ProductTypeCode.ProductTypeCode = $projection.ProductTypeCode
  association [0..1] to I_ReservationItem             as _ReservationItem             on  _ReservationItem.Reservation     = $projection.Reservation
                                                                                      and _ReservationItem.ReservationItem = $projection.ReservationItem
                                                                                      and _ReservationItem.RecordType      = $projection.ReservationType
  association [0..1] to I_PurReqnOrResvnGeneration    as _PurReqnOrResvnGeneration    on  $projection.PurReqnOrResvnGeneration = _PurReqnOrResvnGeneration.PurReqnOrResvnGeneration
  association [0..*] to I_StatusObjectActiveStatus    as _StatusObjectActiveStatus    on  $projection.MaintOrderComponentInternalID = _StatusObjectActiveStatus.StatusObject
  association [0..*] to I_MaintOrdCompDelivDateAdjmtT as _MaintOrdCompDelivDateAdjmtT on  $projection.MaintOrdCompDeliveryDateAdjmt = _MaintOrdCompDelivDateAdjmtT.MaintOrdCompDeliveryDateAdjmt
{
      @ObjectModel.foreignKey.association: '_MaintenanceOrder'
  key resb.aufnr                                               as MaintenanceOrder,
  key resb.vornr                                               as MaintenanceOrderOperation,
      //  key resb.uvorn                                              as MaintenanceOrderSubOperation,

  key resb.posnr                                               as MaintenanceOrderComponent,
      resb.rsnum                                               as Reservation,
      @ObjectModel.foreignKey.association: '_ReservationItem'
      resb.rspos                                               as ReservationItem,
      resb.rsart                                               as ReservationType,
      resb.uvorn                                               as MaintenanceOrderSubOperation,

      @ObjectModel.text.association: '_MaterialText'
      resb.matnr                                               as Material,
      resb.potx1                                               as ComponentDescription,

      @Semantics.quantity.unitOfMeasure: 'BaseUnit'
      @DefaultAggregation: #NONE
      resb.bdmng                                               as RequirementQuantityInBaseUnit,
      @ObjectModel.foreignKey.association: '_UnitOfMeasure'
      @Semantics.unitOfMeasure:true
      resb.meins                                               as BaseUnit,

      @Semantics.quantity.unitOfMeasure: 'UnitOfEntry'
      @DefaultAggregation: #NONE
      resb.erfmg                                               as QuantityInUnitOfEntry,
      @ObjectModel.foreignKey.association: '_UnitOfMeasureEntry'
      @Semantics.unitOfMeasure:true
      resb.erfme                                               as UnitOfEntry,

      resb.bdter                                               as RequirementDate,
      resb.bdztp                                               as RequirementTime,
      resb.lifnr                                               as Supplier,
      @ObjectModel.foreignKey.association: '_Plant'
      resb.werks                                               as Plant,
      @ObjectModel.foreignKey.association: '_StorageLocation'
      resb.lgort                                               as StorageLocation,
      //      @ObjectModel.foreignKey.association: '_MaintenanceOrderOperation'

      resb.aufpl                                               as MaintOrderRoutingNumber,

      resb.aplzl                                               as MaintOrderOperationCounter,

      resb.objnr                                               as MaintOrderComponentInternalID,
      @ObjectModel.text.association: '_ItemCategoryText'
      resb.postp                                               as ItemCategory,
      @ObjectModel.foreignKey.association: '_MaterialGroup'
      resb.matkl                                               as MaterialGroup,
      -- careful: XLOEK refers to the reservation! After confirmation of order, reservation is always "deleted"
      -- --> see logic in composite view, where we check the system status
      resb.xloek                                               as IsDeleted,
      @Semantics.quantity.unitOfMeasure: 'BaseUnit'
      @DefaultAggregation: #NONE
      resb.enmng                                               as QuantityWithdrawnInBaseUnit,

      @ObjectModel.foreignKey.association: '_PurReqnOrResvnGeneration'
      cast(
        case
            when resb.no_disp = '1' then '1'
            when resb.no_disp = 'X' then '2'
            when resb.no_disp = '' then '3'
        end as purreqnorresvngeneration)                       as PurReqnOrResvnGeneration,


      @ObjectModel.foreignKey.association: '_ReservationIsFinallyIssued'
      resb.kzear                                               as ReservationIsFinallyIssued,

      //      cast(

      //        case when resb.dbskz = 'F' then 'X' else ' ' end as xfeld

      //      )                                             as MaterialCompIsProcuredDirectly,

      cast(
        case when resb.dbskz = 'F' then 'X'
        end as xfeld )                                         as MaterialCompIsProcuredDirectly,
      //_DirectProcurement.PurchaseRequisition,

      //_DirectProcurement.PurchaseRequisitionItem,

      //      coalesce( rsdb_banfn.banfn, resb.banfn )      as PurchaseRequisition,

      //      coalesce( rsdb_banfn.bnfpo, resb.bnfpo )      as PurchaseRequisitionItem,

      rsdb_banfn.banfn                                         as PurchaseRequisition,
      rsdb_banfn.bnfpo                                         as PurchaseRequisitionItem,

      @ObjectModel.foreignKey.association: '_ProductTypeCode'
      resb.producttype                                         as ProductTypeCode,
      resb.startdate                                           as PerformancePeriodStartDate,
      resb.enddate                                             as PerformancePeriodEndDate,
      resb.performanceperiodstarttime                          as PerformancePeriodStartTime,
      resb.performanceperiodendtime                            as PerformancePeriodEndTime,
      @Semantics.quantity.unitOfMeasure: 'LeanServiceDurationUnit'
      resb.serviceduration                                     as LeanServiceDuration,
      resb.servicedurationunit                                 as LeanServiceDurationUnit,
      resb.funct                                               as DistributionFunction,
      cast(
        case
            when resb.kzmpf = 'X' then 'M'
            when resb.funct = 'S10' then ''
            when resb.funct = 'S50' then 'X'
        end as cc4_delvry_date_adj preserving type )           as MaintOrdCompDeliveryDateAdjmt,
      resb.operationworkcenteralignment                        as SrvcSchedgIsAlignedWthOpWrkCtr,
      resb.serviceperformer                                    as ServicePerformer,
      resb.bwart                                               as GoodsMovementType,

      @Semantics.quantity.unitOfMeasure: 'BaseUnit'
      cast(resb.enmng as pph_enmng preserving type)            as WithdrawnQuantity,
      @Semantics.quantity.unitOfMeasure: 'BaseUnit'
      cast(resb.vmeng as pph_vmeng preserving type)            as ConfirmedAvailableQuantity,
      // Debit-Credit Indicator

      resb.shkzg                                               as MaintOrderCompDebitCreditCode,
      -- Field Logistics:
      resb.fldlogsdelivisheldonshore                           as FldLogsDelivIsHeldOnShore,
      resb.fldlogssupplyprocess                                as FldLogsSupplyProcess,

      //      case when resb.banfn != '' then resb.banfn

      //        else rsdb_banfn.banfn end                                as  PurchaseRequisition,

      //

      //      case when resb.bnfpo != '00000' then resb.bnfpo

      //        else rsdb_banfn.bnfpo end                                as  PurchaseRequisitionItem,

      //

      //      '' as PurchaseOrder,

      //      '' as PurchaseOrderItem,


      resb.xwaok                                               as GoodsMovementIsAllowed,
      resb.charg                                               as MaintenanceOrderComponentBatch,
      resb.fmeng                                               as QuantityIsFixed,
      @Semantics.currencyCode: true
      resb.waers                                               as MaintOrdOpComponentCurrency,
      //resb.kdauf                                        as SalesOrderNumber,

      //resb.kdpos                                        as SalesOrderItemNumber,

      resb.saknr                                               as MaintOrdOpComponentGLAccount,
      //      @Semantics.quantity.unitOfMeasure: 'BaseUnit'

      //      resb.nomng                                        as QUANTITYINUNITOFENTRY,

      resb.sanka                                               as MaintOrdOpCompCostingRelevancy,
      resb.ewahr                                               as MaintCompAltvProdUsgeRateInPct,
      resb.sortf                                               as MaintOrderOpComponentSortText,
      resb.schgt                                               as MaintOrdOpCompIsBulkProduct,
      resb.beikz                                               as MaterialProvisionType,
      cast( resb.pspel as ps_s4_pspnr preserving type )        as MaintOrdOpCompAssgdWBSElmntInt,
      @Semantics.amount.currencyCode: 'MaintOrdOpComponentCurrency'
      @DefaultAggregation: #NONE
      resb.gpreis                                              as MaintOrderOpComponentPrice,
      resb.peinh                                               as MaintOrdOpCompPriceUnitQty,
      resb.rgekz                                               as MatlCompIsMarkedForBackflush,
      resb.ekgrp                                               as PurchasingGroup,
      resb.lifzt                                               as DeliveryTimeInDays,
      resb.wempf                                               as MaintOrdOpCompGdsRecipientName,
      resb.ablad                                               as MaintOrdOpCompUnloadingPtTxt,
      resb.webaz                                               as GoodsReceiptDurationInWorkDays,
      resb.infnr                                               as PurchasingInfoRecord,
      @Semantics.quantity.unitOfMeasure: 'OpsLeadTimeOffsetUnit'
      resb.nlfzv                                               as OperationLeadTimeOffset,
      @Semantics.unitOfMeasure:true
      resb.nlfmv                                               as OpsLeadTimeOffsetUnit,
      //      rsdb.afnam                                       as MaintOrdOpCompRequisitioner,

      rsadd.bednr                                              as MaintOrdOpCompProcmtTrckgNmbr,
      rsadd.ekorg                                              as ResponsiblePurchaseOrg,
      resb.ebeln                                               as MaintOrdOpCompPurOutlineAgrmt,
      resb.ebelp                                               as MaintOrdCompPurOutlineAgrmtItm,
      //rsdb_banfn.ebeln                                  as AgreementNumber,

      //rsdb_banfn.ebelp                                  as AgreementItem,

      cast( rsdb_banfn.aobar as ps_s4_aobar preserving type )  as OrderOpRelationshipIntType,
      @Semantics.unitOfMeasure:true
      rsdb_banfn.zeinh                                         as OpRelshpOffsetDurationUnit,
      @Semantics.quantity.unitOfMeasure: 'OpRelshpOffsetDurationUnit'
      rsdb_banfn.dauer                                         as OpRelshpOffsetDuration,
      resb.dbskz                                               as MaintOrdCompIsDirectlyProcured,
      resb.sobkz                                               as MaintOrdOpCompSpecialStockType,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      resb.roms1                                               as VariableSizeDimension1,
      @Semantics.unitOfMeasure:true
      resb.romei                                               as VariableSizeDimensionUnit,
      resb.rform                                               as VariableSizeCompFormulaKey,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      resb.roms2                                               as VariableSizeDimension2,
      cast(resb.roanz as vdm_roanz)                            as NumberOfVariableSizeItem,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeDimensionUnit'
      resb.roms3                                               as VariableSizeDimension3,
      @Semantics.quantity.unitOfMeasure: 'VariableSizeComponentUnit'
      resb.romen                                               as VariableSizeItemQuantity,
      @Semantics.unitOfMeasure:true
      resb.rokme                                               as VariableSizeComponentUnit,
      resb.kzmpf                                               as RqmtDateIsEnteredManually,
      rsadd.idnlf                                              as SupplierProduct,
      rsadd.afnam                                              as MaintOrdOpCompRequisitioner,
      @Semantics.amount.currencyCode: 'MaintOrdOpComponentCurrency'
      rsadd.overalllimitamount                                 as OverallLimitAmount,
      @Semantics.amount.currencyCode: 'MaintOrdOpComponentCurrency'
      rsadd.expectedoveralllimitamount                         as ExpectedOverallLimitAmount,
      resb.maintordcompcmtdqtyiskept                           as MaintOrdCompCmtdQtyIsKept,
      rsadd.catalogid                                          as MaintOrdOpCompProcmtCatalog,
      rsadd.catalog_prod_id                                    as MaintOrdOpCompProcmtCatalogItm,

      // associations:

      _MaintenanceOrder,
      _MaintenanceOrderOperation,
      _Material,
      _MaterialText,
      _MaterialGroup,
      _StorageLocation,
      _Plant,
      _ItemCategoryText,
      _UnitOfMeasure,
      _UnitOfMeasureEntry,
      _StatusObject,
      _SafetyRelevance,
      _Supplier,
      _PurchaseRequisitionItem,
      _ReservationIsFinallyIssued,
      _ProductTypeCode,
      _ReservationItem,
      _PurReqnOrResvnGeneration,
      _StatusObjectActiveStatus,
      _MaintOrdCompDelivDateAdjmtT
}
where
  aufk.autyp = '30'