@AbapCatalog.sqlViewName: 'DDCDS_G_DBO'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Get direct base objects'
// ***********************************************************************************************************//
// This view lists the direct base objects of a CDS entity which are either part of from clause
// or used in the join clause (also via Assoc path propagation).
// ***********************************************************************************************************//
define view DDCDS_DIRECT_BASE_OBJECTS
// ****************************************************************************************************************//
// -1- CDS V2 Entities(View Entity, Hierarchy etc) selecting from various objects like View, Hierarchy, Table etc.
// ****************************************************************************************************************//
as select from DDCDS_DIRECT_BASE_OBJECTS_V2
{
key entity_name,
key state,
direct_base_object_name,
direct_base_object_type,
primary_data_source
}
// ***********************************************************************************************************//
// -2- CDS V1 Views with V1 as base objects
// ***********************************************************************************************************//
union select from ddldependency as stob_dep
inner join ddldependency as view_dep on view_dep.objecttype = 'VIEW'
and view_dep.ddlname = stob_dep.ddlname
and view_dep.state = stob_dep.state
inner join dd2526v as dd2526v on dd2526v.viewname = view_dep.objectname
and dd2526v.as4local = stob_dep.state
inner join ddldependency as view_dep_dbo on view_dep_dbo.objecttype = 'VIEW'
and view_dep_dbo.objectname = dd2526v.tabname
and view_dep_dbo.state = dd2526v.as4local
inner join ddldependency as stob_dep_dbo on stob_dep_dbo.objecttype = 'STOB'
and stob_dep_dbo.ddlname = view_dep_dbo.ddlname
and stob_dep_dbo.state = view_dep_dbo.state
inner join ddtypes as object_type on object_type.typename = stob_dep_dbo.objectname
--and object_type.state = stob_dep_dbo.state
{
@EndUserText.label: 'Entity Name(Uppercase)'
key cast(stob_dep.objectname as abap.char(30)) as entity_name,
@EndUserText.label: 'Entity State'
key cast(stob_dep.state as abap.char(1)) as state,
@EndUserText.label: 'Direct Base Object Name(Uppercase)'
cast(stob_dep_dbo.objectname as abap.char(30)) as direct_base_object_name,
@EndUserText.label: 'Direct Base Object Type'
cast(object_type.typekind as abap.char(04)) as direct_base_object_type,
cast('' as abap.char(1) ) as primary_data_source
}
where
stob_dep.objecttype = 'STOB'
and stob_dep.state = 'A'
// ***********************************************************************************************************//
// -3- CDS V1 Views with tables as base objects
// ***********************************************************************************************************//
union select from ddldependency as stob_dep
inner join ddldependency as view_dep on view_dep.objecttype = 'VIEW'
and view_dep.ddlname = stob_dep.ddlname
and view_dep.state = stob_dep.state
inner join dd2526v as dd2526v on dd2526v.viewname = view_dep.objectname
and dd2526v.as4local = stob_dep.state
and dd2526v.tabname <> 'DDDDLNUMTYPES'
and dd2526v.tabname <> 'DDDDLCHARTYPES'
and dd2526v.tabname <> 'DDDDLCURRTYPES'
and dd2526v.tabname <> 'DDDDLQUANTYPES'
and dd2526v.tabname <> 'DDDDLDECTYPES'
and dd2526v.tabname <> 'T000'
inner join ddtypes as object_type on object_type.typename = dd2526v.tabname
--and object_type.state = dd2526v.as4local
and object_type.typekind = 'TABL'
{
@EndUserText.label: 'Entity Name(Uppercase)'
key cast(stob_dep.objectname as abap.char(30)) as entity_name,
@EndUserText.label: 'Entity State'
key cast(stob_dep.state as abap.char(1)) as state,
@EndUserText.label: 'Direct Base Object Name(Uppercase)'
cast(dd2526v.tabname as abap.char(30)) as direct_base_object_name,
@EndUserText.label: 'Direct Base Object Type'
cast(object_type.typekind as abap.char(04)) as direct_base_object_type,
cast('' as abap.char(1) ) as primary_data_source
}
where
stob_dep.objecttype = 'STOB'
and stob_dep.state = 'A'
// ***********************************************************************************************************//
// -4- CDS V1 Views with DB Views(and not generated SQL View) as base objects
// ***********************************************************************************************************//
union select from ddldependency as stob_dep
inner join ddldependency as view_dep on view_dep.objecttype = 'VIEW'
and view_dep.ddlname = stob_dep.ddlname
and view_dep.state = stob_dep.state
inner join dd2526v as dd2526v on dd2526v.viewname = view_dep.objectname
and dd2526v.as4local = stob_dep.state
inner join ddtypes as object_type on object_type.typename = dd2526v.tabname
--and object_type.state = dd2526v.as4local
and object_type.typekind = 'VIEW'
inner join tadir as tadir on tadir.pgmid = 'R3TR'
and tadir.object = 'VIEW'
and tadir.obj_name = dd2526v.tabname
and tadir.genflag <> 'X'
{
@EndUserText.label: 'Entity Name(Uppercase)'
key cast(stob_dep.objectname as abap.char(30)) as entity_name,
@EndUserText.label: 'Entity State'
key cast(stob_dep.state as abap.char(1)) as state,
@EndUserText.label: 'Direct Base Object Name(Uppercase)'
cast(dd2526v.tabname as abap.char(30)) as direct_base_object_name,
@EndUserText.label: 'Direct Base Object Type'
cast(object_type.typekind as abap.char(04)) as direct_base_object_type,
cast('' as abap.char(1) ) as primary_data_source
}
where
stob_dep.objecttype = 'STOB'
and stob_dep.state = 'A'
//***********************************************************************************************************//
//-5- CDS V1 Views on top of V2 Entities e.g. View on View Entity or View on Hierachy
//***********************************************************************************************************//
union select from ddldependency as stob_dep
inner join ddldependency as view_dep on view_dep.objecttype = 'VIEW'
and view_dep.ddlname = stob_dep.ddlname
and view_dep.state = stob_dep.state
inner join dd2526v as dd2526v on dd2526v.viewname = view_dep.objectname
and dd2526v.as4local = stob_dep.state
inner join ddldependency as stob_dep_dbo on stob_dep_dbo.objecttype = 'STOB'
and stob_dep_dbo.objectname = dd2526v.tabname
and stob_dep_dbo.state = dd2526v.as4local
inner join ddtypes as object_type on object_type.typename = stob_dep_dbo.objectname
--and object_type.state = stob_dep_dbo.state
{
@EndUserText.label: 'Entity Name(Uppercase)'
key cast(stob_dep.objectname as abap.char(30)) as entity_name,
@EndUserText.label: 'Entity State'
key cast(stob_dep.state as abap.char(1)) as state,
@EndUserText.label: 'Direct Base Object Name(Uppercase)'
cast(stob_dep_dbo.objectname as abap.char(30)) as direct_base_object_name,
@EndUserText.label: 'Direct Base Object Type'
cast(object_type.typekind as abap.char(04)) as direct_base_object_type,
cast('' as abap.char(1) ) as primary_data_source
}
where
stob_dep.objecttype = 'STOB'
and stob_dep.state = 'A'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"DDCDS_DIRECT_BASE_OBJECTS_V2",
"DDLDEPENDENCY",
"DDTYPES",
"TADIR",
"DD2526V"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/