@AbapCatalog.sqlViewName: 'ITECHOBJWRQVW'
@VDM.viewType: #COMPOSITE
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Technical Object quick view'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #MASTER
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.representativeKey: 'TechnicalObject'
@UI.headerInfo : {
typeName: 'Technical Object',
typeNamePlural: 'Technical Objects',
typeImageUrl: 'sap-icon://technical-object',
imageUrl: 'TechnicalObjectThumbnailURL',
title.value: 'TechnicalObjectDescription',
description.value: 'TechnicalObjectLabel'
}
@AccessControl.privilegedAssociations: ['_TechObjIsEquipOrFuncnlLocT', '_TechnicalObjectCategoryT', '_TechnicalObjectTypeText']
@Consumption.dbHintsCalculatedBy: 'ABAP:CL_EAM_QUICKVIEW_DBHINT'
/*+[hideWarning] { "IDS" : [ "DOUBLE_JOIN" ] } */
define view I_TechObjWorkReqQuickVw
as select from I_TechnicalObject
association [0..*] to I_TechObjIsEquipOrFuncnlLocT as _TechObjIsEquipOrFuncnlLocT on _TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
association [0..*] to I_TechnicalObjectCategoryT as _TechnicalObjectCategoryT on _TechnicalObjectCategoryT.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
and _TechnicalObjectCategoryT.TechnicalObjectCategory = $projection.TechnicalObjectCategory
association [0..*] to I_TechnicalObjectTypeText as _TechnicalObjectTypeText on _TechnicalObjectTypeText.TechnicalObjectType = $projection.TechnicalObjectType
association [0..1] to I_FunctionalLocation as _SuperiorFunctionalLocation on _SuperiorFunctionalLocation.FunctionalLocation = $projection.SuperiorFunctionalLocation
{
@UI.facet: [{
purpose: #QUICK_VIEW,
type: #FIELDGROUP_REFERENCE,
targetQualifier: 'TechObjQuickView'
}]
@EndUserText.label: 'Technical Object'
key TechnicalObject,
@ObjectModel.text.association: '_TechObjIsEquipOrFuncnlLocT'
@EndUserText.label: 'Technical Object Type'
@Environment.sql.passValue: true
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 10}] }
// key TechObjIsEquipOrFuncnlLoc,
key cast( case when Equipment is not initial then 'EAMS_EQUI'
when FunctionalLocation is not initial then 'EAMS_FL' end as eams_tec_obj_type_value ) as TechObjIsEquipOrFuncnlLoc,
key cast ( case when I_TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
then cast( I_TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName as eams_tec_obj )
else I_TechnicalObject.TechnicalObject end as eams_tec_obj preserving type ) as TechnicalObjectLabel,
cast( case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI' then _Equipment._EquipmentText[1: Language = $session.system_language ].EquipmentName
else _FunctionalLocation._FunctionalLocationText[1: Language = $session.system_language ].FunctionalLocationName end as eams_tec_obj_des preserving type ) as TechnicalObjectDescription,
MaintObjectInternalID,
cast( SuperiorFunctionalLocation as eams_ui_oid_name preserving type) as SuperiorFunctionalLocation,
@EndUserText.label: 'Functional Location'
// @UI.fieldGroup: [{ qualifier: 'TechObjQuickView', position: 120 }]
// @UI.textArrangement: #TEXT_FIRST
@ObjectModel.text.element: ['FunctionalLocationName']
@UI.hidden: true
_LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName,
@UI.hidden: true
@Semantics.text: true
_LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[1:Language = $session.system_language].FunctionalLocationName,
@UI.hidden: true
_SuperiorFunctionalLocation._FunctionalLocationLabel.FuncnlLocPrimaryLabelName,
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 30}] }
@ObjectModel.text.association: '_TechnicalObjectCategoryT'
@EndUserText.label: 'Category'
@UI.textArrangement: #TEXT_FIRST
TechnicalObjectCategory,
@Semantics.imageUrl: true
@EndUserText.label: 'Image'
@Consumption.filter.hidden: true
case
when TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI' then 'sap-icon://technical-object'
when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' then 'sap-icon://functional-location'
else '' end as TechnicalObjectThumbnailURL,
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 50}] }
@ObjectModel.text.association: '_TechnicalObjectTypeText'
@EndUserText.label: 'Object Type'
@UI.textArrangement: #TEXT_FIRST
TechnicalObjectType,
@EndUserText.label: 'Manufacturer'
cast( case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI' then AssetManufacturerName
else 'N/A'
end as herst preserving type) as AssetManufacturerName,
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 70}] }
@EndUserText.label: 'Maintenance Plant'
@ObjectModel.text.element: [ 'PlantName' ]
@UI.textArrangement: #TEXT_FIRST
_LocationAccountAssignment.MaintenancePlant as MaintenancePlant,
@EndUserText.label: 'Maintenance Plant Name'
_LocationAccountAssignment._MaintenancePlant.PlantName as PlantName,
@EndUserText.label: 'Plant Section'
_LocationAccountAssignment.PlantSection,
@EndUserText.label: 'Location'
@ObjectModel.text.element: [ 'LocationName' ]
@UI.textArrangement: #TEXT_FIRST
_LocationAccountAssignment.AssetLocation,
@EndUserText.label: 'Location Name'
_LocationAccountAssignment._Location.LocationName,
@EndUserText.label: 'Room'
_LocationAccountAssignment.AssetRoom,
@EndUserText.label: 'Model Number'
cast( case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI' then ManufacturerPartTypeName
else 'N/A' end as typbz preserving type) as ManufacturerPartTypeName,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
then coalesce( _FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel,
coalesce(_SuperiorFunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel,'00'))
else FuncLocStrucIdentifyingLevel end as FuncLocStrucIdentifyingLevel,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
then coalesce( _FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl,
coalesce(_SuperiorFunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl,'00'))
else FuncLocStruc2ndIdentifyingLvl end as FuncLocStruc2ndIdentifyingLvl,
@UI.hidden: true
@EndUserText.label: 'Identifying Level'
cast( coalesce( _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel,
coalesce( _SuperiorFunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel,
'N/A' )) as ilom_level_kz_desc ) as IdentifyingLabel,
@UI.hidden: true
@EndUserText.label: 'Second Identifying Level'
cast( coalesce( _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel,
coalesce( _SuperiorFunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel,
'N/A' ) ) as ilom_level_kz2_desc ) as SecondIdentifyingLabel,
@UI.hidden: true
cast(TechnicalObject as char40) as TechObjectWithLeadingZeros,
@Consumption.hidden
MaintObjectLocAcctAssgmtNmbr,
@Consumption.hidden
AuthorizationGroup,
MaintenancePlanningPlant,
MaintenancePlannerGroup,
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 130}] }
@EndUserText.label: 'Superior Functional Location'
@ObjectModel.text.element: [ 'SuperiorFunctionalLocationName' ]
@UI.textArrangement: #TEXT_FIRST
case
// when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject is initial
// then TechnicalObjectLabel
when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject is not initial
then _SuperiorFunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName
when SuperiorFunctionalLocation is not initial
then _LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName end as SuperiorFuncnlLocLabelName,
@UI.hidden: true
@Semantics.text: true
case
// when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject is initial
// then _LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[1:Language = $session.system_language].FunctionalLocationName
when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject is not initial
then SuperiorTechnicalObjectName
when SuperiorFunctionalLocation is not initial
then _LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[1:Language = $session.system_language].FunctionalLocationName end as SuperiorFunctionalLocationName,
-- Exposed Associations
_TechObjIsEquipOrFuncnlLocT,
_TechnicalObjectCategoryT,
_TechnicalObjectTypeText,
_LocationAccountAssignment
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_EQUIPMENT",
"I_EQUIPMENTTEXT",
"I_FUNCLOCATIONSTRUCTURE",
"I_FUNCLOCATIONSTRUCTURETEXT",
"I_FUNCTIONALLOCATION",
"I_FUNCTIONALLOCATIONLABEL",
"I_FUNCTIONALLOCATIONTEXT",
"I_LOCATION",
"I_LOCATIONACCOUNTASSIGNMENT",
"I_PLANT",
"I_TECHNICALOBJECT"
],
"ASSOCIATED":
[
"I_FUNCTIONALLOCATION",
"I_LOCATIONACCOUNTASSIGNMENT",
"I_TECHNICALOBJECTCATEGORYT",
"I_TECHNICALOBJECTTYPETEXT",
"I_TECHOBJISEQUIPORFUNCNLLOCT"
],
"BASE":
[
"I_TECHNICALOBJECT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/