@EndUserText.label: 'MaintOrder Operation w/ Technical Object'
@VDM.viewType: #COMPOSITE
--@Analytics: { dataCategory: #DIMENSION }
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('REQUIRED')
@AbapCatalog.sqlViewName: 'IMTORDOPRTECOBJ'
@AbapCatalog.preserveKey: true
@ObjectModel.representativeKey: 'MaintenanceOrderOperation'
@ObjectModel.semanticKey: [ 'MaintenanceOrder', 'MaintenanceOrderOperation' ]
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@Metadata.allowExtensions: true
@AccessControl.privilegedAssociations: [ '_ObjectOverallStatus' ]
define view I_MaintOrderOperTechObj
as select from I_MaintenanceOrderOperation
association [1..1] to I_MaintOrderTechObj as _MaintenanceOrder on $projection.MaintenanceOrder = _MaintenanceOrder.MaintenanceOrder
association [0..*] to I_MaintOrderOperComp as _MaintenanceOperationComponent on $projection.MaintenanceOrder = _MaintenanceOperationComponent.MaintenanceOrder
and $projection.MaintenanceOrderOperation = _MaintenanceOperationComponent.MaintenanceOrderOperation
association [0..*] to I_MaintOrderSubOperTechObj as _MaintenanceSubOperation on $projection.MaintenanceOrder = _MaintenanceSubOperation.MaintenanceOrder
and $projection.MaintenanceOrderOperation = _MaintenanceSubOperation.MaintenanceOrderOperation
association [0..1] to I_TechnicalObject as _TechnicalObject on $projection.TechnicalObject = _TechnicalObject.TechnicalObject
and $projection.TechObjIsEquipOrFuncnlLoc = _TechnicalObject.TechObjIsEquipOrFuncnlLoc
association [0..1] to I_TechObjIsEquipOrFuncnlLoc as _TechObjIsEquipOrFuncnlLoc on $projection.TechObjIsEquipOrFuncnlLoc = _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc
association [0..*] to I_CostCenterActivityType as _ActivityType on $projection.ControllingArea = _ActivityType.ControllingArea
and $projection.CostCtrActivityType = _ActivityType.CostCtrActivityType
association [0..1] to I_CostElement as _CostElement on $projection.ControllingArea = _CostElement.ControllingArea
and $projection.CostElement = _CostElement.CostElement
association [0..1] to I_MaterialGroup as _MaterialGroup on $projection.MaterialGroup = _MaterialGroup.MaterialGroup
association [0..*] to I_EAMObjectOverallStatus as _ObjectOverallStatus on $projection.MaintOrderOperationInternalID = _ObjectOverallStatus.StatusObject
association [0..1] to I_MaintOrderOperObjectListLink as _MaintOrderOperObjectListLink on $projection.MaintOrderOperationCounter = _MaintOrderOperObjectListLink.MaintOrderOperationCounter
and $projection.MaintOrderRoutingNumber = _MaintOrderOperObjectListLink.MaintOrderRoutingNumber
association [0..*] to I_StatusObjectStatus as _StatusObjectStatus on $projection.MaintOrderOperationInternalID = _StatusObjectStatus.StatusObject
association [0..1] to I_Indicator as _IsDeleted on $projection.IsDeleted = _IsDeleted.IndicatorValue
association [0..1] to I_Indicator as _IsFinallyConfirmed on $projection.IsFinallyConfirmed = _IsFinallyConfirmed.IndicatorValue
{
@ObjectModel.foreignKey.association: '_MaintenanceOrder'
key I_MaintenanceOrderOperation.MaintenanceOrder,
key I_MaintenanceOrderOperation.MaintenanceOrderOperation,
/* @ObjectModel.foreignKey.association: '_TechnicalObject'
case when I_MaintenanceOrderOperation.Equipment != '' then
cast( I_MaintenanceOrderOperation.Equipment as eams_tech_obj_conv )
when I_MaintenanceOrderOperation.Equipment = '' and
I_MaintenanceOrderOperation.FunctionalLocation != '' then
cast( I_MaintenanceOrderOperation.FunctionalLocation as eams_tech_obj_conv )
else cast('' as eams_tech_obj_conv ) end as TechnicalObject,*/
@ObjectModel.foreignKey.association: '_TechnicalObject'
/* cast( case when _MaintOrdOpWithNotifAndEquip.OperationMaintenanceNotif is not null then
_MaintOrdOpWithNotifAndEquip._MaintNotificationTechObj.TechnicalObject
else case when I_MaintenanceOrderOperation.Equipment != '' then
cast( I_MaintenanceOrderOperation.Equipment as eams_tech_obj_conv )
when I_MaintenanceOrderOperation.Equipment = '' and
I_MaintenanceOrderOperation.FunctionalLocation != '' then
cast( I_MaintenanceOrderOperation.FunctionalLocation as eams_tech_obj_conv )
else cast('' as eams_tech_obj_conv ) end
end as eams_tech_obj_conv ) as TechnicalObject,*/
/*cast( coalesce( _MaintOrderOperObjectListLink._MaintenanceItemObject._PMNotifMaintenanceData._Equipment.Equipment,
coalesce( _MaintOrderOperObjectListLink._MaintenanceItemObject._PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.FunctionalLocation,
coalesce( _MaintOrderOperObjectListLink._MaintenanceItemObject._Equipment.Equipment,
coalesce( _MaintOrderOperObjectListLink._MaintenanceItemObject._FunctionalLocation.FunctionalLocation,
coalesce( _FunctionalLocation.FunctionalLocation, Equipment ) ) ) ) ) as eams_tech_obj_conv ) as TechnicalObject,*/
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_TechnicalObjectStdVH',
element: 'TechnicalObject' },
additionalBinding: [{ localElement: 'TechObjIsEquipOrFuncnlLoc',
element: 'TechObjIsEquipOrFuncnlLoc' }]
}]
cast( case when _MaintOrderOperObjectListLink.MaintenanceItemObject is not null then
case when _MaintOrderOperObjectListLink._MaintenanceItemObject.Equipment <> '' then _MaintOrderOperObjectListLink._MaintenanceItemObject.Equipment
else _MaintOrderOperObjectListLink._MaintenanceItemObject.FunctionalLocation end
else case when Equipment != '' then
Equipment
when Equipment = '' and
FunctionalLocation != '' then
FunctionalLocation
else '' end
end as eams_tec_obj ) as TechnicalObject,
/* @ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
case when I_MaintenanceOrderOperation.Equipment != '' then
cast ( 'EAMS_EQUI' as eams_tec_obj_type_value)
when I_MaintenanceOrderOperation.Equipment = '' and
I_MaintenanceOrderOperation.FunctionalLocation != '' then
cast ( 'EAMS_FL' as eams_tec_obj_type_value)
else cast('' as eams_tec_obj_type_value ) end as TechObjIsEquipOrFuncnlLoc,*/
/*@ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
@UI.textArrangement: #TEXT_ONLY
cast( case when _MaintOrderOperObjectListLink._MaintenanceItemObject._PMNotifMaintenanceData._Equipment.Equipment is not null
or _MaintOrderOperObjectListLink._MaintenanceItemObject._Equipment.Equipment is not null
or Equipment <> ''
then 'EAMS_EQUI'
when _MaintOrderOperObjectListLink._MaintenanceItemObject._PMNotifMaintenanceData._LocationAccountAssignment._FunctionalLocation.FunctionalLocation is not null
or _MaintOrderOperObjectListLink._MaintenanceItemObject._FunctionalLocation.FunctionalLocation is not null
or _FunctionalLocation.FunctionalLocation is not null
then 'EAMS_FL'
else ''
end as eams_tec_obj_type_value ) as TechObjIsEquipOrFuncnlLoc,*/
@ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
@UI.textArrangement: #TEXT_ONLY
cast( case when _MaintOrderOperObjectListLink.MaintenanceItemObject is not null then
case when _MaintOrderOperObjectListLink._MaintenanceItemObject.Equipment <> '' then 'EAMS_EQUI'
when _MaintOrderOperObjectListLink._MaintenanceItemObject.FunctionalLocation <> '' then 'EAMS_FL'
else '' end
else case when Equipment != '' then
'EAMS_EQUI'
when Equipment = '' and
FunctionalLocation != '' then
'EAMS_FL'
else '' end
end as eams_tec_obj_type_value ) as TechObjIsEquipOrFuncnlLoc,
/* Fields */
_MaintenanceOrder._Order.ControllingArea as ControllingArea,
I_MaintenanceOrderOperation.MaintOrderRoutingNumber,
I_MaintenanceOrderOperation.MaintOrderOperationCounter,
I_MaintenanceOrderOperation.OperationControlKey,
I_MaintenanceOrderOperation.OperationDescription,
I_MaintenanceOrderOperation.MaintOrderOperationInternalID,
I_MaintenanceOrderOperation.Equipment,
I_MaintenanceOrderOperation.FunctionalLocation,
I_MaintenanceOrderOperation.Plant,
I_MaintenanceOrderOperation.OperationWorkCenterInternalID,
I_MaintenanceOrderOperation.OperationWorkCenterTypeCode,
I_MaintenanceOrderOperation.OperationPurgInfoRecdSearchTxt,
I_MaintenanceOrderOperation.OperationRequisitionerName,
I_MaintenanceOrderOperation.OperationGoodsRecipientName,
I_MaintenanceOrderOperation.OpExternalProcessingPrice,
I_MaintenanceOrderOperation.OpExternalProcessingPriceUnit,
I_MaintenanceOrderOperation.OpExternalProcessingCurrency,
I_MaintenanceOrderOperation.OperationTrackingNumber,
I_MaintenanceOrderOperation.OperationPurchasingInfoRecord,
I_MaintenanceOrderOperation.OperationUnloadingPointName,
I_MaintenanceOrderOperation.OpPurchaseOutlineAgreement,
I_MaintenanceOrderOperation.OpPurchaseOutlineAgreementItem,
I_MaintenanceOrderOperation.OperationSupplier,
I_MaintenanceOrderOperation.OperationPersonResponsible,
I_MaintenanceOrderOperation.Assembly,
I_MaintenanceOrderOperation.OperationSystemCondition,
I_MaintenanceOrderOperation.CostCtrActivityType,
I_MaintenanceOrderOperation.ReqgCostCenterControllingArea,
I_MaintenanceOrderOperation.OperationCalculationControl,
I_MaintenanceOrderOperation.OperationWorkPercent,
I_MaintenanceOrderOperation.CapacityRequirement,
I_MaintenanceOrderOperation.CapacityRequirementItem,
I_MaintenanceOrderOperation.PurchaseRequisition,
I_MaintenanceOrderOperation.PurchaseRequisitionItem,
I_MaintenanceOrderOperation.NumberOfCapacities,
I_MaintenanceOrderOperation.MaterialGroup,
I_MaintenanceOrderOperation.CostElement,
I_MaintenanceOrderOperation.PurchasingGroup,
I_MaintenanceOrderOperation.PurchasingOrganization,
I_MaintenanceOrderOperation.Language,
I_MaintenanceOrderOperation.OperationHasLongText,
I_MaintenanceOrderOperation.MaintOperationExecStageCode,
I_MaintenanceOrderOperation.MaintOrdOpProcessPhaseCode,
I_MaintenanceOrderOperation.MaintOrdOpProcessSubPhaseCode,
I_MaintenanceOrderOperation.MaintOperationalChecklistType,
I_MaintenanceOrderOperation._OperationPlanningValues.OperationPlannedWork,
I_MaintenanceOrderOperation._OperationPlanningValues.OperationPlannedWorkUnit,
I_MaintenanceOrderOperation._OperationPlanningValues.OperationDuration,
I_MaintenanceOrderOperation._OperationPlanningValues.OperationDurationUnit,
I_MaintenanceOrderOperation._OperationPlanningValues._PlannedWorkUnitOfMeasure,
cast( I_MaintenanceOrderOperation._OperationPlanningValues.ConfirmationTotalQuantity as eams_total_actual_work ) as ConfirmationTotalQuantity,
I_MaintenanceOrderOperation._WorkCenter.WorkCenter as OperationWorkCenter,
_ObjectOverallStatus.EAMOverallObjectStatusProfile,
_ObjectOverallStatus.EAMOverallObjectStatus,
// @todo create private view for objects in status 'deleted'
@ObjectModel.foreignKey.association: '_IsDeleted'
case when _StatusObjectStatus[1: StatusCode = 'I0013'].StatusCode is not null
and _StatusObjectStatus[1: StatusCode = 'I0013'].StatusIsInactive <> 'X'
then 'X' else ''
end as IsDeleted,
@ObjectModel.foreignKey.association: '_IsFinallyConfirmed'
cast(
case when _StatusObjectStatus[1: StatusCode = 'I0009'].StatusCode is not null
and _StatusObjectStatus[1: StatusCode = 'I0009'].StatusIsInactive <> 'X'
then 'X' else '' end
as eams_finally_confirmed ) as IsFinallyConfirmed,
/* Associations from I_MaintenanceOrderOperation */
I_MaintenanceOrderOperation._OperationControlKey,
I_MaintenanceOrderOperation._OperationPlanningValues,
I_MaintenanceOrderOperation._OpExternalProcessingCurrency,
I_MaintenanceOrderOperation._OperationSystemCondition,
I_MaintenanceOrderOperation._Plant,
I_MaintenanceOrderOperation._StatusObject,
I_MaintenanceOrderOperation._WorkCenter,
I_MaintenanceOrderOperation._OperationCalculationControl,
I_MaintenanceOrderOperation._Assembly,
I_MaintenanceOrderOperation._Language,
I_MaintenanceOrderOperation._OperationHasLongText,
I_MaintenanceOrderOperation._Supplier,
I_MaintenanceOrderOperation._PersonResponsible,
I_MaintenanceOrderOperation._MaintOperationExecStageCode,
/* Local associations */
_MaintenanceOrder,
_MaintenanceSubOperation,
_MaintenanceOperationComponent,
_TechnicalObject,
_TechObjIsEquipOrFuncnlLoc,
_ActivityType,
_CostElement,
_MaterialGroup,
_MaintOrderOperObjectListLink,
//_MaintOrdOpWithNotifAndEquip,
_StatusObjectActiveStatus,
_IsFinallyConfirmed,
_ObjectOverallStatus,
_ObjectOverallStatus._OverallStatus,
_IsDeleted,
_OperationPlanningValues._DurationUnitOfMeasure,
_EAMProcessPhase,
_EAMProcessSubPhase
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_EAMOBJECTOVERALLSTATUS",
"I_LOGISTICSORDER",
"I_MAINTENANCEITEMOBJECT",
"I_MAINTENANCEORDEROPERATION",
"I_MAINTORDEROPEROBJECTLISTLINK",
"I_MAINTORDEROPERPLANNINGVALUES",
"I_MAINTORDERTECHOBJ",
"I_STATUSOBJECTSTATUS",
"I_WORKCENTER"
],
"ASSOCIATED":
[
"I_COSTCENTERACTIVITYTYPE",
"I_COSTELEMENT",
"I_CURRENCY",
"I_EAMOBJECTOVERALLSTATUS",
"I_EAMOVERALLSTATUS",
"I_EAMPROCESSPHASE",
"I_EAMPROCESSSUBPHASE",
"I_INDICATOR",
"I_LANGUAGE",
"I_MAINTOPERATIONEXECSTAGECODE",
"I_MAINTOPERATIONSYSTCONDITION",
"I_MAINTORDEROPERCOMP",
"I_MAINTORDEROPEROBJECTLISTLINK",
"I_MAINTORDEROPERPLANNINGVALUES",
"I_MAINTORDERSUBOPERTECHOBJ",
"I_MAINTORDERTECHOBJ",
"I_MATERIAL",
"I_MATERIALGROUP",
"I_OPERATIONCALCULATIONCONTROL",
"I_OPERATIONCONTROLPROFILE",
"I_PERSONWORKAGREEMENT_1",
"I_PLANT",
"I_STATUSOBJECT",
"I_STATUSOBJECTACTIVESTATUS",
"I_STATUSOBJECTSTATUS",
"I_SUPPLIER",
"I_TECHNICALOBJECT",
"I_TECHOBJISEQUIPORFUNCNLLOC",
"I_UNITOFMEASURE",
"I_WORKCENTER"
],
"BASE":
[
"I_EAMOBJECTOVERALLSTATUS",
"I_MAINTENANCEORDEROPERATION",
"I_MAINTORDEROPERPLANNINGVALUES"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/