I_TechObjWorkReqQuickVw

DDL: I_TECHOBJWORKREQQUICKVW Type: view_entity COMPOSITE Package: RAP_EAM_NTF

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. Part of development package RAP_EAM_NTF.

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 (13)

NameValueLevelField
VDM.viewType #COMPOSITE view
AccessControl.authorizationCheck #CHECK view
EndUserText.label Technical Object quick view view
ObjectModel.usageType.dataClass #MASTER view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.representativeKey TechnicalObject view
Analytics.technicalName ITECHOBJWRQVW 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

OData Services (2)

ServiceBindingVersionContractRelease
UI_MAINTENANCEJOB_MANAGE UI_MAINTENANCEJOB_MANAGE V2 C1 NOT_RELEASED
UI_MAINTWORKREQUESTOVERVIEW UI_MAINTWORKREQUESTOVW_V2 V2 C1 NOT_TO_BE_RELEASED_STABLE

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 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" ]  } */
define view entity 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,

 key   cast ( case when I_TechnicalObject.TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI'
                  then case 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 end
                  when I_TechnicalObject.TechObjIsEquipOrFuncnlLoc != 'EAMS_EQUI'
                  then I_TechnicalObject._FunctionalLocationLabel.FunctionalLocationLabelName  end as 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 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'
          @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: 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
          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' end as typbz preserving type)                                                                                                                  as ManufacturerPartTypeName,

          case TechObjIsEquipOrFuncnlLoc
              when 'EAMS_EQUI'
              then  case when  I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel is not null
                         then  I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel
                         else '00' end
              when 'EAMS_FL'
              then  case when I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel is not null
                         then I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStrucIdentifyingLevel
                         else '00' end
              end                                                                                                                                                          as FuncLocStrucIdentifyingLevel,


          case TechObjIsEquipOrFuncnlLoc
              when 'EAMS_EQUI'
              then  case when  I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl is not null
                         then  I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl
                         else '00' end
              when 'EAMS_FL'
              then  case when I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl is not null
                         then I_TechnicalObject._FunctionalLocation._FuncLocationStructure.FuncLocStruc2ndIdentifyingLvl
                         else '00' end
              end                                                                                                                                                          as FuncLocStruc2ndIdentifyingLvl,


          case TechObjIsEquipOrFuncnlLoc
              when 'EAMS_EQUI'
              then  case when  _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel is not null
                         then  _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel
                         else 'N/A' end
              when 'EAMS_FL'
              then  case when _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel is not null
                         then _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].IdentifyingLabel
                         else 'N/A' end
              end                                                                                                                                                          as IdentifyingLabel,


          case TechObjIsEquipOrFuncnlLoc
              when 'EAMS_EQUI'
              then  case when  _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel is not null
                         then  _LocationAccountAssignment._FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel
                         else 'N/A' end
              when 'EAMS_FL'
              then  case when _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel is not null
                         then _FunctionalLocation._FuncLocationStructure._FuncLocationStructureText[1:Language = $session.system_language].SecondIdentifyingLabel
                         else 'N/A' end
              end                                                                                                                                                          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 not initial
            then _SuperiorFunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName
            when SuperiorFunctionalLocation is not initial
            then I_TechnicalObject._LocationAccountAssignment._FunctionalLocation._FunctionalLocationLabel.FunctionalLocationLabelName  end                                                  as SuperiorFuncnlLocLabelName,


          @UI.hidden: true
          @Semantics.text: true
          case
            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
}