Vfs_Object_Search

DDL: VFS_OBJECT_SEARCH SQL: VFS_SEARCH Type: view

Search

Vfs_Object_Search is a CDS View that provides data about "Search" in SAP S/4HANA. It reads from 19 data sources and exposes 143 fields.

Data Sources (19)

SourceAliasJoin Type
cts_hot_package cts_hot_package left_outer
euobjedit euobjedit inner
tadir tadir from
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir inner
tadir tadir left_outer
tadir tadir left_outer
tadir tadir left_outer
tadir tadir union_all
tadir tadir union_all
ttree ttree union_all
wbobjecttypes wbobjecttypes left_outer
wbobjtp_full wbobjtp_full left_outer

Annotations (4)

NameValueLevelField
AbapCatalog.sqlViewName VFS_SEARCH view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Search view

Fields (143)

KeyFieldSource TableSource FieldDescription
object_type tadir object
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
tabclassAPPENDthenDSelseDTendaswb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
subcMthenREPOelseINCLendasalias_type
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
subcMthenREPOelseINCLendasalias_type
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
fugr_with_nsFUNCasobject_type
object_name sedt_func funcname
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type
alias_name sedt_func funcname
wb_type
genflag tadir genflag
use_alias
object_name badi_spot badi_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
objectDDLSSTOBasobject_type
object_name v_ddldep objectname
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type
alias_name v_ddldep ddlname
wb_type
genflag tadir genflag
use_alias
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
wb_type wbobjtp_full type
genflag tadir genflag
use_alias
object_name wdy_component component_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
type1thenYDelseendaswb_type
genflag tadir genflag
use_alias
component_nameWDYNasobject_type
object_name sedt_wdyn wdyn_include
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
object_name tadir obj_name
author tadir author
devclass tadir devclass
created_on tadir created_on
masterlang tadir masterlang
alias_type tadir object
alias_name tadir obj_name
wb_type
genflag tadir genflag
use_alias
objectDEVCDEVCasobject_type
object_name tdevc devclass
author tdevc as4user
devclass tdevc devclass
masterlang tadir masterlang
alias_type
alias_name tdevc devclass
wb_type
genflag tadir genflag
use_alias
is_virtual
@AbapCatalog.sqlViewName: 'VFS_SEARCH'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Search'
define view Vfs_Object_Search
  as

  // TADIR objects

  // joining euobjedit works as a white-list functionality to exclude tadir that should not appear in the wb tree

  // joining wbobjecttypes-wbobjectlist to exclude from project explorer, but not from quicksearch

  select distinct from tadir
    inner join         euobjedit     on tadir.object = euobjedit.tadir
    left outer join    wbobjecttypes on  tadir.object                  = wbobjecttypes.objecttype
                                     and wbobjecttypes.is_main_subtype = 'X'
{
  tadir.object     as object_type,
  tadir.obj_name   as object_name,
  tadir.author     as author,
  tadir.devclass   as devclass,
  tadir.created_on as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  tadir.object     as alias_type,
  tadir.obj_name   as alias_name,
  '   '            as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  case when wbobjecttypes.wbobjectlist is initial //exclude object types

       then 'X' else ''
  end              as is_virtual // X -> display in quicksearch but not in project explorer

}
where
      tadir.pgmid   =  'R3TR'
  and tadir.delflag <> 'X'
  // handled specially:

  and tadir.object  <> 'DEVC' // Packages

  and tadir.object  <> 'TABL' // Structures / Database Tables

  and tadir.object  <> 'PROG' // Programs / Includes

  and tadir.object  <> 'WDCC' // Web Dynpro Component Configurations

  and tadir.object  <> 'WDCA' // Web Dynpro Application Configurations / FPM Application Configurations

  and tadir.object  <> 'WDYA' // Web Dynpro Applications / FPM Applications

  and tadir.object  <> 'WDYN' // Web Dynpro

  and tadir.object  <> 'SPRX' // Enterprise Services

  and tadir.object  <> 'HOTA' // HANA repository objects (v1.0) / HDI Namespace (v2.0)

  and tadir.object  <> 'SHI3' // Generic hierarchal objects / area menus

  //  and tadir.object  <> 'ENHO' // Enhancement Objects

  // hidden:

  and tadir.object  <> 'SOTR' // OTR Short Texts

  and tadir.object  <> 'BMFR' // Application Components

  and tadir.object  <> 'SUSC' // Authorization Object Classes

  and tadir.object  <> 'SQAQ' // Implementation Questions

  //and tadir.object  <> 'SCP2' // Business Configuration Sets

  and tadir.object  <> 'AVAS' // Classifications

  and tadir.object  <> 'CASV' // Check Aspect Values

  and tadir.object  <> 'IAML' // Language-Dependent MIME Objects

  and tadir.object  <> 'IAMU' // Mime Objects

  and tadir.object  <> 'IATU' // HTML Templates / Flog Logic

  and tadir.object  <> 'SMIM' // MIME Objects

  and tadir.object  <> 'STOB' // CDS Entities

  and tadir.object  <> 'IWSV' // OData V2 Gateway Service / only for API state

  and tadir.object  <> 'G4BA' // Gateway Service Group / only for API state

  and tadir.object  <> 'G4BS' // Gateway Service

  and tadir.object  <> 'GCPM' // Gateway OData Client Proxy

  and tadir.object  <> 'APIS' // API State


