I_TechObjWorkReqQuickVw

DDL: I_TECHOBJWORKREQQUICKVW SQL: ITECHOBJWRQVW Type: view COMPOSITE

Technical Object quick view

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.

Data Sources (1)

SourceAliasJoin Type
I_TechnicalObject I_TechnicalObject from

Associations (4)

CardinalityTargetAliasCondition
[0..*] I_TechObjIsEquipOrFuncnlLocT _TechObjIsEquipOrFuncnlLocT _TechObjIsEquipOrFuncnlLocT.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
[0..*] I_TechnicalObjectCategoryT _TechnicalObjectCategoryT _TechnicalObjectCategoryT.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc and _TechnicalObjectCategoryT.TechnicalObjectCategory = $projection.TechnicalObjectCategory
[0..*] I_TechnicalObjectTypeText _TechnicalObjectTypeText _TechnicalObjectTypeText.TechnicalObjectType = $projection.TechnicalObjectType
[0..1] I_FunctionalLocation _SuperiorFunctionalLocation _SuperiorFunctionalLocation.FunctionalLocation = $projection.SuperiorFunctionalLocation

Annotations (17)

NameValueLevelField
AbapCatalog.sqlViewName ITECHOBJWRQVW view
VDM.viewType #COMPOSITE view
AccessControl.authorizationCheck #CHECK view
EndUserText.label Technical Object quick view view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MASTER view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.representativeKey TechnicalObject view
UI.headerInfo.typeName Technical Object view
UI.headerInfo.typeNamePlural Technical Objects view
UI.headerInfo.typeImageUrl sap-icon: imageUrl: view
UI.headerInfo.title.value TechnicalObjectDescription view
UI.headerInfo.description.value TechnicalObjectLabel view
Consumption.dbHintsCalculatedBy ABAP:CL_EAM_QUICKVIEW_DBHINT view

OData Services (2)

ServiceBindingVersionContractRelease
UI_MAINTENANCEJOB_MANAGE UI_MAINTENANCEJOB_MANAGE V2 C1 NOT_RELEASED
UI_MAINTWORKREQUESTOVERVIEW UI_MAINTWORKREQUESTOVW_V2 V2 C1 NOT_RELEASED

Fiori Apps (1)

App IDApp NameTypeDescription
F5104A Perform Maintenance Jobs Transactional 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)

KeyFieldSource TableSource FieldDescription
KEY TechnicalObject TechnicalObject Technical Object
MaintObjectInternalID MaintObjectInternalID
SuperiorFunctionalLocation
FunctionalLocationLabelName Functional Location
FunctionalLocationName
FuncnlLocPrimaryLabelName
TechnicalObjectCategory TechnicalObjectCategory Category
TechnicalObjectType TechnicalObjectType Object Type
MaintenancePlant _LocationAccountAssignment MaintenancePlant Maintenance Plant
PlantName Maintenance Plant Name
PlantSection _LocationAccountAssignment PlantSection Plant Section
AssetLocation _LocationAccountAssignment AssetLocation Location
LocationName Location Name
AssetRoom _LocationAccountAssignment AssetRoom Room
TechObjectWithLeadingZeros
MaintObjectLocAcctAssgmtNmbr MaintObjectLocAcctAssgmtNmbr
AuthorizationGroup AuthorizationGroup
MaintenancePlanningPlant MaintenancePlanningPlant
MaintenancePlannerGroup MaintenancePlannerGroup
_TechnicalObjectCategoryT _TechnicalObjectCategoryT
_TechnicalObjectTypeText _TechnicalObjectTypeText
_LocationAccountAssignment _LocationAccountAssignment
@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
}