CDS Views and AMDP Classes and Its Usage
CDS Views and AMDP Classes and Its Usage
Answer: CDS is much more powerful than what it appears.The CDS concept is far more than
simple view building but describes a DDL for building a meta-model repository involving
database tables, database views, functions, and data types.
CDS was invented by SAP, because the modeling capabilities of the ABAP Dictionary and of
the “SAP HANA Studio” are not sufficient for the needs of all fully blown business
applications with modern needs.
ABAP CDS is open and not restricted to SAP HANA (i.e. database independent).
Similar to the role of the DDIC in the traditional ABAP world, data models based
on CDS serve as central definitions that can be used in many different domains,
such as transactional and analytical applications, to interact with data in the
database in a unified way . However, CDS data models go beyond the
capabilities of the DDIC, which were typically limited to a transactional scope
(think of traditional online transaction processing functionality). For example, in
CDS, you can define views that aggregate and analyze data in a layered
fashion, starting with basic views and then adding powerful views that combine
the basic views. Another difference is the support for special operators such as
UNION, which enables the combination of multiple select statements to return
only one result set.
When should we use ABAP CDS and when should we use HANA CDS?
Answer: If you run SAP HANA standalone or in a side-by-side scenario (there is
no ABAP stack on top) you cannot use ABAP CDS. You must use HANA CDS.
If you have an ABAP stack on top of a HANA database (an AS ABAP uses the
HANA database as central database) then:
i) If you want to access the CDS entities in ABAP as data types or in Open SQL
or if you want to evaluate the CDS annotations in ABAP, you must use ABAP
CDS.
ii) If you do not want to access the CDS entities in ABAP, but you want to
transport and upgrade them like ABAP repository objects, you can use ABAP
CDS.
iii) If you do not want to access the CDS entities in ABAP as data TYPEs or in
Open SQL, you can use HANA CDS, which is better integrated into SAP HANA.
An access from ABAP is then possible using Native SQL (ADBC, AMDP) only.
Answer: Check the table TADIR in SE16; PGMID = ‘R3TR’, OBJECT = ‘DDLS’;
here we find all DDL sources and the package of each source in column
DEVCLASS. Knowing the package, we can use ADT (ABAP Development Tool in
HANA Studio) to find the DDL sources in ADT.
Examine table DDLDEPENDENCY in SE16; it contains the names of all DDL
sources and the names of the CDS entities (value STOB in column
OBJECTTYPE) defined therein as well as the names of the generated database
views (value VIEW in column OBJECTTYPE); (one row for each -> two rows for
each DDL source). => Selecting VIEW for OBJECTTYPE gives you all CDS
database views.
Now let us try to open the DDL source of the CDS in SE11.
Check it would prompt us to go to ADT Tools to view it.
Now, let us open the DDL SQL View of the CDS. Note the warning below which
says DDL SQL views are only supported in a limited way by SE11.
Having one name is just not good enough in CDS; we need two names.
One name is for the SQL view that is going to be created in the dictionary (the
one we will be able to look at in SE11), and the other name we have is a name
for the CDS view entity, which is viewed and changed via Eclipse.
PS: We could name both the SQL view and the CDS view the same, but we
should not as they are different things, so the name should reflect the
difference.
CDS View entity is the one we should refer to in SELECT statements in our
ABAP programs. Although we can use DDL SQL View in our programs, but we
should not.
How can we use CDS views?
Answer: Basically, a CDS View is an entity that can be addressed by its name:
in ABAP as a TYPE
in Open SQL as a DATA SOURCE
Basically, a CDS View is an entity that can be addressed by its name in ABAP as
a TYPE in Open SQL as a data source
Seeing a CDS View in SE11 is kind of a technical artifact and we should not
address the database view that is shown there in our ABAP programs. From
SE11 you can also navigate to the database object that is generated from the
definition. This database object can even be accessed directly with Native SQL.
This means we can access our CDS Views directly in ABAP programs or from
elsewhere. For evaluating the semantic properties (annotations) of a CDS View
(stored in system tables) we should use an appropriate API
(CL_DD_DDL_ANNOTATION_SERVICE if available in your system).
SAP claims that whereas a traditional database view is just a linkage of one or
more tables, a CDS view is a fully fledged data model, which, in addition to
having extra features that SE11-defined views do not, can be used even by
applications outside of the SAP domain.
Note: We cannot do OUTER JOINs in an SE11 database view (just one limitation
to point which CDS can overcome).
CDS views, like the well-known dictionary views created and maintained in
transaction SE11, are managed by the ABAP data dictionary. During activation,
a database view is created on the HANA layer, yet only the ABAP CDS
view (defined in a so-called DDL source) has to be transported via the ABAP
Change and Transport System (CTS). Moreover, the functionality provided by
CDS views can be used on all SAP supported databases, we don’t have to worry
when transporting these objects in a heterogeneous system landscape.