SOTR: Refactor (#5441)

This commit is contained in:
Marc Bernard 2022-04-29 08:51:17 +02:00 committed by GitHub
parent 43b0d95335
commit 2bc6e2a8ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,12 +5,9 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
TYPES:
ty_sotr_use_tt TYPE STANDARD TABLE OF sotr_use WITH DEFAULT KEY .
CLASS-METHODS read_sotr CLASS-METHODS read_sotr
IMPORTING IMPORTING
!iv_pgmid TYPE pgmid !iv_pgmid TYPE pgmid DEFAULT 'R3TR'
!iv_object TYPE trobjtype !iv_object TYPE trobjtype
!iv_obj_name TYPE csequence !iv_obj_name TYPE csequence
!io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL !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 !io_xml TYPE REF TO zif_abapgit_xml_input
RAISING RAISING
zcx_abapgit_exception . 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. PROTECTED SECTION.
CLASS-METHODS get_sotr_usage CLASS-METHODS get_sotr_usage
IMPORTING IMPORTING
@ -33,7 +49,7 @@ CLASS zcl_abapgit_sotr_handler DEFINITION
!iv_object TYPE trobjtype !iv_object TYPE trobjtype
!iv_obj_name TYPE csequence !iv_obj_name TYPE csequence
RETURNING 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 CLASS-METHODS get_sotr_4_concept
IMPORTING IMPORTING
@ -51,20 +67,32 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
METHOD create_sotr. METHOD create_sotr.
DATA: 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 TYPE zif_abapgit_definitions=>ty_sotr_tt,
lt_sotr_use TYPE zif_abapgit_definitions=>ty_sotr_use_tt. lt_sotr_use TYPE zif_abapgit_definitions=>ty_sotr_use_tt.
FIELD-SYMBOLS: <ls_sotr> LIKE LINE OF lt_sotr.
io_xml->read( EXPORTING iv_name = 'SOTR' io_xml->read( EXPORTING iv_name = 'SOTR'
CHANGING cg_data = lt_sotr ). CHANGING cg_data = lt_sotr ).
io_xml->read( EXPORTING iv_name = 'SOTR_USE' io_xml->read( EXPORTING iv_name = 'SOTR_USE'
CHANGING cg_data = lt_sotr_use ). CHANGING cg_data = lt_sotr_use ).
LOOP AT lt_sotr ASSIGNING <ls_sotr>. 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: <ls_sotr> LIKE LINE OF it_sotr.
LOOP AT it_sotr ASSIGNING <ls_sotr>.
CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS' CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS'
EXPORTING EXPORTING
object_vector = <ls_sotr>-header-objid_vec object_vector = <ls_sotr>-header-objid_vec
@ -117,15 +145,79 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
CALL FUNCTION 'SOTR_USAGE_MODIFY' CALL FUNCTION 'SOTR_USAGE_MODIFY'
EXPORTING 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 <ls_sotr_use> 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 <ls_sotr_use> WHERE concept IS NOT INITIAL.
CALL FUNCTION 'SOTR_DELETE_CONCEPT'
EXPORTING
concept = <ls_sotr_use>-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 <ls_sotr_head> 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 <ls_sotr_head> WHERE concept IS NOT INITIAL.
CALL FUNCTION 'SOTR_DELETE_CONCEPT'
EXPORTING
concept = <ls_sotr_head>-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. ENDMETHOD.
METHOD get_sotr_4_concept. METHOD get_sotr_4_concept.
DATA: ls_header TYPE sotr_head, DATA: ls_header TYPE zif_abapgit_definitions=>ty_sotr-header,
lt_entries TYPE sotr_text_tt. lt_entries TYPE zif_abapgit_definitions=>ty_sotr-entries.
FIELD-SYMBOLS: <ls_entry> LIKE LINE OF lt_entries. FIELD-SYMBOLS: <ls_entry> LIKE LINE OF lt_entries.
@ -171,7 +263,7 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
lv_obj_name = iv_obj_name. lv_obj_name = iv_obj_name.
" Objects with multiple components " 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 = '%'. lv_obj_name+30 = '%'.
ENDIF. ENDIF.
@ -195,13 +287,13 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
METHOD read_sotr. METHOD read_sotr.
FIELD-SYMBOLS <ls_sotr_use> TYPE sotr_use. FIELD-SYMBOLS <ls_sotr_use> LIKE LINE OF et_sotr_use.
DATA lv_sotr TYPE zif_abapgit_definitions=>ty_sotr. DATA lv_sotr TYPE zif_abapgit_definitions=>ty_sotr.
" Known SOTR usage... " SOTR usage (see LSOTR_SYSTEM_SETTINGSF01, FORM GET_OBJECT_TABLE)
" LIMU: CPUB, WAPP, WDYV " LIMU: CPUB, WAPP, WDYC, WDYD, WDYV
" R3TR: ENHC, ENHO, ENHS, ENSC, SCGR, SMIF, WDYA, WEBI, WEBS " R3TR: ENHC, ENHD, ENHO, ENHS, ENSC, SCGR, SICF, WDCA, WDCC, WDYA, WEBI, WEBS, XSLT
et_sotr_use = get_sotr_usage( iv_pgmid = iv_pgmid et_sotr_use = get_sotr_usage( iv_pgmid = iv_pgmid
iv_object = iv_object iv_object = iv_object