C_WrkPmtTechnicalObjectVH

DDL: C_WRKPMTTECHNICALOBJECTVH Type: view_entity CONSUMPTION Package: VDM_EAM_WCM_PERMIT_TO_WORK

Work Permit Technical Object

C_WrkPmtTechnicalObjectVH is a Consumption CDS View that provides data about "Work Permit Technical Object" in SAP S/4HANA. It reads from 1 data source (I_TechnicalObject) and exposes 30 fields with key fields TechObjIsEquipOrFuncnlLoc, TechnicalObject. It has 1 association to related views. It is exposed through 2 OData services (UI_WORKPERMIT, UI_WORKPERMITTEMPLATE). It is used in 2 Fiori applications: Manage Work Permit Templates, Manage Work Permits. Part of development package VDM_EAM_WCM_PERMIT_TO_WORK.

Data Sources (1)

SourceAliasJoin Type
I_TechnicalObject _TechnicalObject from

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_TechObjIsEquipOrFuncnlLoc _TechObjIsEquipOrFuncnlLoc _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc

Annotations (11)

NameValueLevelField
AccessControl.authorizationCheck #MANDATORY view
VDM.viewType #CONSUMPTION view
Search.searchable true view
ObjectModel.representativeKey TechnicalObject view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.dataCategory #VALUE_HELP view
Analytics.technicalName CWRKPMTTECHOBJVH view
Consumption.ranked true view
EndUserText.label Work Permit Technical Object view

OData Services (2)

ServiceBindingVersionContractRelease
UI_WORKPERMIT UI_WORKPERMIT V2 C1 NOT_RELEASED
UI_WORKPERMITTEMPLATE UI_WORKPERMITTEMPLATE V2 C1 NOT_RELEASED

Fiori Apps (2)

App IDApp NameTypeDescription
F4692 Manage Work Permit Templates Transactional Work permit template provides a predesigned structure that can be used to create work permits of consistent format. This can help you streamline the process when Permits for similar work are required to be created periodically. You can use this app to maintain the re-use library of templates to use them for creating actual work permits.
F6579 Manage Work Permits Transactional Work Permit is initiated during the planning of a maintenance activity and typically created from a predesigned template, together with the work order associated with the maintenance task. You can use this to search and maintain Work Permits.

Manage Work Permit Templates

Business Role: Industrial Hygienist

The Manage Work Permit Templates app allows to create work permit templates as predesigned models for creating work permits. The templates can be used as they are, or easily modified while work permits are created. Usage of work permit templates can help to streamline the work permit creation process when identical work permits are generated often. The app can perform the following operations:Allows to create, process, and manage work permit templatesProvides the ability to assign multiple functional locations, equipment, partners, and attachmentsAllows the configuration of the nature of work, personal protective equipment, and safety precautionsOffers easy data validation and a simplified approval process that adheres to a four-eyes principleProvides the ability to view the records of data transfers using application logs

Manage Work Permits

Business Role: Maintenance Planner

The Manage Work Permits app allows you to create, manage, and monitor work permits and gain valuable insights about the progress of your maintenance operations. Using the app, new work permits can be created with reference to an existing maintenance order, a predesigned work permit template, or independently. It provides the following capabilities:Allows to create and process new work permit using the optimized work permit management solutionProvides the ability to assign multiple functional locations, equipment, maintenance orders, partners, and attachments to enhance work permit with details related to the work activityAllows the configuration of the nature of work, personal protective equipment, and safety precautions to enhance work permit with safety protocols.Offers easy data validation and a simplified approval process that adheres to a four-eyes principleSupports the printing of work permit in the output form maintained by the userProvides the ability to extend the validity even after the creation of work permitSupports all operations relevant to work permit management such as approval, print, issue, return, close, deactivate, cancel, and mark for deletion.Provides the ability to view the records of data transfers using application logs

Fields (30)

