-
Notifications
You must be signed in to change notification settings - Fork 286
/
zdemo_abap_cds_ve_agg_exp.ddls.asddls
63 lines (53 loc) · 3.37 KB
/
zdemo_abap_cds_ve_agg_exp.ddls.asddls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// ABAP CDS cheat sheet example:
// Aggregate expressions in the element list of CDS view entities
//
//////////////////////////------ NOTES ------//////////////////////////////////
// - CDS view entity selects from a demo database table
// - Demonstrates various aggregate expressions in the element list
// - As a prerequisite, run the class zcl_demo_abap_cds_ve to populate the
// database tables of the example. Otherwise, no data is displayed.
//
//////////////////////------ DATA PREVIEW ------///////////////////////////////
// - Choose F8 in ADT to open the data preview and check out the data displayed
// - For comparing and checking the output, you can also open the data preview
// for the database table. In ADT, press and hold CTRL and click the database
// table name. In the opened table artifact, choose F8 to open the data preview.
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'CDS view entity: Aggregate expressions'
define view entity zdemo_abap_cds_ve_agg_exp
as select from zdemo_abap_fli
{
// The element list intentionally includes few fields only to focus on the effect of aggregate expressions.
key carrid,
currency,
// -------- Aggregate expressions --------
// - Aggregate expressions can be used as elements of an element list. Other positions are possible.
// - An alias name must be specified.
// - A GROUP BY clause is required. It must list all non-aggregated fields from the element list.
// - Additions: If ALL is used, all rows in the result set are respected. This is the default setting.
// If DISTINCT is used, only distinct values of an argument are respected.
// - Note: There may or may not be spaces between the parentheses following avg, min, etc., and the
// content specified within.
// AVG (Returns the average value of an argument)
avg( seatsocc as abap.dec(15,2)) as avg_seats_occ,
avg( cast(paymentsum as abap.dec(15, 2)) as abap.dec(15,2)) as avg_paysum,
// SUM (Returns the sum of an argument)
// Since a currency field is used in the example, an annotatin is required.
@Semantics.amount.currencyCode: 'currency'
sum(paymentsum) as total_paysum,
// MIN (Returns the least value of an argument)
min( seatsocc ) as min_occ_seats,
// MAX (Returns the greatest value of an argument)
max( seatsocc ) as max_occ_seats,
max( all seatsocc ) as max_occ_seats_all, //Same result as above, ALL is optional
// COUNT (Returns counted lines)
count(*) as cnt, // * means that all lines are respected
count(distinct planetype) as cnt_planetype //DISTINCT means that the number of dinstinct values if an argument is counted;
//e.g. if 3 is returned, it means there are 3 different plane types among the result set
}
//GROUP BY clause that lists all non-aggregated fields from the element list
group by
carrid,
currency