diff --git a/src/ddic/ddls/zage_cds_projection.ddls.asddls b/src/ddic/ddls/zage_cds_projection.ddls.asddls new file mode 100644 index 0000000..1bad84b --- /dev/null +++ b/src/ddic/ddls/zage_cds_projection.ddls.asddls @@ -0,0 +1,11 @@ +@AccessControl.authorizationCheck: #NOT_REQUIRED +@EndUserText.label: 'AGE Sample CDS Projection View' +@Metadata.ignorePropagatedAnnotations: true +define view ZAGE_C_PROJECTION + as select from ZAGE_I_SAMPLE +{ + key client, + key name, + description, + IsActiveEntity +} diff --git a/src/ddic/ddls/zage_cds_projection.ddls.xml b/src/ddic/ddls/zage_cds_projection.ddls.xml new file mode 100644 index 0000000..4d9b004 --- /dev/null +++ b/src/ddic/ddls/zage_cds_projection.ddls.xml @@ -0,0 +1,19 @@ + + + + + + ZAGE_CDS_PROJECTION + E + + + DEVELOPER + 20240101 + + + AGE Sample CDS Projection View + EP + + + + \ No newline at end of file diff --git a/src/ddic/ddls/zage_cds_sample.ddls.asddls b/src/ddic/ddls/zage_cds_sample.ddls.asddls new file mode 100644 index 0000000..1217ecd --- /dev/null +++ b/src/ddic/ddls/zage_cds_sample.ddls.asddls @@ -0,0 +1,11 @@ +@AccessControl.authorizationCheck: #CHECK +@EndUserText.label: 'AGE Sample CDS View' +define view ZAGE_I_SAMPLE + as select from zage_tabl +{ + key client, + key name as Name, + description as Description, + @ObjectModel.virtualElement: true + cast('X' as abap.char(1)) as IsActiveEntity +} diff --git a/src/ddic/ddls/zage_cds_sample.ddls.xml b/src/ddic/ddls/zage_cds_sample.ddls.xml new file mode 100644 index 0000000..62fa1ec --- /dev/null +++ b/src/ddic/ddls/zage_cds_sample.ddls.xml @@ -0,0 +1,19 @@ + + + + + + ZAGE_CDS_SAMPLE + E + + + DEVELOPER + 20240101 + + + AGE Sample CDS View + EP + + + + \ No newline at end of file diff --git a/src/ddic/ddlx/zage_ddlx_sample.ddlx.asddlxs b/src/ddic/ddlx/zage_ddlx_sample.ddlx.asddlxs new file mode 100644 index 0000000..927d3ca --- /dev/null +++ b/src/ddic/ddlx/zage_ddlx_sample.ddlx.asddlxs @@ -0,0 +1,12 @@ +@Metadata.layer: #CORE +@UI: { + headerInfo: { + typeName: 'Sample', + typeNamePlural: 'Samples' + } +} +annotate view ZAGE_C_PROJECTION with +{ + @UI.lineItem: [{ position: 10 }] + Client; +} \ No newline at end of file diff --git a/src/ddic/ddlx/zage_ddlx_sample.ddlx.xml b/src/ddic/ddlx/zage_ddlx_sample.ddlx.xml new file mode 100644 index 0000000..30ba374 --- /dev/null +++ b/src/ddic/ddlx/zage_ddlx_sample.ddlx.xml @@ -0,0 +1,20 @@ + + + + + + ZAGE_DDLX_SAMPLE + E + + + DEVELOPER + 20240101 + + + AGE Sample CDS Metadata Extension + ZAGE_C_PROJECTION + EP + + + + \ No newline at end of file diff --git a/src/ddic/tabl/zage_tabl.tabl.xml b/src/ddic/tabl/zage_tabl.tabl.xml index f9263b2..6ca52ab 100644 --- a/src/ddic/tabl/zage_tabl.tabl.xml +++ b/src/ddic/tabl/zage_tabl.tabl.xml @@ -20,18 +20,49 @@ N - - CLIENT - X - 0 - C - 000006 - X - CLNT - 000003 - CLNT - - + + CLIENT + X + 0 + C + 000006 + X + CLNT + 000003 + CLNT + + + NAME + X + 0 + C + 000040 + X + CHAR + 000020 + CHAR + + + DESCRIPTION + X + 0 + C + 000100 + X + CHAR + 000050 + CHAR + + + LOCALLASTCHANGEDAT + 0 + C + 000016 + LTST + 000014 + LRAW + + ZAGE_TABL diff --git a/src/rap/zage_c_rap_sample.ddls.asddls b/src/rap/zage_c_rap_sample.ddls.asddls new file mode 100644 index 0000000..1887527 --- /dev/null +++ b/src/rap/zage_c_rap_sample.ddls.asddls @@ -0,0 +1,10 @@ +@EndUserText.label: 'AGE Sample RAP Projection' +@ObjectModel.result: #FIRST_ENTITY +define view ZAGE_C_RAP_SAMPLE + as projection on ZAGE_C_PROJECTION +{ + key Client, + key Name, + Description, + IsActiveEntity +} diff --git a/src/rap/zage_c_rap_sample.ddls.xml b/src/rap/zage_c_rap_sample.ddls.xml new file mode 100644 index 0000000..e4a7cde --- /dev/null +++ b/src/rap/zage_c_rap_sample.ddls.xml @@ -0,0 +1,19 @@ + + + + + + ZAGE_C_RAP_SAMPLE + E + + + DEVELOPER + 20240101 + + + AGE Sample RAP Projection View + EP + + + + \ No newline at end of file diff --git a/src/rap/zage_rap_sample.bdef.asbdef b/src/rap/zage_rap_sample.bdef.asbdef new file mode 100644 index 0000000..a3ce78a --- /dev/null +++ b/src/rap/zage_rap_sample.bdef.asbdef @@ -0,0 +1,26 @@ +managed implementation in class ZCL_AGE_RAP_SAMPLE unique; + +strict ( 2 ); +define behavior for ZAGE_C_PROJECTION +persistent table zage_tabl +lock master +authorization master ( instance ) +etag master LocalLastChangedAt +{ + field ( mandatory : create, readonly : update ) Client; + field ( mandatory : create ) Name; + field ( readonly ) IsActiveEntity; + + create; + update; + delete; + + validation validateData on save { field Name; } + + mapping for zage_tabl + { + Client = client; + Name = name; + Description = description; + } +} diff --git a/src/rap/zage_rap_sample.bdef.xml b/src/rap/zage_rap_sample.bdef.xml new file mode 100644 index 0000000..6544006 --- /dev/null +++ b/src/rap/zage_rap_sample.bdef.xml @@ -0,0 +1,18 @@ + + + + + + ZAGE_RAP_SAMPLE + E + AGE Sample RAP Behavior Definition + + + DEVELOPER + 20240101 + + + + + + \ No newline at end of file diff --git a/src/rap/zage_rap_sample.sbtt.xml b/src/rap/zage_rap_sample.sbtt.xml new file mode 100644 index 0000000..9ea36d3 --- /dev/null +++ b/src/rap/zage_rap_sample.sbtt.xml @@ -0,0 +1,18 @@ + + + + + + E + ZAGE_RAP_SAMPLE + ZAGE_C_RAP_SAMPLE + JSON + E + AGE Sample RAP Service Binding + PROXY + 0000000000000000000000000000000000000000 + X + + + + \ No newline at end of file diff --git a/src/rap/zcl_age_rap_sample.clas.abap b/src/rap/zcl_age_rap_sample.clas.abap new file mode 100644 index 0000000..96dfffb --- /dev/null +++ b/src/rap/zcl_age_rap_sample.clas.abap @@ -0,0 +1,39 @@ +CLASS zcl_age_rap_sample DEFINITION + FINAL + CREATE PUBLIC. + + PUBLIC SECTION. + INTERFACES if_oo_adt_classrun. + INTERFACES if_rap_query_provider. + PRIVATE SECTION. + METHODS validate_data + IMPORTING + keys TYPE if_rap_query_provider=>tt_key + RETURNING + VALUE(result) TYPE abap_boolean. +ENDCLASS. + +CLASS zcl_age_rap_sample IMPLEMENTATION. + + METHOD if_oo_adt_classrun~main. + out->write( 'RAP Sample Implementation Class' ). + ENDMETHOD. + + METHOD if_rap_query_provider~select. + DATA filter TYPE if_rap_query_filter=>tt_range_option. + DATA lt_data TYPE STANDARD TABLE OF zage_tabl. + + filter = io_query->get_filter( )->get_filter_conditions( ). + + SELECT FROM zage_tabl + FIELDS client, name, description + INTO TABLE lt_data. + + io_response->set_data( lt_data ). + ENDMETHOD. + + METHOD validate_data. + result = abap_true. + ENDMETHOD. + +ENDCLASS. diff --git a/src/rap/zcl_age_rap_sample.clas.xml b/src/rap/zcl_age_rap_sample.clas.xml new file mode 100644 index 0000000..0e9cd67 --- /dev/null +++ b/src/rap/zcl_age_rap_sample.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCL_AGE_RAP_SAMPLE + E + AGE Sample RAP Behavior Implementation + 1 + X + X + X + 5 + + + + \ No newline at end of file