From b9ac1265f47609e6924afafe12d590c6e7c4063f Mon Sep 17 00:00:00 2001 From: fvalves Date: Tue, 23 Jul 2024 10:21:09 +0200 Subject: [PATCH] DSFD: CDS Scalar Function Definition (#6951) 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_dsfd.clas.abap | 69 +++++++++++++++++++ .../aff/zcl_abapgit_object_dsfd.clas.xml | 16 +++++ 3 files changed, 86 insertions(+) create mode 100644 src/objects/aff/zcl_abapgit_object_dsfd.clas.abap create mode 100644 src/objects/aff/zcl_abapgit_object_dsfd.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 0e8070081..b0172fbe5 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( 'DSFD' ). register( 'EVTB' ). register( 'EEEC' ). register( 'GSMP' ). diff --git a/src/objects/aff/zcl_abapgit_object_dsfd.clas.abap b/src/objects/aff/zcl_abapgit_object_dsfd.clas.abap new file mode 100644 index 000000000..e17511271 --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_dsfd.clas.abap @@ -0,0 +1,69 @@ +CLASS zcl_abapgit_object_dsfd 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_dsfd IMPLEMENTATION. + METHOD zif_abapgit_object~changed_by. + + DATA: lo_dsfd_handler TYPE REF TO object, + lo_dsfd_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_DSFD_AFF_OBJECT_HANDLER')=>('GET_DDIC_HANDLER') + EXPORTING + object_key = lv_object_key + RECEIVING + handler = lo_dsfd_handler. + + CALL METHOD lo_dsfd_handler->('CHECK_EXISTENCE') + EXPORTING + iv_as4local = 'A' + RECEIVING + rv_exists = lv_exists. + + IF lv_exists = abap_true. + CALL METHOD lo_dsfd_handler->('GET_SOURCE_CONTAINER') + EXPORTING + iv_as4local = 'A' + RECEIVING + ro_result = lo_dsfd_source_container. + + CALL METHOD lo_dsfd_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_dsfd.clas.xml b/src/objects/aff/zcl_abapgit_object_dsfd.clas.xml new file mode 100644 index 000000000..9f4dd7e9f --- /dev/null +++ b/src/objects/aff/zcl_abapgit_object_dsfd.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_OBJECT_DSFD + E + abapGit - DSFD - CDS Scalar Function Definition + 1 + X + X + X + + + +