Skip to content

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

ABAP CDS - ABAP Annotation Definitions

The following DDLA source code shows the CDS annotation definitions in all ABAP 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 detailed meanings of these ABAP annotations are described under the relevant scope defined after @Scope in the documentation.

Other versions: 7.31 | 7.40 | 7.54


Note

See also ABAP Annotation Syntax.

AbapAnnotation-Annotations

@Scope: [#ANNOTATION]
annotation AbapAnnotation {
  definitionHidden : Boolean default true;
};

AbapCatalog-Annotations

@Scope:[#VIEW]
@CompatibilityContract.c2.usageAllowed: false
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation AbapCatalog
{
   @CompatibilityContract.c1: {
       usageAllowed: true,
       allowedChanges: {
           annotation: [#NONE],
           value: [#NONE]
       }
   }
   buffering
   {
      status : String(20) enum { NOT_ALLOWED; ACTIVE; SWITCHED_OFF; } default #SWITCHED_OFF;
      type : String(10) enum { SINGLE; GENERIC; FULL; NONE; } default #NONE;
      numberOfKeyFields : Integer default 000;
   };
   @CompatibilityContract.c1: {
       usageAllowed: true,
       allowedChanges: {
           annotation: [#ANY],
           value: [#ANY]
       }
   }
   dbHints : array of
   {
      dbSystem : String(3) enum
      {
         ADA;
         DB2;
         DB4;
         DB6;
         INF;
         MSS;
         ORA;
         HDB;
         ASE;
         ALL;
      };
      hint : String(1298);
   };
   @CompatibilityContract.c1: {
       usageAllowed: true,
       allowedChanges: {
           annotation: [#NONE],
           value: [#NONE]
       }
   }
   viewEnhancementCategory : array of String(20) enum
   {
      NONE;
      PROJECTION_LIST;
      GROUP_BY;
      UNION;
   };
   @CompatibilityContract: {
       c1: {
           usageAllowed: true,
           allowedChanges: {
               annotation: [#NONE],
               value: [#NONE]
           }
       },
       c2: {
           usageAllowed: true,
           allowedChanges: {
               annotation: [#NONE],
               value: [#NONE]
           }
       }
   }
   @API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM, #RELEASED_FOR_KEY_USER_APPS]    
   sqlViewName : String(16);
   @CompatibilityContract.c1: {
       usageAllowed: true,
       allowedChanges: {
           annotation: [#ADD],
           value: [#FALSE_TO_TRUE]
       }
   }
   @CompatibilityContract.c2: {
       usageAllowed: true,
       allowedChanges: {
           annotation: [#ADD],
           value: [#FALSE_TO_TRUE]
       }
   }    
   preserveKey : Boolean default true;
   @CompatibilityContract: {
       c1: {
           usageAllowed: true,
           allowedChanges: {
               annotation: [#NONE],
               value: [#NONE]
           }
       },
       c2: {
           usageAllowed: true,
           allowedChanges: {
               annotation: [#NONE],
               value: [#NONE]
           }
       }
   }
   compiler
   {
      compareFilter : Boolean default true;
      @Scope:[#ELEMENT]
      @AbapAnnotation.definitionHidden: true
      @CompatibilityContract: {
        c1: {
            usageAllowed: true,
            allowedChanges: {
                annotation: [#ANY],
                value: [#ANY]
            }
        },
        c2: {
            usageAllowed: true,
            allowedChanges: {
                annotation: [#ANY],
                value: [#ANY]
            }
        }
      }
      @API.state: [#NOT_RELEASED]        
      caseJoin : Boolean default true;
   };
   @AbapAnnotation.definitionHidden: true
   @CompatibilityContract.c1.usageAllowed: false
   @API.state: [#NOT_RELEASED]
   internal
   {  
      @Scope:[#ELEMENT]
      isMandt : Boolean default true;
      @Scope: [#VIEW, #EXTEND_VIEW]
      @CompatibilityContract: {
        c1: {
            usageAllowed: true,
            allowedChanges: {
                annotation: [#ANY],
                value: [#ANY]
            }
        },
        c2: {
            usageAllowed: true,
            allowedChanges: {
                annotation: [#ANY],
                value: [#ANY]
            }
        }
      }      
      setChange : String(30);  
      inheritedType : Boolean default true;    
   };
   @Scope:[#EXTEND_VIEW]
   @CompatibilityContract.c1.usageAllowed: false
   sqlViewAppendName : String(16);
   @Scope:[#ENTITY]
   @MetadataExtension.usageAllowed: false
   @AbapAnnotation.definitionHidden: true
   @CompatibilityContract.c1.usageAllowed: false
   @API.state: [#NOT_RELEASED]    
   sqlName : String(256);    
};

AccessControl-Annotations

See Framework Specific Annotation Definitions.

API-Annotations

define annotation API
{
  @Scope:[#ANNOTATION]
  state: array of String(40) enum {
    NOT_RELEASED;
    RELEASED_FOR_SAP_CLOUD_PLATFORM;
    RELEASED_FOR_KEY_USER_APPS;
  };
  @Scope:[#ELEMENT]
  @CompatibilityContract.c1.usageAllowed: true
  @CompatibilityContract.c2.usageAllowed: false
  element {    
    @CompatibilityContract.c1.allowedChanges: {annotation: [#CUSTOM], value: [#CUSTOM]}
    releaseState: String(30) enum {DEPRECATED;};
    @CompatibilityContract.c1.allowedChanges: {annotation: [#CUSTOM], value: [#CUSTOM]}
    successor: ElementRef;
  };
};

ClientDependent-Annotations

Obsolete annotations for scopes

VIEW, #TABLE_FUNCTION.

ClientHandling-Annotations

@Scope:[#VIEW, #TABLE_FUNCTION]
@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#NONE],
            value: [#NONE]
        }
    },
    c2: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#NONE],
            value: [#NONE]
        }
    }
}  
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation ClientHandling
{
   type : String(20) enum { CLIENT_DEPENDENT; CLIENT_INDEPENDENT; INHERITED; } default #INHERITED;
   algorithm : String(20) enum { NONE; AUTOMATED; SESSION_VARIABLE; };
};

CompatibilityContract-Annotations

@Scope:[#ANNOTATION]
define annotation CompatibilityContract {
  c0 {  
    usageAllowed: Boolean default true;
    allowedChanges {
      annotation: array of String(20) enum {ADD; REMOVE; ANY; NONE; CUSTOM;};
      value: array of String(20) enum {ADD; REMOVE; UPDATE; FALSE_TO_TRUE; TRUE_TO_FALSE; ANY; NONE; CUSTOM;};
    };
  };
  c1 {  
    usageAllowed: Boolean default true;
    allowedChanges {
      annotation: array of String(20) enum {ADD; REMOVE; ANY; NONE; CUSTOM;};
      value: array of String(20) enum {ADD; REMOVE; UPDATE; FALSE_TO_TRUE; TRUE_TO_FALSE; ANY; NONE; CUSTOM;};
    };
  };
  c2 {  
    usageAllowed: Boolean default true;
    allowedChanges {
      annotation: array of String(20) enum {ADD; REMOVE; ANY; NONE; CUSTOM;};
      value: array of String(20) enum {ADD; REMOVE; UPDATE; FALSE_TO_TRUE; TRUE_TO_FALSE; ANY; NONE; CUSTOM;};
    };
  };    
}

DataAging-Annotations

@Scope:[#VIEW, #TABLE_FUNCTION]
@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#ADD],
            value: [#FALSE_TO_TRUE]
        }
    },
    c2: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#ADD],
            value: [#FALSE_TO_TRUE]
        }
    }
}  
annotation DataAging
{
   noAgingRestriction : Boolean default true;
};

EndUserText-Annotations

@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#ANY],
            value: [#ANY]
        }
    },
    c2: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#ANY],
            value: [#ANY]
        }
    }        
}
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation EndUserText
{
   @MetadataExtension.usageAllowed : true
   @LanguageDependency.maxLength : 40
   @Scope:[#ENTITY, #PARAMETER, #ELEMENT, #EXTEND_VIEW, #ROLE, #ASPECT, #PFCG_MAPPING, #ACCESSPOLICY, #SERVICE]
   label : String(60);
   @MetadataExtension.usageAllowed : true
   @LanguageDependency.maxLength : 67  
   @Scope:[#ELEMENT, #PARAMETER, #ANNOTATE]
   quickInfo : String(100);
   @LanguageDependency.maxLength : 37
   @Scope:[#SIMPLE_TYPE]
   @API.state: [#NOT_RELEASED]
   heading : String(55);
};

Environment-Annotations

@CompatibilityContract: {
    c1: {
        usageAllowed: true,
        allowedChanges: {
            annotation: [#NONE],
            value: [#NONE]
        }
    },
    c2.usageAllowed: false
}
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation Environment
{
   @Scope:[#PARAMETER]
   systemField : String(20) enum { CLIENT; SYSTEM_LANGUAGE; USER; SYSTEM_DATE; SYSTEM_TIME; };
   @Scope:[#ELEMENT]
   sql
   {
      passValue : Boolean default true;
   };
};

LanguageDependency-Annotations

@Scope: [#ANNOTATION]
annotation LanguageDependency {
  maxLength : Integer;
};

MappingRole-Annotations

@Scope:[#ROLE]
@CompatibilityContract: {
   c1: { usageAllowed: true },
   c1: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#FALSE_TO_TRUE ] }
       },
   c2: { usageAllowed: true },  
   c2: {
      allowedChanges: { annotation: [#ADD, #REMOVE ],
                        value: [#FALSE_TO_TRUE ] }
       }
}  
@API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
annotation MappingRole
: Boolean default true  
;

Metadata-Annotations

annotation Metadata {
  @Scope:[#ENTITY]
  @CompatibilityContract: {
      c1: {
          usageAllowed: true,
          allowedChanges: {
              annotation: [#ADD],
              value: [#FALSE_TO_TRUE]
          }
      },
      c2.usageAllowed: false
  }
  allowExtensions : Boolean default true;
  @Scope:[#VIEW]
  @CompatibilityContract: {
      c1: {
          usageAllowed: true,
          allowedChanges: {
              annotation: [#NONE],
              value: [#NONE]
          }
      },
      c2: {
          usageAllowed: true,
          allowedChanges: {
              annotation: [#NONE],
              value: [#NONE]
          }
      }
  }
  @API.state: [#RELEASED_FOR_SAP_CLOUD_PLATFORM]
  ignorePropagatedAnnotations : Boolean default true;
  @MetadataExtension.usageAllowed : true
  @Scope:[#ANNOTATE]
  @CompatibilityContract.c1: {
      usageAllowed: true,
      allowedChanges: {
          annotation: [#NONE],
          value: [#NONE]
      }
  }
  @CompatibilityContract.c2.usageAllowed: false
  layer : Integer  
    enum {
      CORE;      
      LOCALIZATION;
      INDUSTRY;
      PARTNER;
      CUSTOMER;
    };
};

MetadataExtension-Annotations

@Scope: [#ANNOTATION]
annotation MetadataExtension {
  usageAllowed : Boolean default true;
};

ObjectModel-Annotations

See Framework Specific Annotation Definitions.

Scope[ ]-Annotations


@Scope: [#ANNOTATION]
annotation Scope : array of String(20)  
  enum {  
    ENTITY;                
    VIEW;                  
    TABLE_FUNCTION;        
    EXTEND_VIEW;          
    ROLE;                  
    ACCESSPOLICY;          
    ANNOTATION;            
    ANNOTATE;              
    SERVICE;              
    CUSTOM_ENTITY;        
    HIERARCHY;            
    PARAMETER;            
    ELEMENT;              
    ASPECT;                
    PFCG_MAPPING;          
    SIMPLE_TYPE;          
  };

Semantics-Annotations

...
define annotation Semantics
{
  ...
   @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;
  ...
};