I_TechObjWorkReqQuickVw is a Composite CDS View that provides data about "Technical Object quick view" in SAP S/4HANA. It reads from 1 data source (I_TechnicalObject) and exposes 22 fields with key field TechnicalObject. It has 4 associations to related views. It is exposed through 2 OData services (UI_MAINTENANCEJOB_MANAGE, UI_MAINTWORKREQUESTOVERVIEW). It is used in 1 Fiori application: Perform Maintenance Jobs. Part of development package RAP_EAM_NTF.
Perform Maintenance Jobs app will help Maintenance Technician to see the list with all work items assigned to the him/her or to his/her team, several features like Assignment of an operation, Time recording for the Operations, create partial or final confirmations and the ability to display and change the malfunction information are possible with the app. The maintenance technician can post and return the planned components and can also record the measurement document.
Perform Maintenance Jobs
Business Role: Maintenance Technician
Technician records actual work, remaining work, confirmation text, and final confirmation for self as well as for team members working on the job.
Fields (22)
Key
Field
Source Table
Source Field
Description
KEY
TechnicalObject
TechnicalObject
Technical Object
MaintObjectInternalID
MaintObjectInternalID
SuperiorFunctionalLocation
FunctionalLocationLabelName
Functional Location
FunctionalLocationName
FuncnlLocPrimaryLabelName
TechnicalObjectCategory
TechnicalObjectCategory
Category
TechnicalObjectType
TechnicalObjectType
Object Type
MaintenancePlant
Maintenance Plant
PlantName
Maintenance Plant Name
PlantSection
Plant Section
AssetLocation
Location
LocationName
Location Name
AssetRoom
Room
TechObjectWithLeadingZeros
MaintObjectLocAcctAssgmtNmbr
MaintObjectLocAcctAssgmtNmbr
AuthorizationGroup
AuthorizationGroup
MaintenancePlanningPlant
MaintenancePlanningPlant
MaintenancePlannerGroup
MaintenancePlannerGroup
_TechnicalObjectCategoryT
_TechnicalObjectCategoryT
_TechnicalObjectTypeText
_TechnicalObjectTypeText
_LocationAccountAssignment
_LocationAccountAssignment
@VDM.viewType: #COMPOSITE@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Technical Object quick view'
@ObjectModel.usageType.dataClass: #MASTER@ObjectModel.usageType.serviceQuality: #C@ObjectModel.usageType.sizeCategory: #XL@ObjectModel.representativeKey: 'TechnicalObject'
@Analytics.technicalName: 'ITECHOBJWRQVW'
@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" ] } */defineviewentity I_TechObjWorkReqQuickVw
asselectfrom 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,
keycast( casewhen Equipment isnot initial then 'EAMS_EQUI'
when FunctionalLocation isnot initial then 'EAMS_FL' endas eams_tec_obj_type_value ) as TechObjIsEquipOrFuncnlLoc,
//keycast ( casewhen I_TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'
// thencast( I_TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName as eams_tec_obj )
// else I_TechnicalObject.TechnicalObject endas eams_tec_obj preserving type ) as TechnicalObjectLabel,
keycast ( casewhen I_TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
thencase replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(
replace(I_TechnicalObject.TechnicalObject, '0', ''),
'1', ''),
'2', ''),
'3', ''),
'4', ''),
'5', ''),
'6', ''),
'7', ''),
'8', ''),
'9', '')
when '' then ltrim( I_TechnicalObject.TechnicalObject , '0' )
else I_TechnicalObject.TechnicalObject endwhen I_TechnicalObject.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
then I_TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName endas eams_tec_obj preserving type) as TechnicalObjectLabel,
// 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 endas eams_tec_obj_des preserving type ) as TechnicalObjectDescription,
MaintObjectInternalID,
cast( SuperiorFunctionalLocation as eams_ui_oid_name preserving type) as SuperiorFunctionalLocation,
@EndUserText.label: 'Functional Location'
@ObjectModel.text.element: ['FunctionalLocationName']@UI.hidden: true
I_TechnicalObject._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: truecasewhen TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI' then 'sap-icon://technical-object'
when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' then 'sap-icon://functional-location'
else '' endas 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'
endas herst preserving type) as AssetManufacturerName,
@UI: { fieldGroup: [{ qualifier:'TechObjQuickView', position: 70}] }
@EndUserText.label: 'Maintenance Plant'
@ObjectModel.text.element: [ 'PlantName' ]@UI.textArrangement: #TEXT_FIRST
I_TechnicalObject._LocationAccountAssignment.MaintenancePlant as MaintenancePlant,
@EndUserText.label: 'Maintenance Plant Name'
I_TechnicalObject._LocationAccountAssignment._MaintenancePlant.PlantName as PlantName,
@EndUserText.label: 'Plant Section'
I_TechnicalObject._LocationAccountAssignment.PlantSection,
@EndUserText.label: 'Location'
@ObjectModel.text.element: [ 'LocationName' ]@UI.textArrangement: #TEXT_FIRST
I_TechnicalObject._LocationAccountAssignment.AssetLocation,
@EndUserText.label: 'Location Name'
I_TechnicalObject._LocationAccountAssignment._Location.LocationName,
@EndUserText.label: 'Room'
I_TechnicalObject._LocationAccountAssignment.AssetRoom,
@EndUserText.label: 'Model Number'
cast( case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI' then ManufacturerPartTypeName
else 'N/A' endas typbz preserving type) as ManufacturerPartTypeName,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
thencasewhen I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel isnotnullthen I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel
else '00' endwhen 'EAMS_FL'
thencasewhen I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel isnotnullthen I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel
else '00' endendas FuncLocStrucIdentifyingLevel,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
thencasewhen I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl isnotnullthen I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl
else '00' endwhen 'EAMS_FL'
thencasewhen I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl isnotnullthen I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl
else '00' endendas FuncLocStruc2ndIdentifyingLvl,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
thencasewhen _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel isnotnullthen _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel
else 'N/A' endwhen 'EAMS_FL'
thencasewhen _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel isnotnullthen _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel
else 'N/A' endendas IdentifyingLabel,
case TechObjIsEquipOrFuncnlLoc
when 'EAMS_EQUI'
thencasewhen _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel isnotnullthen _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel
else 'N/A' endwhen 'EAMS_FL'
thencasewhen _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel isnotnullthen _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel
else 'N/A' endendas SecondIdentifyingLabel,
@UI.hidden: truecast(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_FIRSTcasewhen TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject isnot initial
then _SuperiorFunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName
when SuperiorFunctionalLocation isnot initial
then I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName endas SuperiorFuncnlLocLabelName,
@UI.hidden: true@Semantics.text: truecasewhen TechObjIsEquipOrFuncnlLoc = 'EAMS_FL' and SuperiorTechnicalObject isnot initial
then SuperiorTechnicalObjectName
when SuperiorFunctionalLocation isnot initial
then _LocationAccountAssignment._FunctionalLocation._FunctionalLocationText[1:Language = $session.system_language].FunctionalLocationName endas SuperiorFunctionalLocationName,
-- Exposed Associations
_TechObjIsEquipOrFuncnlLocT,
_TechnicalObjectCategoryT,
_TechnicalObjectTypeText,
_LocationAccountAssignment
}