union all

// structures and database tables

select distinct from dd02l
  left outer join    tadir on  tadir.obj_name = dd02l.tabname
                           and tadir.object   = 'TABL'
{
  tadir.object     as object_type,
  tadir.obj_name   as object_name,
  tadir.author     as author,
  tadir.devclass   as devclass,
  tadir.created_on as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  case when dd02l.tabclass is null                                 then tadir.object
       when dd02l.tabclass = 'INTTAB' or dd02l.tabclass = 'APPEND' then 'STRU'
       else 'DTAB'
  end              as alias_type,
  tadir.obj_name   as alias_name,
  ''               as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  ' '              as is_virtual
}
where
      tadir.pgmid   =  'R3TR'
  and tadir.object  =  'TABL'
  and tadir.delflag <> 'X'

union all

// virtual dtab/stru records

select distinct from dd02l
  left outer join    tadir on  tadir.obj_name = dd02l.tabname
                           and tadir.object   = 'TABL'
{
  case when dd02l.tabclass is null                                 then tadir.object
          when dd02l.tabclass = 'INTTAB' or dd02l.tabclass = 'APPEND' then 'STRU'
          else 'DTAB'
     end           as object_type,
  tadir.obj_name   as object_name,
  tadir.author     as author,
  tadir.devclass   as devclass,
  tadir.created_on as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  tadir.object     as alias_type,
  tadir.obj_name   as alias_name,
  case when dd02l.tabclass is null then ''
       when dd02l.tabclass = 'INTTAB' or dd02l.tabclass = 'APPEND' then 'DS'
       else 'DT'
  end              as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  'X'              as is_virtual
}
where
      tadir.pgmid   =  'R3TR'
  and tadir.object  =  'TABL'
  and tadir.delflag <> 'X'


union all

// executable programs and program includes

select distinct from sedt_program
  left outer join    tadir on tadir.obj_name = sedt_program.name
{
  tadir.object     as object_type,
  tadir.obj_name   as object_name,
  tadir.author     as author,
  tadir.devclass   as devclass,
  tadir.created_on as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  case when sedt_program.subc = '1' or sedt_program.subc = 'M' then 'REPO'
//       when sedt_program.subc = 'I' then 'INCL'

       else 'INCL'
  end              as alias_type,
  tadir.obj_name   as alias_name,
  '   '            as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  ' '              as is_virtual
}
where
      tadir.pgmid              =  'R3TR'
  and tadir.object             =  'PROG'
  and tadir.delflag            <> 'X'
  and sedt_program.name_length <= 30

union all

// virtual repo/incl records

select distinct from sedt_program
  left outer join    tadir on tadir.obj_name = sedt_program.name
                           and(
                             sedt_program.subc            = '1'
                             or sedt_program.subc         = 'M'
                             or sedt_program.subc         = 'I'
                           )
{
  case when sedt_program.subc = '1' or sedt_program.subc = 'M' then 'REPO'
       when sedt_program.subc = 'I' then 'INCL'
       else tadir.object
  end              as object_type,
  tadir.obj_name   as object_name,
  tadir.author     as author,
  tadir.devclass   as devclass,
  tadir.created_on as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  case when sedt_program.subc = '1' or sedt_program.subc = 'M' then 'REPO'
//       when sedt_program.subc = 'I' then 'INCL'

       else 'INCL'
  end              as alias_type,
  tadir.obj_name   as alias_name,
  '   '            as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  'X'              as is_virtual
}
where
      tadir.pgmid              =  'R3TR'
  and tadir.object             =  'PROG'
  and tadir.delflag            <> 'X'
  and sedt_program.name_length <= 30

union all

// function modules

