From eb8812eaac670a5aef056c16d3b10c5d4c2f7b7e Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Mon, 12 Apr 2021 14:53:09 +0200 Subject: [PATCH] Show "data" by object in repo view (#4689) * Show "data" by object in repo view Continuing on #3441 - "data" is now shown as `TABU` `` in the repo view * Remove get_item * Add cmnt * Update src/objects/core/zcl_abapgit_serialize.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * Update zcl_abapgit_serialize.clas.abap Co-authored-by: Lars Hvam Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- .../zcl_abapgit_data_deserializer.clas.abap | 5 ++- src/data/zcl_abapgit_data_utils.clas.abap | 28 ++++++++++--- .../core/zcl_abapgit_serialize.clas.abap | 40 +++++++++++++++---- 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/data/zcl_abapgit_data_deserializer.clas.abap b/src/data/zcl_abapgit_data_deserializer.clas.abap index f8822842c..6444da9a3 100644 --- a/src/data/zcl_abapgit_data_deserializer.clas.abap +++ b/src/data/zcl_abapgit_data_deserializer.clas.abap @@ -38,8 +38,9 @@ CLASS zcl_abapgit_data_deserializer DEFINITION !iv_name TYPE tadir-obj_name !it_where TYPE string_table RETURNING - VALUE(rr_data) TYPE REF TO data . - + VALUE(rr_data) TYPE REF TO data + RAISING + zcx_abapgit_exception . ENDCLASS. diff --git a/src/data/zcl_abapgit_data_utils.clas.abap b/src/data/zcl_abapgit_data_utils.clas.abap index b11550c4a..ee58e8ecb 100644 --- a/src/data/zcl_abapgit_data_utils.clas.abap +++ b/src/data/zcl_abapgit_data_utils.clas.abap @@ -8,7 +8,9 @@ CLASS zcl_abapgit_data_utils DEFINITION IMPORTING !iv_name TYPE tadir-obj_name RETURNING - VALUE(rr_data) TYPE REF TO data . + VALUE(rr_data) TYPE REF TO data + RAISING + zcx_abapgit_exception . CLASS-METHODS build_filename IMPORTING !is_config TYPE zif_abapgit_data_config=>ty_config @@ -34,13 +36,29 @@ CLASS zcl_abapgit_data_utils IMPLEMENTATION. METHOD build_table_itab. - DATA lo_structure TYPE REF TO cl_abap_structdescr. + DATA lo_type TYPE REF TO cl_abap_typedescr. + DATA lo_data TYPE REF TO cl_abap_datadescr. DATA lo_table TYPE REF TO cl_abap_tabledescr. - lo_structure ?= cl_abap_structdescr=>describe_by_name( iv_name ). + cl_abap_structdescr=>describe_by_name( + EXPORTING + p_name = iv_name + RECEIVING + p_descr_ref = lo_type + EXCEPTIONS + type_not_found = 1 ). + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( |Table { iv_name } not found for data serialization| ). + ENDIF. + + TRY. + lo_data ?= lo_type. * todo, also add unique key corresponding to the db table, so duplicates cannot be returned - lo_table = cl_abap_tabledescr=>create( lo_structure ). - CREATE DATA rr_data TYPE HANDLE lo_table. + lo_table = cl_abap_tabledescr=>create( lo_data ). + CREATE DATA rr_data TYPE HANDLE lo_table. + CATCH cx_root. + zcx_abapgit_exception=>raise( |Error creating internal table for data serialization| ). + ENDTRY. ENDMETHOD. ENDCLASS. diff --git a/src/objects/core/zcl_abapgit_serialize.clas.abap b/src/objects/core/zcl_abapgit_serialize.clas.abap index 76cb8e35e..ec0113d23 100644 --- a/src/objects/core/zcl_abapgit_serialize.clas.abap +++ b/src/objects/core/zcl_abapgit_serialize.clas.abap @@ -35,12 +35,14 @@ CLASS zcl_abapgit_serialize DEFINITION zcx_abapgit_exception . PROTECTED SECTION. - TYPES: BEGIN OF ty_unsupported_count, - obj_type TYPE tadir-object, - obj_name TYPE tadir-obj_name, - count TYPE i, - END OF ty_unsupported_count, - ty_unsupported_count_tt TYPE HASHED TABLE OF ty_unsupported_count WITH UNIQUE KEY obj_type. + TYPES: + BEGIN OF ty_unsupported_count, + obj_type TYPE tadir-object, + obj_name TYPE tadir-obj_name, + count TYPE i, + END OF ty_unsupported_count . + TYPES: + ty_unsupported_count_tt TYPE HASHED TABLE OF ty_unsupported_count WITH UNIQUE KEY obj_type . TYPES: ty_char32 TYPE c LENGTH 32 . @@ -62,6 +64,7 @@ CLASS zcl_abapgit_serialize DEFINITION METHODS add_data IMPORTING !ii_data_config TYPE REF TO zif_abapgit_data_config + !io_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit CHANGING !ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt RAISING @@ -110,13 +113,13 @@ CLASS zcl_abapgit_serialize DEFINITION zcx_abapgit_exception . METHODS filter_unsupported_objects CHANGING - !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. + !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt . PRIVATE SECTION. ENDCLASS. -CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION. +CLASS zcl_abapgit_serialize IMPLEMENTATION. METHOD add_apack. @@ -150,12 +153,32 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION. LOOP AT lt_files INTO ls_file. APPEND INITIAL LINE TO ct_files ASSIGNING . -file = ls_file. + + " Derive object from config filename (namespace + escaping) + zcl_abapgit_file_status=>identify_object( + EXPORTING + iv_filename = -file-filename + iv_path = -file-path + io_dot = io_dot_abapgit + IMPORTING + es_item = -item ). + + -item-obj_type = 'TABU'. ENDLOOP. lt_files = zcl_abapgit_data_factory=>get_serializer( )->serialize( ii_data_config ). LOOP AT lt_files INTO ls_file. APPEND INITIAL LINE TO ct_files ASSIGNING . -file = ls_file. + + " Derive object from data filename (namespace + escaping) + zcl_abapgit_file_status=>identify_object( + EXPORTING + iv_filename = -file-filename + iv_path = -file-path + io_dot = io_dot_abapgit + IMPORTING + es_item = -item ). ENDLOOP. ENDMETHOD. @@ -319,6 +342,7 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION. add_data( EXPORTING ii_data_config = ii_data_config + io_dot_abapgit = io_dot_abapgit CHANGING ct_files = rt_files ).