ABAP Keyword Documentation → ABAP - Dictionary → Classic Objects in ABAP Dictionary
A CDS view can be assigned to a transparent database table and classic database view in ABAP Dictionary as a replacement object using the name of its CDS entity. A prerequisite is that the structure type defined by the CDS view matches the structure of the database table or classic view as follows:
- The number of components must match.
- It must be possible to assign a component of the CDS view to each component of the database table or classic view:
- A client column is assigned regardless of its name.
- For all other components of the database table, an identically named element of the CDS view must exist.
- The technical type properties built-in data type, length, and number of decimal places must match for all assigned components.
- The CDS view cannot have any input parameters.
- It is not possible to have both a replacement object defined and table buffering switched on for a database view whose maintenance status is modifiable.
If a database table or a classic view is accessed and a replacement object is assigned to the table or view in the following cases, the replacement object is evaluated instead of the database table or classic view:
- When used as a data source of a
SELECTstatement in ABAP SQL. This also applies to subqueries in any ABAP SQL statement and to the statements OPEN CURSOR and
FETCH. This bypasses any table buffering defined for the database table or the classic view.
- When a foreign key relationship is checked for Web Dynpros or dynpros.
All other access types are still performed on the database table or classic view, such as:
- Writes in ABAP SQL
- Writes in ABAP SQL
- Use of the addition SINGLE
FOR UPDATE in the statement
- Use in other database objects, such as:
- Use as a data source of a view defined on the database
- Access from database procedures or database functions
- Access types other than with ABAP SQL, for example:
- Access using Native SQL
EXEC SQL), and AMDP.
When a replacement object is defined for a database table for a classic database view, the system checks
whether the specified CDS view meets the prerequisites. If a CDS view used as a replacement object is
changed later and the prerequisites are no longer met, a runtime error
DBSQL_REDIRECT_INCONSISTENCY occurs when an ABAP SQL read is performed on the database table or on the database view.
No replacement objects can be defined for global temporary tables. In customer systems, replacement objects can only be defined for self-defined database views and not for database tables.
If there is a diversion to a CDS view for which one or more CDS roles are defined as part of the CDS access control, the associated access conditions are not evaluated when the replacement object is accessed.
7.31 | 7.40 | 7.54
- Extreme care should be taken when specifying a replacement object for a database table or a database view. Incorrect usage can cause inconsistencies.
- Replacement objects are mainly intended for existing aggregate tables. These are database tables, which contain aggregated data from other tables. Instead of aggregating data in an ABAP program and writing data to an aggregate table, which can be exclusively accessed by reads in programs, the aggregation can be performed for every read using the CDS view. This prevents redundant data from being stored. In addition, aggregation on the database can improve performance if it is necessary to read large volumes of data for aggregation in ABAP. Replacement objects can make this possible without invalidating the programs.
- A prerequisite for assigning a replacement object to an existing database table or database view is that the CDS view returns the expected data and that, apart from aggregation, only ABAP SQL reads are performed on the aggregate table.
- Once a replacement object is defined, no further writes should be performed on an aggregate table. These writes produce a syntax check warning and are scheduled to be disallowed in an upcoming release.
- Make sure that, apart from the use of ABAP SQL, no other type of access is performed on an aggregate table with a replacement object. More specifically, CDS views used as a replacement object are not allowed to access the replaced object, because the content is usually no longer updated.
- It is not advisable to transport table content for which a replacement object is defined. This content is scheduled to no longer be transported in an upcoming release.
- Table buffering should be deactivated for an aggregate table for which a replacement object is defined to prevent buffer invalidations.
- In customer systems, it may be useful to define a replacement object for a self-defined classic database view, if a replacement object was defined for one of their basis tables at SAP. In this case, the replacement object of the view must access the replacement object of the basis table.
- If a database table or a classical view , which a replacement object is defined for, is extended in a follow-on system, the assigned CDS view must also be extended accordingly with EXTEND VIEW.
- The classic projection view, maintenance views, and help views are not defined on the database. Access to their basis tables is carried out on AS ABAP by using ABAP SQL. If a basis table has a replacement object, its reads are redirected as required.
- Frameworks that use ABAP SQL, such as Data Browser, automatically access replacement objects if these objects are defined for a database table or a database view. Frameworks that use Native SQL or AMDP, such as SADL, have to make sure that they access a replacement object rather than the database table or the database view.
- Wherever possible, any programs that directly accessed aggregate tables or views with aggregate
tables as basis tables should be modified so that they directly access the CDS views that are used as
replacement objects. However, this cannot usually be done by simply replacing the data source in the relevant
SELECTstatements. This is because a client-specific CDS view does not have a client column and therefore the used target objects no longer match. Furthermore, if a CDS view is accessed directly, the CDS roles defined for it also have an effect.
- Replacement objects cannot be defined for the following:
Replacement Object for Database Table