From a7e984151b7613fa033356b11a381d1d990f519d Mon Sep 17 00:00:00 2001 From: fvalves Date: Tue, 23 Jul 2024 10:23:18 +0200 Subject: [PATCH] DRAS: CDS Aspect (#6953) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Lars Hvam --- .../aff/zcl_abapgit_aff_registry.clas.abap | 1 + .../aff/zcl_abapgit_object_dras.clas.abap | 68 +++++++++++++++++++ .../aff/zcl_abapgit_object_dras.clas.xml | 16 +++++ 3 files changed, 85 insertions(+) create mode 100644 src/objects/aff/zcl_abapgit_object_dras.clas.abap create mode 100644 src/objects/aff/zcl_abapgit_object_dras.clas.xml diff --git a/src/objects/aff/zcl_abapgit_aff_registry.clas.abap b/src/objects/aff/zcl_abapgit_aff_registry.clas.abap index b0172fbe5..e46224fc6 100644 --- a/src/objects/aff/zcl_abapgit_aff_registry.clas.abap +++ b/src/objects/aff/zcl_abapgit_aff_registry.clas.abap @@ -53,6 +53,7 @@ CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION. register( 'CHKV' ). register( 'DRTY' ). register( 'DTEB' ). + register( 'DRAS' ). register( 'DSFD' ). register( 'EVTB' ). register( 'EEEC' ). diff --git a/src/objects/aff/zcl_abapgit_object_dras.clas.abap b/src/objects/aff/zcl_abapgit_object_dras.clas.abap new file mode 100644 index 000000000..b4c19fa29 --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_dras.clas.abap @@ -0,0 +1,68 @@ +CLASS zcl_abapgit_object_dras DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_object_common_aff + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + METHODS zif_abapgit_object~changed_by REDEFINITION. + METHODS zif_abapgit_object~get_deserialize_steps REDEFINITION. + PROTECTED SECTION. + METHODS get_additional_extensions REDEFINITION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS zcl_abapgit_object_dras IMPLEMENTATION. + METHOD zif_abapgit_object~changed_by. + + DATA: lo_dras_handler TYPE REF TO object, + lo_dras_source_container TYPE REF TO object, + lv_object_key TYPE seu_objkey, + lv_exists TYPE abap_bool, + lx_error TYPE REF TO cx_root. + + TRY. + lv_object_key = ms_item-obj_name. + CALL METHOD ('CL_DRAS_AFF_OBJECT_HANDLER')=>('GET_DDIC_HANDLER') + EXPORTING + object_key = lv_object_key + RECEIVING + handler = lo_dras_handler. + + CALL METHOD lo_dras_handler->('CHECK_EXISTENCE') + EXPORTING + iv_as4local = 'A' + RECEIVING + rv_exists = lv_exists. + + IF lv_exists = abap_true. + CALL METHOD lo_dras_handler->('GET_SOURCE_CONTAINER') + EXPORTING + iv_as4local = 'A' + RECEIVING + ro_result = lo_dras_source_container. + CALL METHOD lo_dras_source_container->('GET_AS4USER') + RECEIVING + rv_as4user = rv_user. + ENDIF. + + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise_with_text( lx_error ). + ENDTRY. + ENDMETHOD. + + METHOD zif_abapgit_object~get_deserialize_steps. + APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps. + ENDMETHOD. + + METHOD get_additional_extensions. + DATA ls_additional_extension LIKE LINE OF rv_additional_extensions. + ls_additional_extension-extension = 'acds'. + CALL METHOD ('CL_CDS_AFF_FILE_NAME_MAPPER')=>for_cds + RECEIVING + result = ls_additional_extension-file_name_mapper. + APPEND ls_additional_extension TO rv_additional_extensions. + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/aff/zcl_abapgit_object_dras.clas.xml b/src/objects/aff/zcl_abapgit_object_dras.clas.xml new file mode 100644 index 000000000..7703ae582 --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_dras.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_OBJECT_DRAS + E + abapGit - DRAS - CDS Aspect + 1 + X + X + X + + + +