select distinct from sedt_func
  left outer join    tadir on tadir.obj_name = sedt_func.fugr_with_ns
{
  'FUNC'             as object_type,
  sedt_func.funcname as object_name,
  tadir.author       as author,
  tadir.devclass     as devclass,
  tadir.created_on   as created_on,
  tadir.masterlang   as masterlang,
  tadir.srcsystem    as source_system,
  'FUNC'             as alias_type,
  sedt_func.funcname as alias_name,
  '   '              as wb_type,
  tadir.genflag      as genflag,
  'X'                as use_alias,
  'X'                as is_virtual
}
where
       tadir.pgmid   =  'R3TR'
  and(
       tadir.object  =  'FUGR'
    or tadir.object  =  'FUGS'
    or tadir.object  =  'FUGX'    
  )
  and  tadir.delflag <> 'X'

union all

//BADI definition

select distinct from badi_spot
  left outer join    tadir on  tadir.obj_name = badi_spot.enhspotname
                           and tadir.object   = 'ENHS'
{
  tadir.object        as object_type,
  badi_spot.badi_name as object_name,
  tadir.author        as author,
  tadir.devclass      as devclass,
  tadir.created_on    as created_on,
  tadir.masterlang    as masterlang,
  tadir.srcsystem     as source_system,
  'BADI'              as alias_type,
  tadir.obj_name      as alias_name,
  '   '               as wb_type,
  tadir.genflag       as genflag,
  'X'                 as use_alias,
  'X'                 as is_virtual
}
where
      tadir.pgmid   =  'R3TR'
  and tadir.object  =  'ENHS'
  and tadir.delflag <> 'X'

union all

//STOB <-> DDLS mapping

select distinct from v_ddldep
  left outer join    tadir on  tadir.obj_name = v_ddldep.ddlname
                           and tadir.object   = 'DDLS'
{
  'STOB'              as object_type,
  v_ddldep.objectname as object_name,
  tadir.author        as author,
  tadir.devclass      as devclass,
  tadir.created_on    as created_on,
  tadir.masterlang    as masterlang,
  tadir.srcsystem     as source_system,
  'STOB'              as alias_type,
  v_ddldep.ddlname    as alias_name,
  '   '               as wb_type,
  tadir.genflag       as genflag,
  'X'                 as use_alias,
  'X'                 as is_virtual
}
where
      tadir.pgmid         =  'R3TR'
  and tadir.object        =  'DDLS'
  and tadir.delflag       <> 'X'
  and v_ddldep.objecttype =  'STOB'

union all

// Joins using fulltypes table: Web Dynpro and Enterprise serives

select from       tadir
  left outer join wbobjtp_full on  tadir.obj_name = wbobjtp_full.obj_name
                               and tadir.object   = wbobjtp_full.object
{
  tadir.object      as object_type,
  case when tadir.object = 'WDCA' or tadir.object = 'WDCC' then left(tadir.obj_name, 30) // strip off 00 / 09  suffixes

       else tadir.obj_name
  end               as object_name,
  tadir.author            as author,
  tadir.devclass          as devclass,
  tadir.created_on        as created_on,
  tadir.masterlang        as masterlang,
  tadir.srcsystem   as source_system,
  tadir.object      as alias_type,
  tadir.obj_name    as alias_name,
  wbobjtp_full.type as wb_type,
  tadir.genflag     as genflag,
  ' '               as use_alias,
  ' '               as is_virtual
}
where
       tadir.pgmid             =  'R3TR'
  and(
       tadir.object      =  'WDCA'
    or tadir.object      =  'WDCC'
    or tadir.object      =  'WDYA'
    or tadir.object      =  'SPRX'
    // keep in sync with FILL_WB_OBJECT_TYPES_FULL, SAPRSEUT, and RS_TREE_OBJECT_PLACEMENT

  )
  and  tadir.delflag           <> 'X'
  and  wbobjtp_full.type is not null

union all

// WDYN

select distinct from wdy_component
  inner join         tadir on  tadir.object   = 'WDYN'
                           and tadir.obj_name = wdy_component.component_name
{
  tadir.object                 as object_type,
  wdy_component.component_name as object_name,
  tadir.author                 as author,
  tadir.devclass               as devclass,
  tadir.created_on             as created_on,
  tadir.masterlang             as masterlang,
  tadir.srcsystem              as source_system,
  tadir.object                 as alias_type,
  tadir.obj_name               as alias_name,
  case when wdy_component.type = '0' then 'YC'
       when wdy_component.type = '1' then 'YD'
       else '   '
  end                          as wb_type,
  tadir.genflag                as genflag,
  ' '                          as use_alias,
  ' '                          as is_virtual
}
where
      tadir.pgmid   =  'R3TR'
  and tadir.delflag <> 'X'

