Show "data" by object in repo view (#4689)

* Show "data" by object in repo view

Continuing on #3441

- "data" is now shown as `TABU` `<table>` 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 <larshp@hotmail.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
Marc Bernard 2021-04-12 14:53:09 +02:00 committed by GitHub
parent 631d0fdccb
commit eb8812eaac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 15 deletions

View File

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

View File

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

View File

@ -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 <ls_return>.
<ls_return>-file = ls_file.
" Derive object from config filename (namespace + escaping)
zcl_abapgit_file_status=>identify_object(
EXPORTING
iv_filename = <ls_return>-file-filename
iv_path = <ls_return>-file-path
io_dot = io_dot_abapgit
IMPORTING
es_item = <ls_return>-item ).
<ls_return>-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 <ls_return>.
<ls_return>-file = ls_file.
" Derive object from data filename (namespace + escaping)
zcl_abapgit_file_status=>identify_object(
EXPORTING
iv_filename = <ls_return>-file-filename
iv_path = <ls_return>-file-path
io_dot = io_dot_abapgit
IMPORTING
es_item = <ls_return>-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 ).