From aa6e97ac991bcc9eb7d83cc26efba3dce9ac85be Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Tue, 25 Mar 2025 15:24:17 +0100 Subject: [PATCH] Replace `sotr_head*` update with API (#7165) Co-authored-by: Lars Hvam --- .../texts/zcl_abapgit_sotr_handler.clas.abap | 87 ++++++++++++++++--- .../zcl_abapgit_gui_page_chg_pckg.clas.abap | 5 +- 2 files changed, 80 insertions(+), 12 deletions(-) diff --git a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap index afadf9682..fe2bf7f7c 100644 --- a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap +++ b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap @@ -1,7 +1,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC. PUBLIC SECTION. @@ -9,11 +9,11 @@ CLASS zcl_abapgit_sotr_handler DEFINITION BEGIN OF ty_sotr, header TYPE sotr_head, entries TYPE sotr_text_tt, - END OF ty_sotr . + END OF ty_sotr. TYPES: - ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY . + ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY. TYPES: - ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY . + ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY. CLASS-METHODS read_sotr IMPORTING @@ -26,33 +26,46 @@ CLASS zcl_abapgit_sotr_handler DEFINITION !et_sotr TYPE ty_sotr_tt !et_sotr_use TYPE ty_sotr_use_tt RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. + CLASS-METHODS create_sotr IMPORTING !iv_package TYPE devclass !io_xml TYPE REF TO zif_abapgit_xml_input RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. + CLASS-METHODS create_sotr_from_data IMPORTING !iv_package TYPE devclass !it_sotr TYPE ty_sotr_tt !it_sotr_use TYPE ty_sotr_use_tt RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. + CLASS-METHODS delete_sotr IMPORTING !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. + CLASS-METHODS delete_sotr_package IMPORTING !iv_package TYPE devclass RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. + + CLASS-METHODS change_sotr_package + IMPORTING + !iv_old_package TYPE devclass + !iv_new_package TYPE devclass + RAISING + zcx_abapgit_exception. + PROTECTED SECTION. + CLASS-METHODS get_sotr_usage IMPORTING !iv_pgmid TYPE pgmid @@ -65,7 +78,8 @@ CLASS zcl_abapgit_sotr_handler DEFINITION IMPORTING !iv_concept TYPE sotr_conc RETURNING - VALUE(rs_sotr) TYPE ty_sotr . + VALUE(rs_sotr) TYPE ty_sotr. + PRIVATE SECTION. ENDCLASS. @@ -74,6 +88,59 @@ ENDCLASS. CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. + METHOD change_sotr_package. + + DATA lt_concepts TYPE btfr_conc_tt. + + " Short texts + SELECT concept FROM sotr_head INTO TABLE lt_concepts + WHERE paket = iv_old_package + ORDER BY PRIMARY KEY. + + IF lt_concepts IS NOT INITIAL. + CALL FUNCTION 'BTFR_CHANGE_PACKAGE' + EXPORTING + concept_tab = lt_concepts + new_package = iv_new_package + flag_string = abap_false + flag_ignore_system = abap_true + EXCEPTIONS + invalid_package = 1 + invalid_tadir_entry = 2 + update_error = 3 + OTHERS = 4. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + ENDIF. + + CLEAR lt_concepts. + + " Long texts + SELECT concept FROM sotr_headu INTO TABLE lt_concepts + WHERE paket = iv_old_package + ORDER BY PRIMARY KEY. + + IF lt_concepts IS NOT INITIAL. + CALL FUNCTION 'BTFR_CHANGE_PACKAGE' + EXPORTING + concept_tab = lt_concepts + new_package = iv_new_package + flag_string = abap_true + flag_ignore_system = abap_true + EXCEPTIONS + invalid_package = 1 + invalid_tadir_entry = 2 + update_error = 3 + OTHERS = 4. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + ENDIF. + + ENDMETHOD. + + METHOD create_sotr. DATA: diff --git a/src/ui/pages/zcl_abapgit_gui_page_chg_pckg.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_chg_pckg.clas.abap index 74e5a3de2..3925b76eb 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_chg_pckg.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_chg_pckg.clas.abap @@ -421,8 +421,9 @@ CLASS zcl_abapgit_gui_page_chg_pckg IMPLEMENTATION. FIELD-SYMBOLS LIKE LINE OF it_mapping. LOOP AT it_mapping ASSIGNING . - UPDATE sotr_head SET paket = -new_package WHERE paket = -old_package ##SUBRC_OK. - UPDATE sotr_headu SET paket = -new_package WHERE paket = -old_package ##SUBRC_OK. + zcl_abapgit_sotr_handler=>change_sotr_package( + iv_old_package = -old_package + iv_new_package = -new_package ). ENDLOOP. ENDMETHOD.