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 ).