diff --git a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap index 136942b64..d829dfbf0 100644 --- a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap +++ b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap @@ -5,12 +5,9 @@ CLASS zcl_abapgit_sotr_handler DEFINITION PUBLIC SECTION. - TYPES: - ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY . - CLASS-METHODS read_sotr IMPORTING - !iv_pgmid TYPE pgmid + !iv_pgmid TYPE pgmid DEFAULT 'R3TR' !iv_object TYPE trobjtype !iv_obj_name TYPE csequence !io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL @@ -26,6 +23,25 @@ CLASS zcl_abapgit_sotr_handler DEFINITION !io_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . + CLASS-METHODS create_sotr_from_data + IMPORTING + !iv_package TYPE devclass + !it_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt + !it_sotr_use TYPE zif_abapgit_definitions=>ty_sotr_use_tt + RAISING + 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 . + CLASS-METHODS delete_sotr_package + IMPORTING + !iv_package TYPE devclass + RAISING + zcx_abapgit_exception . PROTECTED SECTION. CLASS-METHODS get_sotr_usage IMPORTING @@ -33,7 +49,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION !iv_object TYPE trobjtype !iv_obj_name TYPE csequence RETURNING - VALUE(rt_sotr_use) TYPE ty_sotr_use_tt. + VALUE(rt_sotr_use) TYPE zif_abapgit_definitions=>ty_sotr_use_tt. CLASS-METHODS get_sotr_4_concept IMPORTING @@ -51,20 +67,32 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. METHOD create_sotr. DATA: - lt_objects TYPE sotr_objects, - ls_paket TYPE sotr_pack, - lv_object LIKE LINE OF lt_objects, lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt, lt_sotr_use TYPE zif_abapgit_definitions=>ty_sotr_use_tt. - FIELD-SYMBOLS: LIKE LINE OF lt_sotr. - io_xml->read( EXPORTING iv_name = 'SOTR' CHANGING cg_data = lt_sotr ). io_xml->read( EXPORTING iv_name = 'SOTR_USE' CHANGING cg_data = lt_sotr_use ). - LOOP AT lt_sotr ASSIGNING . + create_sotr_from_data( + iv_package = iv_package + it_sotr = lt_sotr + it_sotr_use = lt_sotr_use ). + + ENDMETHOD. + + + METHOD create_sotr_from_data. + + DATA: + lt_objects TYPE sotr_objects, + ls_paket TYPE sotr_pack, + lv_object LIKE LINE OF lt_objects. + + FIELD-SYMBOLS: LIKE LINE OF it_sotr. + + LOOP AT it_sotr ASSIGNING . CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS' EXPORTING object_vector = -header-objid_vec @@ -117,15 +145,79 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. CALL FUNCTION 'SOTR_USAGE_MODIFY' EXPORTING - sotr_usage = lt_sotr_use. + sotr_usage = it_sotr_use. + + ENDMETHOD. + + + METHOD delete_sotr. + + DATA lt_sotr_use TYPE zif_abapgit_definitions=>ty_sotr_use_tt. + + FIELD-SYMBOLS LIKE LINE OF lt_sotr_use. + + lt_sotr_use = get_sotr_usage( iv_pgmid = iv_pgmid + iv_object = iv_object + iv_obj_name = iv_obj_name ). + + LOOP AT lt_sotr_use ASSIGNING WHERE concept IS NOT INITIAL. + + CALL FUNCTION 'SOTR_DELETE_CONCEPT' + EXPORTING + concept = -concept + EXCEPTIONS + no_entry_found = 1 + text_not_found = 2 + invalid_package = 3 + text_not_changeable = 4 + text_enqueued = 5 + no_correction = 6 + parameter_error = 7 + OTHERS = 8. + IF sy-subrc > 2. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDLOOP. + + ENDMETHOD. + + + METHOD delete_sotr_package. + + DATA lt_sotr_head TYPE STANDARD TABLE OF sotr_head WITH DEFAULT KEY. + + FIELD-SYMBOLS LIKE LINE OF lt_sotr_head. + + SELECT * FROM sotr_head INTO TABLE lt_sotr_head WHERE paket = iv_package. + + LOOP AT lt_sotr_head ASSIGNING WHERE concept IS NOT INITIAL. + + CALL FUNCTION 'SOTR_DELETE_CONCEPT' + EXPORTING + concept = -concept + EXCEPTIONS + no_entry_found = 1 + text_not_found = 2 + invalid_package = 3 + text_not_changeable = 4 + text_enqueued = 5 + no_correction = 6 + parameter_error = 7 + OTHERS = 8. + IF sy-subrc > 2. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDLOOP. ENDMETHOD. METHOD get_sotr_4_concept. - DATA: ls_header TYPE sotr_head, - lt_entries TYPE sotr_text_tt. + DATA: ls_header TYPE zif_abapgit_definitions=>ty_sotr-header, + lt_entries TYPE zif_abapgit_definitions=>ty_sotr-entries. FIELD-SYMBOLS: LIKE LINE OF lt_entries. @@ -171,7 +263,7 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. lv_obj_name = iv_obj_name. " Objects with multiple components - IF iv_pgmid = 'LIMU' AND ( iv_object = 'WDYV' OR iv_object = 'WAPP' ). + IF iv_pgmid = 'LIMU' AND ( iv_object CP 'WDY*' OR iv_object = 'WAPP' ). lv_obj_name+30 = '%'. ENDIF. @@ -195,13 +287,13 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION. METHOD read_sotr. - FIELD-SYMBOLS TYPE sotr_use. + FIELD-SYMBOLS LIKE LINE OF et_sotr_use. DATA lv_sotr TYPE zif_abapgit_definitions=>ty_sotr. - " Known SOTR usage... - " LIMU: CPUB, WAPP, WDYV - " R3TR: ENHC, ENHO, ENHS, ENSC, SCGR, SMIF, WDYA, WEBI, WEBS + " SOTR usage (see LSOTR_SYSTEM_SETTINGSF01, FORM GET_OBJECT_TABLE) + " LIMU: CPUB, WAPP, WDYC, WDYD, WDYV + " R3TR: ENHC, ENHD, ENHO, ENHS, ENSC, SCGR, SICF, WDCA, WDCC, WDYA, WEBI, WEBS, XSLT et_sotr_use = get_sotr_usage( iv_pgmid = iv_pgmid iv_object = iv_object