@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
}