KeyFieldSource TableSource FieldDescription
KEY TechObjIsEquipOrFuncnlLoc I_TechnicalObject TechObjIsEquipOrFuncnlLoc
KEY TechnicalObject I_TechnicalObject TechnicalObject
FunctionalLocationLabelName
TechObjIsEquipOrFuncnlLocDesc
TechnicalObjectDescription Technical Object Description
WorkCenter
WorkCenterText
MainWorkCenterInternalID I_TechnicalObject WorkCenterInternalID
MainWorkCenterPlant
Equipment I_TechnicalObject Equipment
FunctionalLocation
AssetRoom
AssetLocation
LocationName
MaintenancePlanningPlant MaintenancePlanningPlant
MaintenancePlannerGroup MaintenancePlannerGroup
MaintenancePlannerGroupName
PlantSection
PlantName
TechObjStatusIsInactive TechObjStatusIsInactive
CostCenter
ControllingArea
ControllingAreaName
MaintenancePlant
MaintenancePlantName
AuthorizationGroup AuthorizationGroup
MaintObjectLocAcctAssgmtNmbr I_TechnicalObject MaintObjectLocAcctAssgmtNmbr
_TechObjIsEquipOrFuncnlLoc _TechObjIsEquipOrFuncnlLoc
_LocationAccountAssignment _LocationAccountAssignment
MaintObjectInternalID I_TechnicalObject MaintObjectInternalID
@AccessControl.authorizationCheck: #MANDATORY
@VDM.viewType: #CONSUMPTION
@Search.searchable: true
@ObjectModel.representativeKey: 'TechnicalObject'
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass:  #MIXED
@ObjectModel.dataCategory: #VALUE_HELP
@Analytics.technicalName: 'CWRKPMTTECHOBJVH'
@Consumption.ranked: true
@EndUserText.label: 'Work Permit Technical Object'

