Skip to content

ABAP Keyword Documentation →  ABAP - Dictionary →  ABAP CDS in ABAP Dictionary →  ABAP CDS - Annotations →  ABAP CDS - SAP Annotations →  ABAP CDS - Framework-Specific Annotations 

ABAP CDS - Framework-Specific Annotation Definitions

The following DDLA source code shows the CDS annotation definitions in all framework-specific annotations in CDS DDL and CDS DCL in ABAP CDS.

  • The semantics of the annotations can be found in the links in the DDLA source code.

The documentation CDS Annotations summarizes the descriptions of the framework-specific annotations.

Other versions: 7.31 | 7.40 | 7.54


AccessControl-Annotations

@Scope:[#VIEW, #TABLE_FUNCTION, #HIERARCHY]
annotation AccessControl
{
  @CompatibilityContract: {
   c1: { usageAllowed: true },
   c1: {
      allowedChanges: { annotation: [#ADD ],
                        value: [#ANY ]
                       }
        },  
   c2: { usageAllowed: true },
   c2: {
      allowedChanges: { annotation: [#ADD ],
                        value: [#ANY ]
                      }
       }
   }
   @API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
   authorizationCheck : String(20) enum { NOT_REQUIRED; NOT_ALLOWED; CHECK; PRIVILEGED_ONLY; } default #CHECK;
   @CompatibilityContract: {
   c1: { usageAllowed: true },
   c1: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#ANY ]
                       }
        },  
   c2: { usageAllowed: true },
   c2: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#ANY ]
                      }
       }
   }
   privilegedAssociations: array of AssociationRef;
@Scope: [ #VIEW ]
@CompatibilityContract: {
   c1: { usageAllowed: true },
   c1: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#ANY ]
                       }
        },  
   c2: { usageAllowed: true },
   c2: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#ANY ]
                      }
       }
   }
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]    
   auditing  
{
  type
   : String(20) enum { CUSTOM;};
  specification
   : String(1000);
}
   @CompatibilityContract: {
   c1: { usageAllowed: true },
   c1: {
      allowedChanges: { annotation: [#ADD ],
                        value: [#ANY ]
                       }
        },  
   c2: { usageAllowed: true },
   c2: {
      allowedChanges: { annotation: [#ADD ],
                        value: [#ANY ]
                      }
       }
   }
   personalData
   {
      blocking : String(30) enum { NOT_REQUIRED; REQUIRED; BLOCKED_DATA_EXCLUDED; };    
      blockingIndicator : array of ElementRef;
   };
   @CompatibilityContract: {
       c1: { usageAllowed: true,
             allowedChanges.annotation: [ #ANY ],
             allowedChanges.value: [ #ANY ] },  
       c2: { usageAllowed: true,
             allowedChanges.annotation: [ #ANY ],
             allowedChanges.value: [ #ANY ] }
       }
    @MetadataExtension.usageAllowed: true
    @Scope: [#VIEW,#ELEMENT,#PARAMETER, #HIERARCHY]
    readAccess {
       logging {
            logdomain: array of  
              {
                area: String(30);
                domain: String(30);
              }
          @Scope: [#VIEW]
          output: Boolean;
       }
    };
};

Aggregation-Annotations

@Scope:[#ELEMENT]  
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation Aggregation
{
   default: String(30) enum
      {
         NONE;
         SUM;
         MIN;
         MAX;
         AVG;
         COUNT_DISTINCT;
         NOP;
         FORMULA;
      };
   exception : String( 30) enum
      {  
         SUM;
         MIN;
         MAX;
         AVG;
         COUNT;
         COUNT_DISTINCT;
         FIRST;
         LAST;
         STANDARD_DEVIATION;
         VARIANCE;
         MEDIAN;
         NHA;  
      };
   referenceElement : array of ElementRef;
};

Analytics-Annotations

@Scope:[#VIEW, #TABLE_FUNCTION]  
@CompatibilityContract: { c2.usageAllowed: false,
                          c1.usageAllowed: true }
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]                    
annotation Analytics
{
  @CompatibilityContract: {
    c1: { allowedChanges.annotation: [ #ADD ],
          allowedChanges.value: [ #NONE ] } }
   dataCategory : String(20) enum { DIMENSION; FACT; CUBE; AGGREGATIONLEVEL; };
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #ADD ],
           allowedChanges.value: [ #FALSE_TO_TRUE ] } }    
   query : Boolean default true;
   @Scope:[#VIEW, #ELEMENT]  
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #REMOVE ],
           allowedChanges.value: [ #TRUE_TO_FALSE ] } }    
   hidden : Boolean default true;
   @API.state: [#NOT_RELEASED]
   planning
   {
      @CompatibilityContract: {
        c1: { allowedChanges.annotation: [ #ADD ],
              allowedChanges.value: [ #FALSE_TO_TRUE ] } }    
      enabled : Boolean default true;
   };
    @CompatibilityContract: {
      c1: { allowedChanges.annotation: [ #ANY ],
            allowedChanges.value: [ #ANY ] } }
   @API.state: [#NOT_RELEASED]            
   dataExtraction
   {
      enabled : Boolean default true;
      delta
      {
         byElement
         {
            name : ElementRef;
            @CompatibilityContract: {
              c1: { allowedChanges.annotation: [ #ANY ],
                    allowedChanges.value: [ #ANY ] } }              
            @MetadataExtension.usageAllowed : true  
            maxDelayInSeconds : Integer default 1800;
            detectDeletedRecords : Boolean default true;
            @CompatibilityContract: {
              c1: { allowedChanges.annotation: [ #ANY ],
                    allowedChanges.value: [ #ANY ] } }              
            @MetadataExtension.usageAllowed : true  
            ignoreDeletionAfterDays : Integer;
         };
         changeDataCapture
         {
            automatic : Boolean default true;            
            mapping
            {
               role : String(30) enum {MAIN; LEFT_OUTER_TO_ONE_JOIN;};
               table : String(30);
               viewElement : array of ElementRef;
               tableElement : array of ElementRef;
               filter : array of  
               {
                  tableElement : ElementRef;
                  operator : String(11) enum {EQ;NOT_EQ;GT;GE;LT;LE;BETWEEN;NOT_BETWEEN;} default #EQ;
                  value : String(45);
                  highValue : String(45);
               };
            };
         };
      };
      filter : array of  
      {
         viewElement : ElementRef;
         operator : String(11) enum {EQ;NOT_EQ;GT;GE;LT;LE;BETWEEN;NOT_BETWEEN;} default #EQ;
         value : String(45);
         highValue : String(45);
      };
   };
  @Scope:[#VIEW]
  @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #ADD ],
           allowedChanges.value: [ #FALSE_TO_TRUE ] } }
   @API.state: [#NOT_RELEASED]            
  viewModelReplication
  {
    enabled : Boolean default true;
  };
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #ANY ],
           allowedChanges.value: [ #ANY ] } }      
   hints : String(1298);
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #ADD ],
           allowedChanges.value: [ #ANY ] } }    
   @API.state: [#NOT_RELEASED]              
   writeBack
   {
      className : String(30);
   };
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #ANY ],
           allowedChanges.value: [ #ANY ] } }    
   settings
   {
      maxProcessingEffort : String(20) enum { LOW; MEDIUM; HIGH; UNLIMITED; } default #HIGH;
      zeroValues: {  
         handling: String(20) enum { SHOW; HIDE; HIDE_IF_ALL; } default #SHOW;
         hideOnAxis: String(20) enum { ROWS; COLUMNS; ROWS_COLUMNS; } default #ROWS_COLUMNS;
      };
   };
   @Scope:[#VIEW, #ELEMENT]  
   @CompatibilityContract: {
     c1: { allowedChanges.annotation: [ #CUSTOM ],
           allowedChanges.value: [ #CUSTOM] } }    
   internalName : String(30) enum { DEFAULT; LOCAL; GLOBAL; };  
};

AnalyticsDetails-Annotations

@Scope:[#ELEMENT]  
@CompatibilityContract: {
  c1: { usageAllowed: true,
        allowedChanges.annotation: [ #ANY ],
        allowedChanges.value: [ #ANY ] },
  c2: {usageAllowed: false} }
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]    
annotation AnalyticsDetails
{
   query
   {
      formula : String(1298);
      axis : String(20) enum { FREE; ROWS; COLUMNS; };
      totals: String(20) enum { HIDE; SHOW; };
      scaling : Integer;
      decimals : Integer;
      display : String(20) enum { KEY; TEXT; TEXT_KEY; KEY_TEXT; };
      sortDirection : String(20) enum { ASC; DESC; };
      hidden : Boolean default true;
      displayHierarchy : String(20) enum { OFF; ON; FILTER; };
      hierarchyInitialLevel : Integer;
      hierarchyBinding : array of
      {
         type : String(12) enum { ELEMENT; PARAMETER; CONSTANT; USER_INPUT; SYSTEM_FIELD; };
         value : String(512);
         variableSequence : Integer;
      };
      hierarchySettings
      {
         hidePostedNodesValues : Boolean default true;
         hideNodeWithOneChild : Boolean default true;
         childNodePosition : String(10) enum { BELOW ; ABOVE; };          
      };            
      elementHierarchy
      {
         parent : ElementRef;
         initiallyCollapsed : Boolean default true;
      };          
      @Scope:[#ELEMENT, #PARAMETER]  
      variableSequence : Integer;
      resultValuesSource : String(10) enum { CUBE; DIMENSION; };
      reverseSign: Boolean default true;
      onCharacteristicStructure: Boolean default true;
      collisionHandling:  
      { formula  : String( 20) enum { DEFAULT; THIS; CONCURRENT; };
        decimals : String( 20) enum { DEFAULT; THIS; CONCURRENT; };
        scaling  : String( 20) enum { DEFAULT; THIS; CONCURRENT; };
      };
   };
   exceptionAggregationSteps : array of
   {
      exceptionAggregationBehavior : String(14) enum
      {
         SUM;
         MIN;
         MAX;
         COUNT;
         COUNT_DISTINCT;
         AVG;
         STD;
         FIRST;
         LAST;
         NHA;
      };
      exceptionAggregationElements : array of String(30);
   };
   @API.state: [#NOT_RELEASED]    
   planning
   {
      enabled : Boolean default true;
      disaggregation : String(20) enum { NONE; TOTAL; DIFFERENCE; };
      distribution : String(20) enum { EQUAL; PROPORTIONAL; PROPORTIONAL_REF; };
      distributionReference : ElementRef;
   };
};

Consumption-Annotations

define annotation Consumption
{
   @Scope:[#ENTITY, #PARAMETER, #ELEMENT]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   semanticObject   : String(120);
   @MetadataExtension.usageAllowed : true
   @Scope:[#ELEMENT, #PARAMETER]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   labelElement     : ElementRef;
   @Scope:[#ELEMENT, #PARAMETER]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   quickInfoElement : ElementRef;
   @Scope:[#ELEMENT, #PARAMETER]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #REMOVE ],
         allowedChanges.value: [ #TRUE_TO_FALSE ] },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   hidden : Boolean default true;
   @MetadataExtension.usageAllowed : true
   @Scope:[#ELEMENT, #PARAMETER]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   derivation
   {
       lookupEntity      : EntityRef;
       pfcgMapping       : String(30);
       resultElement     : String(30);
       resultElementHigh : String(30);
       resultHierarchyNode
       {
           nodeTypeElement : String(30);
           mapping : array of
           {
               hierarchyElement : String(30);
               lookupElement    : String(30);
           };
       };
       binding : array of
       {
           targetParameter : String(30);
           targetElement   : String(30);
           type            : String(12) enum
           {
               ELEMENT;
               PARAMETER;
               CONSTANT;
               SYSTEM_FIELD;
           };
           value           : String(512);
       };
   };
   @Scope:[#ELEMENT]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   filter
   {
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #NONE ],
            allowedChanges.value: [ #TRUE_TO_FALSE ] },
      c2: { usageAllowed: false } }
      mandatory        : Boolean default true;
      defaultValue     : String(1024);
      defaultValueHigh : String(1024);
      defaultHierarchyNode
      {
         nodeType : ElementRef;
         node     : array of
         {
            element : ElementRef;
            value   : String(512);
         };
      };
      hidden             : Boolean default true;
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value: [ #NONE ] },
      c2: { usageAllowed: false } }
      selectionType      : String(20) enum
      {
          SINGLE;
          INTERVAL;
          RANGE;
          HIERARCHY_NODE;
      };
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value: [ #FALSE_TO_TRUE ] },
      c2: { usageAllowed: false } }
      multipleSelections : Boolean default true;
      hierarchyBinding   : array of
      {
         type             : String(12) enum
         {
             ELEMENT;
             PARAMETER;
             CONSTANT;
             USER_INPUT;
             SYSTEM_FIELD;
         };
         value            : String(512);
         variableSequence : Integer;
      };
      @Scope: [#VIEW, #ELEMENT]
      @MetadataExtension.usageAllowed : false
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #CUSTOM ],
            allowedChanges.value:      [ #CUSTOM ] },
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #CUSTOM ],
            allowedChanges.value:      [ #CUSTOM ] } }
      businessDate :
      {
        at : Boolean default true;
      };
   };
   @Scope:[#ELEMENT]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   groupWithElement: ElementRef;
   @MetadataExtension.usageAllowed : true
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ]  } }
   ranking
   {
      functionParameterBinding : array of
      {
         functionId  : String(120);
         parameterId : String(120);
      };
      @Scope:[#VIEW, #ENTITY]
      activeFunctions : array of
      {
         id     : String(120);
         weight : Decimal(3,2) default 1;
      };
   };
   @Scope:[#PARAMETER,#ELEMENT]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   defaultValue : String(1024);
   @Scope:[#ELEMENT, #PARAMETER]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   valueHelp    : ElementRef;
   @Scope:[#ELEMENT, #PARAMETER]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },
   c2: { usageAllowed: false } }
   valueHelpDefinition: array of
   {
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      qualifier: String(120);
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      entity
      {
          @Scope:[#VIEW, #ELEMENT, #PARAMETER]
          name    : EntityRef;
          element : String(40);
      };
      association        : AssociationRef;
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      distinctValues     : Boolean default true;
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      additionalBinding : array of
      {
          localParameter : ParameterRef;
          localElement   : ElementRef;
          parameter      : String(40);
          element        : String(40);
          usage          : String(30) enum
          {
              FILTER;
              RESULT;
              FILTER_AND_RESULT;
          };
      };
      @LanguageDependency.maxLength : 40
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      label : String(60);
      @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
      presentationVariantQualifier : String(120);
   };
   @CompatibilityContract:{
   c1: { usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value:      [#ANY] },
   c2: { usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value:      [#ANY] } }
   @Scope: [#VIEW]
   @MetadataExtension.usageAllowed : true
   dbHints : array of String(1298);
   @CompatibilityContract:{
   c1: { usageAllowed: true,
         allowedChanges.annotation: [#ANY],
         allowedChanges.value:      [#ANY] },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [#ANY],
         allowedChanges.value:      [#ANY] } }
   @Scope: [#VIEW]
   dbHintsCalculatedBy : String(255);
};

DefaultAggregation-Annotations

@Scope:[#ELEMENT]  
annotation DefaultAggregation : String(30) enum { NONE; SUM; MIN; MAX; AVG; COUNT; COUNT_DISTINCT; FORMULA; };

EnterpriseSearch-Annotations

@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value: [#ANY]
        } ,
    c2: {
        usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value: [#ANY]
        }
}
@Scope:[#ELEMENT]  
@MetadataExtension.usageAllowed : true  
annotation EnterpriseSearch
{
   @Scope:[#ENTITY]  
   enabled : Boolean default true;
   @Scope:[#ENTITY]  
   hidden : Boolean default true;
   @Scope:[#ENTITY]
   assignedCategories : array of String(100);
   @Scope:[#ENTITY]  
   fieldGroupForSearchQuery : array of
   {
      name : String(128);
      elements : array of ElementRef;
   };
   @Scope:[#ELEMENT]  
   expand : Boolean default true;
   defaultValueSuggestElement : Boolean default true;
   searchOptions : String(500);
   filteringFacet
   {
      default : Boolean default true;
      displayPosition : Integer;
      collapse : Boolean default true;
      complexFilter : Boolean default true;
      numberOfValues : Integer;
      order
      {
         by : String(20) enum
         {
            NUMBER_OF_HITS;
            FILTER_ELEMENT_VALUE;
            FILTER_ELEMENT_LABEL;
         } default #NUMBER_OF_HITS;
         byReference : ElementRef;
         direction : String(4) enum
         {
            ASC;
            DESC;
         };
      };
      caseInsensitiveAggregation : Boolean default true;
      noIntervals: Boolean default true;  
      considerNullValues : Boolean default true;
   };
   filteringAttribute
   {
      default : Boolean default true;
      displayPosition : Integer;
      caseInsensitiveAggregation : Boolean default true;
      considerNullValues : Boolean default true;
   };    
   commonAttributes : array of String(100);
   technicalDescription : Boolean default true;
   snippets
   {
      enabled : Boolean default true;
      beginTag : String(128);
      endTag : String(128);
      maximumLength: Integer;
   };
   highlighted
   {
      enabled : Boolean default true;
      beginTag : String(128);
      endTag : String(128);
   };
   maximumLength : Integer;
   configurationSet : String(50);
};

Feature-Annotations

@CompatibilityContract: {
    c1: { usageAllowed: false },
    c2: { usageAllowed: true,
          allowedChanges.annotation: [ #REMOVE ],
          allowedChanges.value: [ #NONE ]}
}
@Scope:[#ENTITY, #ELEMENT ]
define annotation Feature : String(1024);

GenericPersistency-Annotations

@Scope:[#ELEMENT]
@CompatibilityContract: {  
c1: { usageAllowed: true,
      allowedChanges.annotation: [ #ADD ],
      allowedChanges.value: [ #NONE ] },
c2: { usageAllowed: false } }
define annotation GenericPersistency  
{
  property      : Boolean default true;
  propertyValue : array of ElementRef;
  format  
  {
    length          : ElementRef;
    decimals        : ElementRef;
    displayTemplate : ElementRef;
    exponentialDisplay  
    {
      exponentValue : ElementRef;
      displayFormat : ElementRef;
    };
  };
}

Hierarchy-Annotations

@Scope:[#VIEW]  
annotation Hierarchy
{
   parentChild : array of
   {
      name : String(127);
      label : String(1298);
      multipleParents : Boolean default true;
      recurseBy : ElementRef;
      recurse
      {
         parent : array of ElementRef;
         child : array of ElementRef;
      };
      siblingsOrder : array of
      {
         by : ElementRef;
         direction : String(4) enum { ASC; DESC; } default #ASC;
      };
      rootNode
      {
         visibility : String(25) enum { ADD_ROOT_NODE_IF_DEFINED; ADD_ROOT_NODE; DO_NOT_ADD_ROOT_NODE; } default #ADD_ROOT_NODE_IF_DEFINED;
      };
      orphanedNode
      {
         handling : String(20) enum { ROOT_NODES; ERROR; IGNORE; STEPPARENT_NODE; } default #ROOT_NODES;
         stepParentNodeId : array of String(1298);
      };
      directory : AssociationRef;
   };
};

ObjectModel-Annotations

annotation ObjectModel
{
   @Scope:[#VIEW, #TABLE_FUNCTION, #ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: false},    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }
                   
   createEnabled : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }
   updateEnabled : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: false},    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }    
   deleteEnabled : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   draftEnabled : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   lifecycle
   {
      processor :  
      {
         expiryBehavior
String(30) enum { RELATIVE_TO_PROCESSING_START; RELATIVE_TO_LAST_CHANGE; } default #RELATIVE_TO_LAST_CHANGE;
         expiryInterval : String(20) default 'PT15M';
         notificationBeforeExpiryInterval : String(20) default 'PT5M';
      };
      enqueue :
      {
         expiryBehavior : String(30) enum { RELATIVE_TO_ENQUEUE_START; RELATIVE_TO_LAST_CHANGE; } default #RELATIVE_TO_LAST_CHANGE;
         expiryInterval : String(20) default 'PT15M';
         notificationBeforeExpiryInterval : String(20) default 'PT5M';
      };
      processing :
      {
         expiryBehavior : String(30) enum { RELATIVE_TO_PROCESSING_START; RELATIVE_TO_LAST_CHANGE; } default #RELATIVE_TO_LAST_CHANGE;
         expiryInterval : String(20) default 'PT15M';
         notificationBeforeExpiryInterval : String(20) default 'PT10M';
      };  
      draft:  
      {      
         expiryBehavior : String(30) enum { RELATIVE_TO_PROCESSING_START; RELATIVE_TO_LAST_CHANGE; } default #RELATIVE_TO_LAST_CHANGE;
         expiryInterval : String(20) default 'P28D';
         notificationBeforeExpiryInterval : String(20) default 'PT10D';
      };    
   };
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   modelCategory : String(30) enum { BUSINESS_OBJECT; };
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }
   dataCategory : String(30) enum { TEXT; HIERARCHY; VALUE_HELP; };
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] } }  
   representativeKey : KeyElementRef;
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] } }
   semanticKey : array of ElementRef;
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false } ,    
   c2: { usageAllowed: false } }    
   alternativeKey : array of
   {
      id         : String(30);
      element    : array of ElementRef;
      uniqueness : String(30) enum { UNIQUE; UNIQUE_IF_NOT_INITIAL; };
   };
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }                
   compositionRoot : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   transactionalProcessingEnabled : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   transactionalProcessingUnitRoot : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #FALSE_TO_TRUE ] } }
   transactionalProcessingDelegated : Boolean default true;
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   writeDraftPersistence : String(16);
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   writeActivePersistence : String(16);
   @Scope:[#VIEW, #TABLE_FUNCTION]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #ANY ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #ANY ] } }
   entityChangeStateId : String(30);
   @Scope:[#VIEW]
   @CompatibilityContract: {
   c1: { usageAllowed: true,  
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value:      [ #ANY ] },
   c2: { usageAllowed: false } }  
   resultSet
   {
      sizeCategory : String(3) enum { XS; };
   };
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value:      [ #ANY ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value:      [ #ANY ] } }
   usageType
   {
      serviceQuality : String(30) enum { A; B; C; D; X; P; } default #X;
      sizeCategory : String(3) enum { S; M; L; XL; XXL; } default #S;
      dataClass : String(30) enum
      {
        TRANSACTIONAL;
        MASTER;
        ORGANIZATIONAL;
        CUSTOMIZING;
        META;
        MIXED;
      } default #MIXED;
   };
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }    
   association
   {
      type : array of String(30) enum { TO_COMPOSITION_CHILD; TO_COMPOSITION_PARENT; TO_COMPOSITION_ROOT;        
                                        TO_AGGREGATION_CHILD; TO_AGGREGATION_PARENT;};  
      reverseAssociation: String(30);
      @CompatibilityContract: {
      c1: { usageAllowed: false },    
      c2: { usageAllowed: false } }
      draft : { enabled : Boolean default true;  
                fieldNamePrefix : String(16); };      
   };
   @Scope:[#ELEMENT]  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   text
   {
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #ANY ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #ANY ] } }
      element : array of ElementRef;
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #CUSTOM ],
            allowedChanges.value:      [ #CUSTOM ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #NONE ] } }
      association : AssociationRef;
      @Scope: [#VIEW,#ELEMENT]
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ANY ],
            allowedChanges.value:      [ #ANY ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ANY ],
            allowedChanges.value:      [ #ANY ] } }
      control : String(60) enum { NONE; ASSOCIATED_TEXT_UI_HIDDEN; };
      @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #ANY ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #ANY ] } }
      reference  
      {  
        association : AssociationRef;
      };
   };
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #ANY ] },    
   c2: { usageAllowed: false } }    
   hierarchy
   {
      association : AssociationRef;
   };
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value:      [ #CUSTOM ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }    
   foreignKey
   {
      association : AssociationRef;
   };
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value:      [ #CUSTOM ] } }  
   readOnly : Boolean default true;
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value:      [ #CUSTOM ] } }    
   mandatory : Boolean default true;
   @Scope:[#ELEMENT]
   filter
   {
      @CompatibilityContract: {
      c1: { usageAllowed: false },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #CUSTOM ] } }  
      enabled : Boolean default true;
      @CompatibilityContract: {
      c1: { usageAllowed: false },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #REMOVE ],
            allowedChanges.value:      [ #ANY ] } }  
      transformedBy : String(255);
   };
   @Scope:[#ELEMENT]  
   sort
   {  
      @CompatibilityContract: {
      c1: { usageAllowed: false },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value:      [ #CUSTOM ] } }    
      enabled : Boolean default true;
      @CompatibilityContract: {
      c1: { usageAllowed: false },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #CUSTOM ],
            allowedChanges.value:      [ #ANY ] } }  
      transformedBy : String(255);
   };
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #REMOVE ],
         allowedChanges.value:      [ #ANY ] } }  
   virtualElement : Boolean default true;
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #REMOVE ],
         allowedChanges.value:      [ #ANY ] } }  
   virtualElementCalculatedBy : String(255);
   @Scope:[#VIEW, #CUSTOM_ENTITY]        
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]  
   query
   {
      @CompatibilityContract: {
      c1: { usageAllowed: false},
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ANY ],
            allowedChanges.value:      [ #ANY ] } }        
      implementedBy : String(255);
   };
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: false },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value:      [ #CUSTOM ] } }    
   enabled : Boolean default true;
   @Scope: [#VIEW]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   action : array of  
   {  
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     name     : String(30);
     @CompatibilityContract: {
     c1: { usageAllowed: false },
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #REMOVE ],
           allowedChanges.value:      [ #NONE ] } }
     feature : String( 40);
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     readOnly : Boolean default true;
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     instance :  
     {  
       bound : Boolean default true;  
     };
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     enabled : Boolean default true;
     @LanguageDependency.maxLength: 40
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #ADD ],
           allowedChanges.value:      [ #NONE ] } }
     label : String(60);
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     parameter :  
     {  
       dataType : EntityRef;  
     };  
     @CompatibilityContract: {
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #NONE ],
           allowedChanges.value:      [ #NONE ] } }
     result :  
     {  
       dataType : EntityRef;  
       cardinality : String(30) enum { ZERO_TO_ONE; ONE; ZERO_TO_MANY; ONE_TO_MANY; };  
     };
   };
   @Scope: [#VIEW]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] } }  
   delegatedAction : array of  
   {  
     @CompatibilityContract: {
     c1: { usageAllowed: false },    
     c2: { usageAllowed: true,
           allowedChanges.annotation: [ #ADD ],
           allowedChanges.value:      [ #ANY ] } }  
     name : String(30);
     exposureName: String(60);
     enabled : Boolean default true;  
   };
   @Scope:[#VIEW, #TABLE_FUNCTION]
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   draft
   {
     sharing : String(30) enum { NONE; RESTRICTED; PUBLIC; };
     concurrentEditing : Boolean default true;
   };
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }
   editableFieldFor : ElementRef;
   @Scope: [#VIEW]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value:      [ #NONE ] },    
   c2: { usageAllowed: false } }  
   uniqueIdField : ElementRef;
};

OData-Annotations

@MetadataExtension.usageAllowed : false
define annotation OData
{
   @Scope:[#VIEW]  
   @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value: [ #FALSE_TO_TRUE ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #ADD ],
            allowedChanges.value: [ #FALSE_TO_TRUE ] } }
   publish : Boolean default true;
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   etag :  Boolean default true;  
   @Scope:[#ENTITY]
   @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #NONE ],
            allowedChanges.value: [ #NONE ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #NONE ],
            allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   entitySet
   {
       name : String(30);
   };
   @Scope:[#ENTITY]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   entityType
   {
      name : String(128);
   };
   @Scope:[#ENTITY]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]    
   action: array of {
      name      : String(128);
      localName : String(30);
   };
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   property
   {
      name : String(128);
   };
   @Scope:[#SERVICE]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
   schema
   {
      name : String(128);
   };
   @Scope:[#VIEW]  
   @CompatibilityContract: {
      c1: { usageAllowed: true,
            allowedChanges.annotation: [ #NONE ],
            allowedChanges.value: [ #NONE ] },    
      c2: { usageAllowed: true,
            allowedChanges.annotation: [ #NONE ],
            allowedChanges.value: [ #NONE ] } }  
   v2  
   {
       autoAggregation : Boolean default true;    
   };
};

Search-Annotations

@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value: [#ANY]
        } ,
    c2: {
        usageAllowed: true,
        allowedChanges.annotation: [#ANY],
        allowedChanges.value: [#ANY]
        }
}
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
@Scope:[#ELEMENT]  
@MetadataExtension.usageAllowed : true  
annotation Search
{
   @Scope:[#ENTITY]  
   searchable : Boolean default true;    
   @Scope:[#ELEMENT]  
   defaultSearchElement : Boolean default true;
   ranking : String(6) enum { HIGH; MEDIUM; LOW; } default #MEDIUM;
   fuzzinessThreshold : Decimal(3,2);
   termMappingDictionary : String(128);
   termMappingListId : array of String(32);
   fulltextIndex
   {
     required : Boolean default true;
   };
};

Semantics-Annotations

@Scope: [#ELEMENT, #PARAMETER]  
define annotation Semantics
{
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }
   telephone  
   {
      type : array of String(10) enum  
      {  
          HOME;  
          CELL;  
          WORK;  
          FAX;  
          PREF;  
          TEXT;  
          VOICE;  
          VIDEO;  
          PAGER;  
          TEXT_PHONE;  
      };
   };
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }
   eMail  
   {
       type : array of String(10) enum  
       {  
           HOME;  
           WORK;  
           PREF;  
           OTHER;  
       };
       address         : Boolean default true;
       from            : Boolean default true;
       sender          : Boolean default true;
       to              : Boolean default true;
       cc              : Boolean default true;
       bcc             : Boolean default true;
       subject         : Boolean default true;
       body            : Boolean default true;
       keywords        : Boolean default true;
       received        : Boolean default true;
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }  
   name  
   {  
       fullName        : Boolean default true;
       givenName       : Boolean default true;
       additionalName  : Boolean default true;
       familyName      : Boolean default true;
       nickName        : Boolean default true;
       suffix          : Boolean default true;
       prefix          : Boolean default true;
       jobTitle        : Boolean default true;
   };
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }
   address  
   {
       type : array of String(10) enum  
       {  
           HOME;  
           WORK;  
           PREF;  
           OTHER;  
       };  
       city            : Boolean default true;
       street          : Boolean default true;
       streetNoNumber  : Boolean default true;
       number          : Boolean default true;
       country         : Boolean default true;
       region          : Boolean default true;
       subRegion       : Boolean default true;
       zipCode         : Boolean default true;
       postBox         : Boolean default true;
       label           : Boolean default true;
   };
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }    
   organization  
   {
       name            : Boolean default true;
       unit            : Boolean default true;
       role            : Boolean default true;
   };
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   calendarItem
   {
       summary         : Boolean default true;
       description     : Boolean default true;
       categories      : Boolean default true;
       dtStart         : Boolean default true;
       dtEnd           : Boolean default true;
       duration        : Boolean default true;
       due             : Boolean default true;
       completed       : Boolean default true;
       priority        : Boolean default true;
       class           : Boolean default true;
       status          : Boolean default true;
       percentComplete : Boolean default true;
       contact         : Boolean default true;
       location        : Boolean default true;
       transparent     : Boolean default true;
       fbType          : Boolean default true;  
       wholeDay        : Boolean default true;  
   };
   @CompatibilityContract: {  
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] },
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value:      [ #NONE ] } }    
   businessDate  
   {  
       @CompatibilityContract: {
       c1: { usageAllowed: true,
             allowedChanges.annotation: [ #CUSTOM ],
             allowedChanges.value:      [ #CUSTOM ] },    
       c2: { usageAllowed: true,
             allowedChanges.annotation: [ #CUSTOM ],
             allowedChanges.value:      [ #CUSTOM ] } }
       at              : Boolean default true;  
       from            : Boolean default true;  
       to              : Boolean default true;  
   };
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }              
   systemDateTime      
   {      
       createdAt       : Boolean default true;  
       lastChangedAt   : Boolean default true;  
   };      
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }    
   systemDate      
   {      
       createdAt       : Boolean default true;  
       lastChangedAt   : Boolean default true;  
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }      
   systemTime      
   {      
       createdAt       : Boolean default true;  
       lastChangedAt   : Boolean default true;  
   };    
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }    
   time                : Boolean default true;  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   durationInSeconds   : Boolean default true;
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #CUSTOM ] },    
   c2: { usageAllowed: false } }  
   calendar      
   {    
       @CompatibilityContract: {
       c1: { usageAllowed: true,
             allowedChanges.annotation: [ #ANY ],
             allowedChanges.value: [ #ANY ] },    
       c2: { usageAllowed: false } }
       dayOfMonth      : Boolean default true;
       @CompatibilityContract: {
       c1: { usageAllowed: true,
             allowedChanges.annotation: [ #ANY ],
             allowedChanges.value: [ #ANY ] },    
       c2: { usageAllowed: false } }  
       dayOfYear       : Boolean default true;  
       week            : Boolean default true;  
       month           : Boolean default true;  
       quarter         : Boolean default true;  
       halfyear        : Boolean default true;  
       year            : Boolean default true;  
       yearWeek        : Boolean default true;  
       yearMonth       : Boolean default true;  
       yearQuarter     : Boolean default true;  
       yearHalfyear    : Boolean default true;  
   };
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #CUSTOM ] },    
   c2: { usageAllowed: false } }    
   fiscal    
   {    
       yearVariant     : Boolean default true;  
       period          : Boolean default true;  
       year            : Boolean default true;  
       yearPeriod      : Boolean default true;  
       quarter         : Boolean default true;
       yearQuarter     : Boolean default true;
       week            : Boolean default true;
       yearWeek        : Boolean default true;
       dayOfYear       : Boolean default true;
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }    
   geoLocation    
   {    
       longitude       : Boolean default true;  
       latitude        : Boolean default true;  
       cartoId         : Boolean default true;  
       normalizedName  : Boolean default true;  
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: false }}      
   url  
   {  
       mimeType        : String(1024);  
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ADD ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }
   imageUrl : Boolean default true;
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   contact  
   {  
       type : String(12) enum  
       {
           PERSON;  
           ORGANIZATION;  
       };  
       note            : Boolean default true;  
       photo           : Boolean default true;  
       birthDate       : Boolean default true;  
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }      
   user      
   {    
       @CompatibilityContract: {
       c1: { usageAllowed: false },    
       c2: { usageAllowed: false } }    
       id              : Boolean default true;  
       createdBy       : Boolean default true;  
       lastChangedBy   : Boolean default true;
       @CompatibilityContract: {
       c1: { usageAllowed: false },    
       c2: { usageAllowed: false } }    
       responsible     : Boolean default true;  
   };  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ] },    
   c2: { usageAllowed: false } }    
   mimeType            : Boolean default true;  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #CUSTOM ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]      
   text                : Boolean default true;  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #CUSTOM ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #CUSTOM ],
         allowedChanges.value: [ #CUSTOM ] } }  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]      
   language            : Boolean default true;  
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   languageReference   : ElementRef;
   @Scope:[#ELEMENT]
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]        
   amount      
   {      
       currencyCode    : ElementRef;  
   };      
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]          
   quantity      
   {      
       unitOfMeasure   : ElementRef;  
   };      
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }  
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]          
   currencyCode        : Boolean default true;
   @Scope:[#ELEMENT]    
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }      
   @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]      
   unitOfMeasure       : Boolean default true;  
   @Scope:[#ELEMENT]    
   @CompatibilityContract: {
   c1: { usageAllowed: false },    
   c2: { usageAllowed: false } }  
   booleanIndicator    : Boolean default true;
   @Scope:[#ELEMENT]  
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] },    
   c2: { usageAllowed: true,
         allowedChanges.annotation: [ #NONE ],
         allowedChanges.value: [ #NONE ] } }
   largeObject
   {
       mimeType : ElementRef;
   };
   @Scope:[#ENTITY]
   @MetadataExtension.usageAllowed : true
   @CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value:      [ #ANY ] },  
   c2: { usageAllowed: false } }
   interval : array of
   {
      qualifier: String(120);  
      lowerBoundaryParameter : ParameterRef;
      lowerBoundaryElement   : ElementRef;
      lowerBoundaryIncluded  : Boolean default true;
      upperBoundaryParameter : ParameterRef;
      upperBoundaryElement   : ElementRef;
      upperBoundaryIncluded  : Boolean default true;
      boundaryCodeElement    : ElementRef;  
   }
    @Scope:[#ELEMENT]
    @MetadataExtension.usageAllowed : true
    @CompatibilityContract: {
    c1: { usageAllowed: true,
          allowedChanges.annotation: [ #ANY ],
          allowedChanges.value: [ #ANY ] },  
    c2: { usageAllowed: true,
          allowedChanges.annotation: [ #ANY ],
          allowedChanges.value: [ #ANY ] } }
    personalData {
       isPotentiallySensitive : Boolean default true;
       fieldSemantics : String(30) enum { DATA_SUBJECT_ID; LEGAL_ENTITY_ID; };
    }
    @Scope: [#ELEMENT]
    @CompatibilityContract: {
    c1: { usageAllowed: true,
          allowedChanges.annotation: [ #ANY ],
          allowedChanges.value: [ #FALSE_TO_TRUE ] },
    c2: { usageAllowed: false} }
    @API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
    signReversalIndicator : Boolean default true;
};

UI-Annotations

@MetadataExtension.usageAllowed : true  
@CompatibilityContract: {
   c1: { usageAllowed: true,
         allowedChanges.annotation: [ #ANY ],
         allowedChanges.value: [ #ANY ]
       },    
   c2: { usageAllowed: false
       }
}
@API.state: [ #RELEASED_FOR_SAP_CLOUD_PLATFORM ]
define annotation UI
{
   @Scope:[#ENTITY]  
   headerInfo
   {
       @LanguageDependency.maxLength : 40  
       typeName : String(60);
       @LanguageDependency.maxLength : 40  
       typeNamePlural : String(60);
       typeImageUrl : String(1024);
       imageUrl : ElementRef;
       title
       {
           type : String(40) enum
           {
               STANDARD;
               AS_CONNECTED_FIELDS;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
           criticalityRepresentation : String(12) enum
            {
                WITHOUT_ICON;
                WITH_ICON;          
            } default #WITHOUT_ICON;
           value          : ElementRef;
           valueQualifier : String(120);
           targetElement  : ElementRef;
           url            : ElementRef;
       };
       description
       {
           type : String(40) enum
           {
               STANDARD;
               AS_CONNECTED_FIELDS;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
           criticalityRepresentation : String(12) enum
           {
                WITHOUT_ICON;
                WITH_ICON;          
           } default #WITHOUT_ICON;
           value          : ElementRef;
           valueQualifier : String(120);
           targetElement  : ElementRef;
           url            : ElementRef;
       };
   };
   @Scope:[#ENTITY]  
   badge
   {
       headLine
       {
           type : String(40) enum
           {
               STANDARD;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
            criticalityRepresentation : String(12) enum
            {
                WITHOUT_ICON;
                WITH_ICON;          
            } default #WITHOUT_ICON;
           value : ElementRef;
           targetElement : ElementRef;
           url : ElementRef;
       };
       title
       {
           type : String(40) enum
           {
               STANDARD;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
            criticalityRepresentation : String(12) enum
            {
                WITHOUT_ICON;
                WITH_ICON;          
            } default #WITHOUT_ICON;
           value : ElementRef;
           targetElement : ElementRef;
           url : ElementRef;
       };
       typeImageUrl : String(1024);
       imageUrl : ElementRef;
       mainInfo
       {
           type : String(40) enum
           {
               STANDARD;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
            criticalityRepresentation : String(12) enum
            {
                WITHOUT_ICON;
                WITH_ICON;          
            } default #WITHOUT_ICON;
           value : ElementRef;
           targetElement : ElementRef;
           url : ElementRef;
       };
       secondaryInfo
       {
           type : String(40) enum
           {
               STANDARD;
               WITH_INTENT_BASED_NAVIGATION;
               WITH_NAVIGATION_PATH;
               WITH_URL;
           } default #STANDARD;
           @LanguageDependency.maxLength : 40  
           label : String(60);
           iconUrl : String(1024);
           criticality : ElementRef;
           criticalityRepresentation : String(12) enum
           {
                WITHOUT_ICON;
                WITH_ICON;          
           } default #WITHOUT_ICON;
           value : ElementRef;
           targetElement : ElementRef;
           url : ElementRef;
       };
   };
   @Scope:[#ENTITY]  
   chart : array of
   {
       qualifier : String(120);
       @LanguageDependency.maxLength : 40  
       title : String(60);
       @LanguageDependency.maxLength : 80  
       description : String(120);
       chartType : String(40) enum
       {
           COLUMN;
           COLUMN_STACKED;
           COLUMN_STACKED_100;
           COLUMN_DUAL;
           COLUMN_STACKED_DUAL;
           COLUMN_STACKED_DUAL_100;
           BAR;
           BAR_STACKED;
           BAR_STACKED_100;
           BAR_DUAL;
           BAR_STACKED_DUAL;
           BAR_STACKED_DUAL_100;
           AREA;
           AREA_STACKED;
           AREA_STACKED_100;
           HORIZONTAL_AREA;
           HORIZONTAL_AREA_STACKED;
           HORIZONTAL_AREA_STACKED_100;
           LINE;
           LINE_DUAL;
           COMBINATION;
           COMBINATION_STACKED;
           COMBINATION_STACKED_DUAL;
           HORIZONTAL_COMBINATION_STACKED;
           HORIZONTAL_COMBINATION_STACKED_DUAL;
           PIE;
           DONUT;
           SCATTER;
           BUBBLE;
           RADAR;
           HEAT_MAP;
           TREE_MAP;
           WATERFALL;
           BULLET;
           VERTICAL_BULLET;
           HORIZONTAL_WATERFALL;
           HORIZONTAL_COMBINATION_DUAL;
           DONUT_100;
       };
       dimensions : array of ElementRef;
       measures : array of ElementRef;
       dimensionAttributes : array of
       {
           dimension : ElementRef;
           role : String(10) enum
           {
               CATEGORY;
               SERIES;
               CATEGORY2;
           };
           valuesForSequentialColorLevels: array of String(1024);
           emphasizedValues: array of String(1024);      
       };
       measureAttributes : array of
       {
           measure : ElementRef;
           role : String(10) enum
           {
               AXIS_1;
               AXIS_2;
               AXIS_3;
           };
           asDataPoint : Boolean default true;
           useSequentialColorLevels: Boolean default true;
       };
       actions : array of
       {
           type : String(40) enum
           {
               FOR_ACTION;
               FOR_INTENT_BASED_NAVIGATION;
           };
           @LanguageDependency.maxLength : 40
           label : String(60);
           dataAction : String(120);
           requiresContext    : Boolean default true;
           invocationGrouping : String(12) enum
           {
               ISOLATED;
               CHANGE_SET;
           } default #ISOLATED;
           semanticObjectAction : String(120);
       };
   };
   @Scope:[#ENTITY]  
   selectionPresentationVariant : array of
   {
       qualifier : String(120);
       id : String(120);
       @LanguageDependency.maxLength : 40
       text : String(60);
       selectionVariantQualifier : String(120);
       presentationVariantQualifier : String(120);
   };
   @Scope:[#ENTITY]  
   selectionVariant : array of
   {
       qualifier : String(120);
       id : String(120);
       @LanguageDependency.maxLength : 40
       text : String(60);
       parameters : array of
       {
           name : ParameterRef;
           value : String(1024);
       };
       filter : String(1024);
   };
   @Scope:[#ENTITY]  
   presentationVariant : array of
   {
       qualifier : String(120);
       id : String(120);
       @LanguageDependency.maxLength : 40
       text : String(60);
       maxItems : Integer;
       sortOrder : array of
       {
           by : ElementRef;
           direction : String(4) enum
           {
               ASC;
               DESC;
           };
       };
       groupBy : array of ElementRef;
       totalBy : array of ElementRef;
       total : array of ElementRef;
       includeGrandTotal : Boolean default true;
       initialExpansionLevel : Integer;
       requestAtLeast : array of ElementRef;
       visualizations : array of
       {
           type : String(40) enum
           {
               AS_LINEITEM;
               AS_CHART;
               AS_DATAPOINT;
           };
           qualifier : String(120);
           element : ElementRef;
       };
        selectionFieldsQualifier : String(120);
   };
   @Scope:[#ELEMENT, #PARAMETER]
   hidden : Boolean default true;
   @Scope:[#ELEMENT]  
   masked : Boolean default true;
   @Scope:[#ELEMENT]  
   multiLineText : Boolean default true;
   @Scope:[#ELEMENT]  
   lineItem : array of
   {
       @Scope: [#ELEMENT, #ENTITY]
       qualifier  : String(120);
       position   : DecimalFloat;
       exclude    : Boolean default true;
       hidden     : Boolean default true;
       importance : String(6) enum { HIGH; MEDIUM; LOW; };
       type : String(40) enum
       {
           AS_ADDRESS;
           AS_CHART;
           AS_CONNECTED_FIELDS;
           AS_CONTACT;
           AS_DATAPOINT;
           AS_FIELDGROUP;
           FOR_ACTION;
           FOR_INTENT_BASED_NAVIGATION;
           STANDARD;
           WITH_INTENT_BASED_NAVIGATION;
           WITH_NAVIGATION_PATH;
           WITH_URL;
       } default #STANDARD;
       @LanguageDependency.maxLength : 40  
       label : String(60);
       iconUrl : String(1024);
       @Scope: [#ELEMENT, #ENTITY]
       criticality : ElementRef;
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;          
       } default #WITHOUT_ICON;
       dataAction           : String(120);
       requiresContext      : Boolean default true;
       invocationGrouping   : String(12) enum { ISOLATED; CHANGE_SET; } default #ISOLATED;
       semanticObjectAction : String(120);
       value                : ElementRef;
       valueQualifier       : String(120);
       targetElement        : ElementRef;
       url                  : ElementRef;
   };
   @Scope:[#ELEMENT]  
   identification : array of
   {
       position   : DecimalFloat;
       exclude    : Boolean default true;
       hidden     : Boolean default true;
       importance : String(6) enum { HIGH; MEDIUM; LOW; };
       type : String(40) enum
       {
           AS_ADDRESS;
           AS_CHART;
           AS_CONNECTED_FIELDS;
           AS_CONTACT;
           AS_DATAPOINT;
           AS_FIELDGROUP;
           FOR_ACTION;
           FOR_INTENT_BASED_NAVIGATION;
           STANDARD;
           WITH_INTENT_BASED_NAVIGATION;
           WITH_NAVIGATION_PATH;
           WITH_URL;
       } default #STANDARD;
       @LanguageDependency.maxLength : 40  
       label : String(60);
       iconUrl : String(1024);
       criticality : ElementRef;
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;          
       } default #WITHOUT_ICON;
       dataAction           : String(120);
       requiresContext      : Boolean default true;
       invocationGrouping   : String(12) enum { ISOLATED; CHANGE_SET; } default #ISOLATED;
       semanticObjectAction : String(120);
       value                : ElementRef;
       valueQualifier       : String(120);
       targetElement        : ElementRef;
       url : ElementRef;
   };
   @Scope:[#ELEMENT]  
   statusInfo : array of
   {
       position   : DecimalFloat;
       exclude    : Boolean default true;
       hidden     : Boolean default true;
       importance : String(6) enum { HIGH; MEDIUM; LOW; };
       type : String(40) enum
       {
           AS_ADDRESS;
           AS_CHART;
           AS_CONNECTED_FIELDS;
           AS_CONTACT;
           AS_DATAPOINT;
           AS_FIELDGROUP;
           FOR_ACTION;
           FOR_INTENT_BASED_NAVIGATION;
           STANDARD;
           WITH_INTENT_BASED_NAVIGATION;
           WITH_NAVIGATION_PATH;
           WITH_URL;
       } default #STANDARD;
       @LanguageDependency.maxLength : 40  
       label : String(60);
       iconUrl : String(1024);
       criticality : ElementRef;
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;          
       } default #WITHOUT_ICON;
       dataAction           : String(120);
       requiresContext      : Boolean default true;
       invocationGrouping   : String(12) enum { ISOLATED; CHANGE_SET; } default #ISOLATED;
       semanticObjectAction : String(120);
       value                : ElementRef;
       valueQualifier       : String(120);
       targetElement        : ElementRef;
       url                  : ElementRef;
   };
   @Scope:[#ELEMENT]  
   fieldGroup : array of
   {
       qualifier  : String(120);
       @LanguageDependency.maxLength : 40  
       groupLabel : String(60);
       position   : DecimalFloat;
       exclude    : Boolean default true;
       hidden     : Boolean default true;
       importance : String(6) enum { HIGH; MEDIUM; LOW; };
       type : String(40) enum
       {
           AS_ADDRESS;
           AS_CHART;
           AS_CONNECTED_FIELDS;
           AS_CONTACT;
           AS_DATAPOINT;
           AS_FIELDGROUP;
           FOR_ACTION;
           FOR_INTENT_BASED_NAVIGATION;
           STANDARD;
           WITH_INTENT_BASED_NAVIGATION;
           WITH_NAVIGATION_PATH;
           WITH_URL;
       } default #STANDARD;
       @LanguageDependency.maxLength : 40  
       label : String(60);
       iconUrl : String(1024);
       criticality : ElementRef;
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;          
       } default #WITHOUT_ICON;
       dataAction : String(120);
       requiresContext      : Boolean default true;
       invocationGrouping   : String(12) enum { ISOLATED; CHANGE_SET; } default #ISOLATED;
       semanticObjectAction : String(120);
       value                : ElementRef;
       valueQualifier       : String(120);
       targetElement        : ElementRef;
       url                  : ElementRef;
   };
   @Scope:[#ELEMENT]  
   dataPoint
   {
       qualifier : String(120);
       @LanguageDependency.maxLength : 40  
       title : String(60);
       @LanguageDependency.maxLength : 80  
       description : String(120);
       @LanguageDependency.maxLength : 193  
       longDescription : String(250);
       targetValue : DecimalFloat;
       targetValueElement : ElementRef;
       forecastValue : ElementRef;
       minimumValue : DecimalFloat;
       maximumValue : DecimalFloat;
       visualization : String(12) enum
       {
           NUMBER;
           BULLET_CHART;
           DONUT;
           PROGRESS;
           RATING;
       };
       valueFormat
       {
           scaleFactor : DecimalFloat;
           numberOfFractionalDigits : Integer;
       };
       referencePeriod
       {
           @LanguageDependency.maxLength : 80  
           description : String(120);
           start : ElementRef;
           end : ElementRef;
       };
       criticality : ElementRef;
       criticalityValue : Integer enum  
       {  
          NEGATIVE;  
          CRITICAL;  
          POSITIVE;  
       };
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;          
       } default #WITHOUT_ICON;
       criticalityCalculation
       {
           improvementDirection : String(8) enum  
           {  
              MINIMIZE;  
              TARGET;  
              MAXIMIZE;  
           };
           acceptanceRangeLowValue : DecimalFloat;  
           acceptanceRangeHighValue : DecimalFloat;  
           toleranceRangeLowValue : DecimalFloat;
           toleranceRangeLowValueElement : ElementRef;
           toleranceRangeHighValue : DecimalFloat;
           toleranceRangeHighValueElement : ElementRef;
           deviationRangeLowValue : DecimalFloat;
           deviationRangeLowValueElement : ElementRef;
           deviationRangeHighValue : DecimalFloat;
           deviationRangeHighValueElement : ElementRef;
           constantThresholds: array of  
           {
                aggregationLevel: array of ElementRef;
                acceptanceRangeLowValue: DecimalFloat;  
                acceptanceRangeHighValue: DecimalFloat;  
                toleranceRangeLowValue: DecimalFloat;  
                toleranceRangeHighValue: DecimalFloat;  
                deviationRangeLowValue: DecimalFloat;  
                deviationRangeHighValue: DecimalFloat;  
           };
       };
       trend : ElementRef;
       trendCalculation
       {
           referenceValue : ElementRef;
           isRelativeDifference : Boolean default true;
           upDifference : DecimalFloat;
           upDifferenceElement : ElementRef;
           strongUpDifference : DecimalFloat;
           strongUpDifferenceElement : ElementRef;
           downDifference : DecimalFloat;
           downDifferenceElement : ElementRef;
           strongDownDifference : DecimalFloat;
           strongDownDifferenceElement : ElementRef;
       };
       responsible : ElementRef;
       responsibleName : String(120);
   };
   @Scope:[#ELEMENT]  
   selectionField : array of
   {
       qualifier : String(120);
       position : DecimalFloat;
       exclude : Boolean default true;
       element : ElementRef;
   };
   @Scope:[#ELEMENT]  
   facet : array of
   {
       qualifier : String(120);
       @CompatibilityContract: {
       c1: { usageAllowed: false },
       c2: { usageAllowed: true,
           allowedChanges.annotation: [ #REMOVE ],
           allowedChanges.value: [ #NONE ]} }
       feature   : String(40);
       id : String(120);
       purpose : String(40) enum
       {
           STANDARD;
           HEADER;
           QUICK_VIEW;
           QUICK_CREATE;
           FILTER;  
       } default #STANDARD;
       parentId : String(120);
       position : DecimalFloat;
       exclude : Boolean default true;
       hidden : Boolean default true;
       isPartOfPreview : Boolean default true;
       isSummary : Boolean default true;
       isMap : Boolean default true;
       importance : String(6) enum
       {
           HIGH;
           MEDIUM;
           LOW;
       };
       @LanguageDependency.maxLength : 40  
       label : String(60);
       type  : String(40) enum
       {
           COLLECTION;
           ADDRESS_REFERENCE;
           BADGE_REFERENCE;
           CHART_REFERENCE;
           CONTACT_REFERENCE;
           DATAPOINT_REFERENCE;
           FIELDGROUP_REFERENCE;
           HEADERINFO_REFERENCE;
           IDENTIFICATION_REFERENCE;
           LINEITEM_REFERENCE;
           STATUSINFO_REFERENCE;
           URL_REFERENCE;
       };
       targetElement : ElementRef;
       targetQualifier : String(120);
       url : ElementRef;
   };
   @Scope:[#ENTITY, #ELEMENT]  
   textArrangement : String(13) enum
   {
       TEXT_FIRST;
       TEXT_LAST;
       TEXT_ONLY;
       TEXT_SEPARATE;
   };  
   @Scope: [#ELEMENT]
   kpi : array of  
   {
       qualifier                 : String(120);
       id                        : String(120);
       @LanguageDependency.maxLength: 10
       shortDescription          : String(20);
       selectionVariantQualifier : String(120);
       detail  
       {
          defaultPresentationVariantQualifier      : String(120);
          alternativePresentationVariantQualifiers : array of String(120);
          semanticObject       : String(120);
          semanticObjectAction : String(120);
       };
       dataPoint  
       {
           @LanguageDependency.maxLength : 40
           title           : String(60);  
           @LanguageDependency.maxLength : 80
           description     : String(120);  
           @LanguageDependency.maxLength : 193
           longDescription : String(250);  
           targetValue     : DecimalFloat;  
           forecastValue   : DecimalFloat;    
           minimumValue    : DecimalFloat;
           maximumValue    : DecimalFloat;
           valueFormat  
           {
               scaleFactor              : DecimalFloat;
               numberOfFractionalDigits : Integer;
           };
           visualization : String(12) enum  
           {  
               NUMBER;  
               BULLET_CHART;  
               DONUT;  
               PROGRESS;  
               RATING;  
           };
           referencePeriod {
               @LanguageDependency.maxLength: 80
               description : String(120);
               start       : ElementRef;  
               end         : ElementRef;  
           };
           criticality               : ElementRef;
           criticalityValue          : Integer enum  
           {  
               NEGATIVE;  
               CRITICAL;  
               POSITIVE;  
           };
           criticalityRepresentation : String(12) enum  
           {  
               WITHOUT_ICON;  
               WITH_ICON;  
           } default #WITHOUT_ICON;
           criticalityCalculation  
           {
               improvementDirection : String(8) enum  
               {  
                   MINIMIZE;  
                   TARGET;  
                   MAXIMIZE;  
               };
               acceptanceRangeLowValue  : DecimalFloat;  
               acceptanceRangeHighValue : DecimalFloat;  
               toleranceRangeLowValue   : DecimalFloat;  
               toleranceRangeHighValue  : DecimalFloat;  
               deviationRangeLowValue   : DecimalFloat;  
               deviationRangeHighValue  : DecimalFloat;  
               constantThresholds       : array of  
               {
                   aggregationLevel         : array of ElementRef;
                   acceptanceRangeLowValue  : DecimalFloat;  
                   acceptanceRangeHighValue : DecimalFloat;  
                   toleranceRangeLowValue   : DecimalFloat;  
                   toleranceRangeHighValue  : DecimalFloat;  
                   deviationRangeLowValue   : DecimalFloat;  
                   deviationRangeHighValue  : DecimalFloat;  
               };
         };
         trend : ElementRef;  
         trendCalculation  
         {
            referenceValue       : ElementRef;
            isRelativeDifference : Boolean ;
            upDifference         : DecimalFloat;  
            strongUpDifference   : DecimalFloat;
            downDifference       : DecimalFloat;  
            strongDownDifference : DecimalFloat;  
         };
         responsible    : ElementRef;  
         responsibleName: String(120);  
       };
   };
   @Scope: [#ELEMENT]
   valueCriticality: array of  
   {
      qualifier   : String(120);
      value       : String(120);
      criticality : Integer enum  
      {  
         NEGATIVE;  
         CRITICAL;  
         POSITIVE;  
      };
   };
   @Scope: [#ELEMENT]
   criticalityLabels : array of {
   qualifier: String(120);
   criticality: Integer enum  
   {  
     NEGATIVE;  
     CRITICAL;  
     POSITIVE;  
   };
   @LanguageDependency.maxLength: 40
   label: String(60);
   };
   @Scope: [#ELEMENT]
   connectedFields : array of
   {
       qualifier  : String(120);
       @LanguageDependency.maxLength : 40
       groupLabel : String(60);
       @LanguageDependency.maxLength : 197
       template   : String(255);
       name       : String(120);
       exclude    : Boolean default true;
       hidden     : Boolean default true;
       importance : String(6) enum { HIGH; MEDIUM; LOW; };
       type : String(40) enum
       {
           AS_ADDRESS;
           AS_CHART;
           AS_CONNECTED_FIELDS;
           AS_CONTACT;
           AS_DATAPOINT;
           AS_FIELDGROUP;
           FOR_ACTION;
           FOR_INTENT_BASED_NAVIGATION;
           STANDARD;
           WITH_INTENT_BASED_NAVIGATION;
           WITH_NAVIGATION_PATH;
           WITH_URL;
       } default #STANDARD;
       @LanguageDependency.maxLength : 40
       label : String(60);
       iconUrl : String(1024);
       criticality : ElementRef;
       criticalityRepresentation : String(12) enum
       {
           WITHOUT_ICON;
           WITH_ICON;        
       } default #WITHOUT_ICON;
       dataAction           : String(120);
       requiresContext      : Boolean default true;
       invocationGrouping   : String(12) enum { ISOLATED; CHANGE_SET; } default #ISOLATED;
       semanticObjectAction : String(120);
       value                : ElementRef;
       valueQualifier       : String(120);
       targetElement        : ElementRef;
       url                  : ElementRef;
   };
};