union all

// WDYN include <-> TADIR component_name

select distinct from sedt_wdyn
  left outer join    tadir on tadir.obj_name = sedt_wdyn.component_name
{
  'WDYN'                 as object_type,
  sedt_wdyn.wdyn_include as object_name,
  tadir.author           as author,
  tadir.devclass         as devclass,
  tadir.created_on       as created_on,
  tadir.masterlang       as masterlang,
  tadir.srcsystem        as source_system,
  'WDYN'                 as alias_type,
  tadir.obj_name         as alias_name,
  'I'                    as wb_type,
  tadir.genflag          as genflag,
  'X'                    as use_alias,
  'X'                    as is_virtual
}
where
      tadir.pgmid   =  'R3TR'
  and tadir.object  =  'WDYN'
  and tadir.delflag <> 'X'


union all

// HOTA: exclude old v1 entries

select from       tadir
  left outer join cts_hot_package on tadir.obj_name = cts_hot_package.abap_hana_package_id
{
  tadir.object    as object_type,
  tadir.obj_name  as object_name,
  tadir.author          as author,
  tadir.devclass        as devclass,
  tadir.created_on      as created_on,
  tadir.masterlang      as masterlang,
  tadir.srcsystem as source_system,
  tadir.object    as alias_type,
  tadir.obj_name  as alias_name,
  '   '           as wb_type,
  tadir.genflag   as genflag,
  ' '             as use_alias,
  ' '             as is_virtual
}
where
      tadir.pgmid                                =  'R3TR'
  and tadir.object                         =  'HOTA'
  and cts_hot_package.abap_hana_package_id is null
  and tadir.delflag                              <> 'X'

union all

//// Enhancements

//select distinct from tadir

//  left outer join    enhheader on  tadir.obj_name = enhheader.enhname

//                           and tadir.object   = 'ENHO'

//{

//  key tadir.object                as object_type,

//      tadir.obj_name              as object_name,

//      tadir.author                as author,

//      tadir.devclass              as devclass,

//      tadir.created_on            as created_on,

//      tadir.masterlang            as masterlang,

//      tadir.srcsystem             as source_system,

//      tadir.object                as alias_type,

////      case when    enhheader.enhtooltype is null

////                or enhheader.enhtooltype = 'BADI_IMPL'

////                or enhheader.enhtooltype = 'CLASENH'

////                or enhheader.enhtooltype = 'WDYENH'

////                or enhheader.enhtooltype = 'INTFENH'

////                or enhheader.enhtooltype = 'FUGRENH'

////                or enhheader.enhtooltype = 'WDYCONF'   then ' '

//////                or enhheader.enhtooltype = 'HOOK_IMPL'

//       case when    enhheader.enhtooltype = 'HOOK_IMPL' then 'XHH'

//           else 'XH'

//      end                         as wb_type,

//      tadir.genflag               as genflag

//

//}

//where

//      tadir.pgmid   =  'R3TR'

//  and tadir.object  =  'ENHO'

//  and tadir.delflag <> 'X'

//

//union all


// SHI3: exclude some generic hierarchal objects

select from       ttree
  left outer join tadir on tadir.obj_name = ttree.id
{
  tadir.object     as object_type,
  tadir.obj_name   as object_name,
  tadir.author           as author,
  tadir.devclass         as devclass,
  tadir.created_on       as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  tadir.object     as alias_type,
  tadir.obj_name   as alias_name,
  '   '            as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  ' '              as is_virtual
}
where
      tadir.pgmid  =  'R3TR'
  and tadir.object =  'SHI3'
  and ttree.type   =  'BMENU'
  and tadir.delflag      <> 'X'

union all

// Packages

select distinct from tdevc
  left outer join    tadir on tadir.obj_name = tdevc.devclass and 
                     tadir.object = 'DEVC'                   
{
  'DEVC'           as object_type,
  tdevc.devclass   as object_name,
  tdevc.as4user    as author,
  tdevc.devclass   as devclass,
  case when tdevc.created_on is initial then tadir.created_on
       else tdevc.created_on
  end  
  as created_on,
  tadir.masterlang as masterlang,
  tadir.srcsystem  as source_system,
  'DEVC'           as alias_type,
  tdevc.devclass   as alias_name,
  '   '            as wb_type,
  tadir.genflag    as genflag,
  ' '              as use_alias,
  ' '              as is_virtual
}