DDCDS_ENTITY_ELEMENTS
Metadata of CDS Entities: Elements
DDCDS_ENTITY_ELEMENTS is a CDS View that provides data about "Metadata of CDS Entities: Elements" in SAP S/4HANA. It reads from 3 data sources (DDCDS_ENTITY_ELEMENTS_LIST, dd02b, tadir) and exposes 13 fields with key fields entity_name, entity_state, element_name. It has 10 associations to related views.
Data Sources (3)
| Source | Alias | Join Type |
|---|---|---|
| DDCDS_ENTITY_ELEMENTS_LIST | elements | inner |
| dd02b | stob | from |
| tadir | tadir | inner |
Associations (10)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | ddddlsrc03nt | _label_active | _label_active.strucobjn = stob.strucobjn and _label_active.as4local = stob.as4local and _label_active.fieldname = elements.fieldname and _label_active.ddlanguage = $session.system_language -- Element Label - English |
| [0..1] | ddddlsrc03nt | _label_active_en | _label_active_en.strucobjn = stob.strucobjn and _label_active_en.as4local = stob.as4local and _label_active_en.fieldname = elements.fieldname and _label_active_en.ddlanguage = 'E' -- Element Label - original language |
| [0..1] | ddddlsrc03nt | _label_active_orig | _label_active_orig.strucobjn = stob.strucobjn and _label_active_orig.as4local = stob.as4local and _label_active_orig.fieldname = elements.fieldname and _label_active_orig.ddlanguage = tadir.masterlang -- Element Label - fallback |
| [0..1] | ddfieldanno | _label_active_fb | _label_active_fb.strucobjn = stob.strucobjn and _label_active_fb.lfieldname = elements.fieldname and _label_active_fb.name = 'ENDUSERTEXT.LABEL' -- Annotation 'AGGREGATION.DEFAULT' |
| [0..1] | ddfieldanno | _aggregation_default | _aggregation_default.strucobjn = elements.strucobjn and _aggregation_default.lfieldname = elements.fieldname and _aggregation_default.name = 'AGGREGATION.DEFAULT' -- Annotation 'SEMANTICS.AMOUNT.CURRENCYCODE' |
| [0..1] | ddfieldanno | _currency_code | _currency_code.strucobjn = elements.strucobjn and _currency_code.lfieldname = elements.fieldname and _currency_code.name = 'SEMANTICS.AMOUNT.CURRENCYCODE' -- Annotation 'API.ELEMENT.RELEASESTATE' |
| [0..1] | ddfieldanno | _release_status | _release_status.strucobjn = elements.strucobjn and _release_status.lfieldname = elements.fieldname and _release_status.name = 'API.ELEMENT.RELEASESTATE' -- Data Element label medium - Current Language |
| [0..1] | dd04t | _dte_label_active | _dte_label_active.rollname = elements.rollname and _dte_label_active.as4local = elements.as4local and _dte_label_active.ddlanguage = $session.system_language and _dte_label_active.as4vers = '0000' -- Data Element label medium - English Language |
| [0..1] | dd04t | _dte_label_active_en | _dte_label_active_en.rollname = elements.rollname and _dte_label_active_en.as4local = elements.as4local and _dte_label_active_en.ddlanguage = 'E' and _dte_label_active_en.as4vers = '0000' -- Data Element label medium - Original Language |
| [0..1] | dd04t | _dte_label_active_orig | _dte_label_active_orig.rollname = elements.rollname and _dte_label_active_orig.as4local = elements.as4local and _dte_label_active_orig.ddlanguage = tadir.masterlang and _dte_label_active_orig.as4vers = '0000' |
Annotations (2)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| EndUserText.label | Metadata of CDS Entities: Elements | view |
Fields (13)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | entity_name | Entity Name Upper Case | ||
| KEY | entity_state | Entity State | ||
| KEY | element_name | Element Name | ||
| length | Length | |||
| decimals | Decimals | |||
| domain_name | Domain Name | |||
| data_element | Data Element | |||
| ref_field | Reference Element | |||
| ref_table | Reference Object | |||
| is_key | Is Key | |||
| is_virtual | Is Virtual | |||
| is_external | Is Element from Extend | |||
| simple_type | Simple Type |
//@AbapCatalog.sqlViewName: 'DDCDS_E_ELEM_V'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Metadata of CDS Entities: Elements'
// **********************************************************************************************************************************************************//
// This view provides elements metadata of CDS Entities. //
// Field Label texts are retrieved in the System Language. Fallback: First preference is English, the last preference is in original Language. //
// Field Annotations read via Annotation API are inherited from the base object. But this is not the case here. They are simply read from table ddfieldanno. //
// **********************************************************************************************************************************************************//
define view entity DDCDS_ENTITY_ELEMENTS
as select from dd02b as stob
inner join DDCDS_ENTITY_ELEMENTS_LIST as elements on elements.strucobjn = stob.strucobjn
and elements.as4local = stob.as4local
and elements.nodename = '.NODE1'
-- tadir
inner join tadir as tadir on tadir.pgmid = 'R3TR'
and tadir.object = 'STOB'
and tadir.obj_name = stob.strucobjn
-- Element Label - Current Language
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddddlsrc03nt as _label_active on _label_active.strucobjn = stob.strucobjn
and _label_active.as4local = stob.as4local
and _label_active.fieldname = elements.fieldname
and _label_active.ddlanguage = $session.system_language
-- Element Label - English
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddddlsrc03nt as _label_active_en on _label_active_en.strucobjn = stob.strucobjn
and _label_active_en.as4local = stob.as4local
and _label_active_en.fieldname = elements.fieldname
and _label_active_en.ddlanguage = 'E'
-- Element Label - original language
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddddlsrc03nt as _label_active_orig on _label_active_orig.strucobjn = stob.strucobjn
and _label_active_orig.as4local = stob.as4local
and _label_active_orig.fieldname = elements.fieldname
and _label_active_orig.ddlanguage = tadir.masterlang
-- Element Label - fallback
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddfieldanno as _label_active_fb on _label_active_fb.strucobjn = stob.strucobjn
and _label_active_fb.lfieldname = elements.fieldname
and _label_active_fb.name = 'ENDUSERTEXT.LABEL'
-- Annotation 'AGGREGATION.DEFAULT'
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddfieldanno as _aggregation_default on _aggregation_default.strucobjn = elements.strucobjn
and _aggregation_default.lfieldname = elements.fieldname
and _aggregation_default.name = 'AGGREGATION.DEFAULT'
-- Annotation 'SEMANTICS.AMOUNT.CURRENCYCODE'
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddfieldanno as _currency_code on _currency_code.strucobjn = elements.strucobjn
and _currency_code.lfieldname = elements.fieldname
and _currency_code.name = 'SEMANTICS.AMOUNT.CURRENCYCODE'
-- Annotation 'API.ELEMENT.RELEASESTATE'
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/
association [0..1] to ddfieldanno as _release_status on _release_status.strucobjn = elements.strucobjn
and _release_status.lfieldname = elements.fieldname
and _release_status.name = 'API.ELEMENT.RELEASESTATE'
-- Data Element label medium - Current Language
association [0..1] to dd04t as _dte_label_active on _dte_label_active.rollname = elements.rollname
and _dte_label_active.as4local = elements.as4local
and _dte_label_active.ddlanguage = $session.system_language
and _dte_label_active.as4vers = '0000'
-- Data Element label medium - English Language
association [0..1] to dd04t as _dte_label_active_en on _dte_label_active_en.rollname = elements.rollname
and _dte_label_active_en.as4local = elements.as4local
and _dte_label_active_en.ddlanguage = 'E'
and _dte_label_active_en.as4vers = '0000'
-- Data Element label medium - Original Language
association [0..1] to dd04t as _dte_label_active_orig on _dte_label_active_orig.rollname = elements.rollname
and _dte_label_active_orig.as4local = elements.as4local
and _dte_label_active_orig.ddlanguage = tadir.masterlang
and _dte_label_active_orig.as4vers = '0000'
{
@EndUserText.label: 'Entity Name Upper Case'
key cast(stob.strucobjn as abap.char(30)) as entity_name,
@EndUserText.label: 'Entity State'
key cast(stob.as4local as abap.char(1)) as entity_state,
@EndUserText.label: 'Element Name'
key cast(elements.fieldname as abap.char(30)) as element_name,
@EndUserText.label: 'Entity Name Raw'
cast(stob.strucobjn_raw as abap.char(30)) as entity_name_raw,
@EndUserText.label: 'Element Name Raw'
cast(elements.fieldname_raw as abap.char(30)) as element_name_raw,
@EndUserText.label: 'Element Position'
cast(elements.element_position as abap.int4) as element_position,
@EndUserText.label: 'Element Type'
cast( case when elements.element_position = 0 then 'ASSOC'
else 'FIELD' end as abap.char(10)) as element_type,
@EndUserText.label: 'Direct Element Label'
cast(coalesce( coalesce( coalesce( _label_active.fieldlabel, _label_active_en.fieldlabel ), _label_active_orig.fieldlabel ), _label_active_fb.value ) as abap.char(250)) as direct_element_label, // it is not inherited and not aligned with Metadata Extension aligned
@EndUserText.label: 'Language of Direct Element Label'
coalesce( coalesce( _label_active.ddlanguage, _label_active_en.ddlanguage ), _label_active_orig.ddlanguage ) as direct_element_label_language,
@EndUserText.label: 'Data Type'
cast( case when elements.datatype = 'D16D' then 'DF16_DEC'
when elements.datatype = 'D16R' then 'DF16_RAW'
when elements.datatype = 'D16S' then 'DF16_SCL'
when elements.datatype = 'D34D' then 'DF34_DEC'
when elements.datatype = 'D34R' then 'DF34_RAW'
when elements.datatype = 'D16S' then 'DF34_SCL'
when elements.datatype = 'D16N' then 'DECFLOAT16'
when elements.datatype = 'D34N' then 'DECFLOAT34'
when elements.datatype = 'UTCL' then 'UTCLONG'
when elements.datatype = 'RSTR' then 'RAWSTRING'
when elements.datatype = 'SSTR' then 'SSTRING'
when elements.datatype = 'STRG' then 'STRING'
when elements.datatype = 'GGM1' then 'GEOM_EWKB'
else elements.datatype end as abap.char(10)) as data_type,
@EndUserText.label: 'Length'
cast(elements.leng as abap.numc(6) ) as length,
@EndUserText.label: 'Decimals'
cast(elements.decimals as abap.numc(6) ) as decimals,
@EndUserText.label: 'Domain Name'
cast(elements.domname as abap.char(30)) as domain_name,
@EndUserText.label: 'Data Element'
cast(elements.rollname as abap.char(30)) as data_element,
@EndUserText.label: 'Data Element Label Medium'
cast(coalesce( coalesce( _dte_label_active.scrtext_m, _dte_label_active_en.scrtext_m ), _dte_label_active_orig.scrtext_m ) as abap.char(20)) as data_element_label_m,
@EndUserText.label: 'Data Element Label Medium Language'
coalesce( coalesce( _dte_label_active.ddlanguage, _dte_label_active_en.ddlanguage ), _dte_label_active_orig.ddlanguage ) as data_element_label_m_language,
@EndUserText.label: 'Reference Element'
cast(elements.reffield as abap.char(30)) as ref_field,
@EndUserText.label: 'Reference Object'
cast(elements.reftable as abap.char(30)) as ref_table,
@EndUserText.label: 'Direct Default Aggregation'
cast( _aggregation_default.value as abap.char(30) ) as direct_default_aggregation, // it is not inherited and hence not aligned with Annotation API
@EndUserText.label: 'Direct Currency Code'
cast( _currency_code.value as abap.char(65) ) as direct_currency_code, // it is not inherited and hence not aligned with Annotation API
@EndUserText.label: 'Direct Release Status'
cast( _release_status.value as abap.char(30) ) as direct_release_status, // it is not inherited and hence not aligned with Annotation API
@EndUserText.label: 'Is Key'
cast(elements.keyflag as abap.char(1)) as is_key,
@EndUserText.label: 'Is Calculated'
cast(elements.is_calculated as abap.char(1)) as is_calculated,
@EndUserText.label: 'Is Virtual'
cast(elements.is_virtual as abap.char(1)) as is_virtual,
@EndUserText.label: 'Is Element from Extend'
case when elements.fieldorigin = 'E' then 'X' else ' ' end as is_external,
@EndUserText.label: 'Simple Type'
cast(elements.simple_type as abap.char(30)) as simple_type
}
where
stob.as4local = 'A'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"DDCDS_ENTITY_ELEMENTS_LIST",
"DD02B",
"DD04T",
"DDDDLSRC03NT",
"DDFIELDANNO",
"TADIR"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA