DDCDS_ENTITY_ELEMENTS

DDL: DDCDS_ENTITY_ELEMENTS SQL: DDCDS_E_ELEM_V Type: view_entity

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)

SourceAliasJoin Type
DDCDS_ENTITY_ELEMENTS_LIST elements inner
dd02b stob from
tadir tadir inner

Associations (10)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Metadata of CDS Entities: Elements view

Fields (13)

KeyFieldSource TableSource FieldDescription
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":""
}
}*/