From 0ea950c938f7c04393410da6b9c2fa49f4b200b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 2 Jan 2023 10:21:45 +0100 Subject: [PATCH] TABU: No error when table not yet exists (#5964) --- src/data/zcl_abapgit_data_serializer.clas.abap | 18 ++++++++++++------ ...apgit_data_serializer.clas.testclasses.abap | 4 ++-- src/data/zcl_abapgit_data_utils.clas.abap | 11 ++++++++++- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/data/zcl_abapgit_data_serializer.clas.abap b/src/data/zcl_abapgit_data_serializer.clas.abap index f499c0338..d41d37f19 100644 --- a/src/data/zcl_abapgit_data_serializer.clas.abap +++ b/src/data/zcl_abapgit_data_serializer.clas.abap @@ -116,14 +116,20 @@ CLASS ZCL_ABAPGIT_DATA_SERIALIZER IMPLEMENTATION. ASSERT ls_config-type = zif_abapgit_data_config=>c_data_type-tabu. " todo ASSERT ls_config-name IS NOT INITIAL. - lr_data = read_database_table( - iv_name = ls_config-name - it_where = ls_config-where ). + TRY. + lr_data = read_database_table( + iv_name = ls_config-name + it_where = ls_config-where ). + + ls_file-data = convert_itab_to_json( + ir_data = lr_data + iv_skip_initial = ls_config-skip_initial ). + + CATCH zcx_abapgit_exception. + " DB table might not yet exist + ENDTRY. ls_file-filename = zcl_abapgit_data_utils=>build_filename( ls_config ). - ls_file-data = convert_itab_to_json( - ir_data = lr_data - iv_skip_initial = ls_config-skip_initial ). ls_file-sha1 = zcl_abapgit_hash=>sha1_blob( ls_file-data ). APPEND ls_file TO rt_files. ENDLOOP. diff --git a/src/data/zcl_abapgit_data_serializer.clas.testclasses.abap b/src/data/zcl_abapgit_data_serializer.clas.testclasses.abap index 1c4ace6ce..c9c072173 100644 --- a/src/data/zcl_abapgit_data_serializer.clas.testclasses.abap +++ b/src/data/zcl_abapgit_data_serializer.clas.testclasses.abap @@ -57,8 +57,8 @@ CLASS ltcl_test IMPLEMENTATION. TRY. mi_cut->serialize( mi_config ). - cl_abap_unit_assert=>fail( ). CATCH zcx_abapgit_exception. + cl_abap_unit_assert=>fail( ). ENDTRY. ENDMETHOD. @@ -77,8 +77,8 @@ CLASS ltcl_test IMPLEMENTATION. TRY. mi_cut->serialize( mi_config ). - cl_abap_unit_assert=>fail( ). CATCH zcx_abapgit_exception. + cl_abap_unit_assert=>fail( ). ENDTRY. ENDMETHOD. diff --git a/src/data/zcl_abapgit_data_utils.clas.abap b/src/data/zcl_abapgit_data_utils.clas.abap index f9a2b59b7..f211660c7 100644 --- a/src/data/zcl_abapgit_data_utils.clas.abap +++ b/src/data/zcl_abapgit_data_utils.clas.abap @@ -69,7 +69,16 @@ CLASS zcl_abapgit_data_utils IMPLEMENTATION. " Get primary key to ensure unique entries IF lo_data->is_ddic_type( ) = abap_true. - lt_fields = lo_data->get_ddic_field_list( ). + lo_data->get_ddic_field_list( + RECEIVING + p_field_list = lt_fields + EXCEPTIONS + not_found = 1 + no_ddic_type = 2 + OTHERS = 3 ). + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( |Table { iv_name } not found for data serialization| ). + ENDIF. APPEND INITIAL LINE TO lt_keys ASSIGNING . -access_kind = cl_abap_tabledescr=>tablekind_sorted.