define view entity C_WrkPmtTechnicalObjectVH
  as select from I_TechnicalObject as _TechnicalObject
  association [0..1] to I_TechObjIsEquipOrFuncnlLoc as _TechObjIsEquipOrFuncnlLoc on  _TechObjIsEquipOrFuncnlLoc.TechObjIsEquipOrFuncnlLoc = $projection.TechObjIsEquipOrFuncnlLoc
 {
      @ObjectModel.foreignKey.association: '_TechObjIsEquipOrFuncnlLoc'
      @ObjectModel.text.element: ['TechObjIsEquipOrFuncnlLocDesc']
      @UI.hidden
  key _TechnicalObject.TechObjIsEquipOrFuncnlLoc,
      @ObjectModel.text.element:  [ 'TechnicalObjectDescription' ]
      @EndUserText: { label: 'Technical Object', quickInfo: 'Technical Object' }
     // @Search: {defaultSearchElement: true, ranking: #LOW, fuzzinessThreshold: 0.6 }

      @UI.lineItem: [{ position:  10, label: 'Technical Object' }]
      @Consumption.filter.hidden: true
  key case when TechObjIsEquipOrFuncnlLoc = 'EAMS_FL'   then cast ( TechnicalObjectLabel as eams_tec_obj   preserving type ) // code added to remove leading zeros

          when TechObjIsEquipOrFuncnlLoc = 'EAMS_EQUI' then ltrim( TechnicalObjectLabel,'0' )
       end                                                                                                          as TechnicalObjectLabel,
      @UI.hidden: true
      @Search: {defaultSearchElement: true ,  ranking: #HIGH }
  key _TechnicalObject.TechnicalObject,
      @Search: {defaultSearchElement: false ,  ranking: #HIGH}
      @UI.hidden: true
      _TechnicalObject._FunctionalLocationLabel._FuncLocationLabelSearch.FunctionalLocationLabelName,
//      @Consumption.valueHelpDefinition: [{

//        entity: {

//          name: 'TechObjIsEquipOrFuncnlLoc',

//          -- Note: is corrected via filter transformation

//          --       reason: EAMS_EQUI / EAMS_FL should not be shown on UI, but performance is bad when searching with text.

//          element: 'TechObjIsEquipOrFuncnlLocDesc'

//        }

//      }]

      @ObjectModel.filter.transformedBy: 'CL_EAM_TECHOBJTYPE_FILTER_EXIT'
      @EndUserText: { label: 'Technical Object Type Description', quickInfo: 'Technical Object Type Description' }
      @UI.lineItem: [{ position:  20, label: 'Technical Object Type Description' }]
      @Consumption.filter.hidden: false
      _TechObjIsEquipOrFuncnlLoc._Text[1:Language=$session.system_language].TechObjIsEquipOrFuncnlLocDesc,
      @EndUserText.label: 'Technical Object Description'
      @Search: {defaultSearchElement: true, ranking: #LOW, fuzzinessThreshold: 0.7 }
      @UI.lineItem: [{ position:  30, label: 'Technical Object Description' }]
      _TechnicalObject._TechnicalObjectText[1:Language=$session.system_language].TechnicalObjectDescription,

      @ObjectModel.text.element: ['WorkCenterText']
      @Search: {defaultSearchElement: true, ranking: #LOW, fuzzinessThreshold: 0.7 }
      @UI.lineItem: [{ position:  40, label: 'Work Center' }]
      _TechnicalObject._WorkCenter.WorkCenter,
       @UI.hidden: true
       @Semantics.text: true
      _WorkCenter._Text[ 1: Language = $session.system_language ].WorkCenterText,
      _TechnicalObject.WorkCenterInternalID                                                                         as MainWorkCenterInternalID,
      @UI.hidden: true
//      @ObjectModel.foreignKey.association: '_Plant'

      _TechnicalObject._LocationAccountAssignment._WorkCenter.Plant                                                 as MainWorkCenterPlant,
      @UI.hidden: true
      _TechnicalObject.Equipment,
      @UI.hidden: true
      cast ( FunctionalLocation as eams_ui_oid_name preserving type )                                               as FunctionalLocation,
      @UI.hidden: true
      _TechnicalObject._LocationAccountAssignment.AssetRoom,
//      @Consumption.valueHelp: '_AssetLocationVH'

      @Consumption.valueHelpDefinition: [{
       entity: { name: 'C_PMAssetLocationVH', element: 'Location' }}]        
      @ObjectModel.text.element: ['LocationName']
      @UI.hidden: true
      _TechnicalObject._LocationAccountAssignment.AssetLocation,
      @UI.hidden: true
      _TechnicalObject._LocationAccountAssignment._Location.LocationName,
      @Consumption.filter.hidden: false
      MaintenancePlanningPlant,
      @Consumption.hidden: true
      @ObjectModel.text.element:  [ 'MaintenancePlannerGroupName' ]
      MaintenancePlannerGroup,
      @Consumption.hidden: true
      @Semantics.text: true
      _TechnicalObject._MaintenancePlannerGroup.MaintenancePlannerGroupName,
      @Consumption.valueHelpDefinition: [
       { entity:  { name:    'I_PlantSectionStdVH',
                    element: 'PlantSection' },
         additionalBinding: [{ localElement: 'MaintenancePlanningPlant',
                               element: 'Plant', usage: #FILTER_AND_RESULT }]
       }]
      @UI.hidden: true
      _TechnicalObject._LocationAccountAssignment.PlantSection,
      @UI.hidden: true
      _TechnicalObject._LocationAccountAssignment._PlantSection._Plant.PlantName,
      @UI.hidden: true
      concat_with_space( _TechnicalObject._LocationAccountAssignment._PlantSection.PlantSectionPersonRespName,
                         _TechnicalObject._LocationAccountAssignment._PlantSection.PlantSectionPersonRespPhone, 1 ) as PlantSectionDesc,
      @Consumption.hidden: true
      @UI.hidden: true
      TechObjStatusIsInactive,
      @Consumption.hidden: true
      _TechnicalObject._LocationAccountAssignment.CostCenter,
      @Consumption.hidden: true
       @ObjectModel.text.element:  [ 'ControllingAreaName' ]
      _TechnicalObject._LocationAccountAssignment.ControllingArea,
      @Consumption.hidden: true
      @Semantics.text: true
      _TechnicalObject._LocationAccountAssignment._ControllingArea.ControllingAreaName,
//      @Consumption.hidden: true

      @ObjectModel.text.element:  [ 'MaintenancePlantName' ]
      _TechnicalObject._LocationAccountAssignment.MaintenancePlant,
      @Consumption.hidden: true
      @Semantics.text: true
      _TechnicalObject._LocationAccountAssignment._MaintenancePlant.PlantName                                                                               as MaintenancePlantName,
      @Consumption.hidden: true
      AuthorizationGroup,
      @Consumption.hidden: true
      _TechnicalObject.MaintObjectLocAcctAssgmtNmbr,
      @Consumption.filter.hidden
      _TechObjIsEquipOrFuncnlLoc,
      @Consumption.hidden: true
      _LocationAccountAssignment,
//      @Consumption.hidden: true

//      _LocationAccountAssignment._PlantSection,

      _TechnicalObject.MaintObjectInternalID
}
where
      IsDeleted               <> 'X'
  and TechObjStatusIsInactive <> 'X'