mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Delete obsolete longtexts on pull (#5751)
* Delete obsolete longtexts on pull Longtexts that exist in the system but not in the remote repository are deleted when pulling. Closes #5202 * Refactor * Constant Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
c1a631fba3
commit
f1c1aad740
|
@ -162,8 +162,11 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
METHOD zif_abapgit_longtexts~deserialize.
|
||||
|
||||
DATA: lt_longtexts TYPE ty_longtexts,
|
||||
lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt,
|
||||
lv_no_main_lang TYPE dokil-masterlang.
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
|
||||
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext,
|
||||
<ls_dokil> TYPE dokil.
|
||||
|
||||
ii_xml->read(
|
||||
EXPORTING
|
||||
|
@ -187,6 +190,38 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
|
||||
ENDLOOP.
|
||||
|
||||
" Read existing texts and check if they were deserialized above
|
||||
" If not, delete the texts
|
||||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
WHERE id = iv_longtext_id
|
||||
AND object = iv_object_name.
|
||||
|
||||
LOOP AT lt_dokil ASSIGNING <ls_dokil>.
|
||||
|
||||
READ TABLE lt_longtexts TRANSPORTING NO FIELDS WITH KEY
|
||||
dokil-id = <ls_dokil>-id
|
||||
dokil-langu = <ls_dokil>-langu
|
||||
dokil-object = <ls_dokil>-object
|
||||
dokil-typ = <ls_dokil>-typ.
|
||||
IF sy-subrc <> 0.
|
||||
CALL FUNCTION 'DOCU_DEL'
|
||||
EXPORTING
|
||||
id = <ls_dokil>-id
|
||||
langu = <ls_dokil>-langu
|
||||
object = <ls_dokil>-object
|
||||
typ = <ls_dokil>-typ
|
||||
EXCEPTIONS
|
||||
ret_code = 1
|
||||
OTHERS = 2.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@ INTERFACE zif_abapgit_longtexts
|
|||
METHODS deserialize
|
||||
IMPORTING
|
||||
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
|
||||
!iv_object_name TYPE sobj_name
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
||||
!iv_main_language TYPE sy-langu
|
||||
RAISING
|
||||
|
|
|
@ -60,6 +60,8 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
|
|||
|
||||
mi_longtexts->deserialize(
|
||||
iv_longtext_name = c_name
|
||||
iv_object_name = ms_item-obj_name
|
||||
iv_longtext_id = c_id
|
||||
ii_xml = io_xml
|
||||
iv_main_language = mv_language ).
|
||||
|
||||
|
|
|
@ -303,7 +303,8 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
|
|||
is_dd01v = ls_dd01v
|
||||
it_dd07v = lt_dd07v ).
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts( ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_doma ).
|
||||
|
||||
zcl_abapgit_objects_activation=>add_item( ms_item ).
|
||||
|
||||
|
|
|
@ -143,6 +143,8 @@ CLASS zcl_abapgit_object_dsys IMPLEMENTATION.
|
|||
WHEN 'v2.0.0'.
|
||||
zcl_abapgit_factory=>get_longtexts( )->deserialize(
|
||||
ii_xml = io_xml
|
||||
iv_object_name = mv_doc_object
|
||||
iv_longtext_id = c_id
|
||||
iv_main_language = mv_language ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
|
|
@ -206,7 +206,8 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
|
|||
deserialize_texts( ii_xml = io_xml
|
||||
is_dd04v = ls_dd04v ).
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts( ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_dtel ).
|
||||
|
||||
zcl_abapgit_objects_activation=>add_item( ms_item ).
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@ CLASS zcl_abapgit_object_msag DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
ty_t100s TYPE STANDARD TABLE OF t100
|
||||
WITH NON-UNIQUE DEFAULT KEY .
|
||||
|
||||
CONSTANTS c_longtext_id_msag TYPE dokil-id VALUE 'NA'.
|
||||
|
||||
METHODS serialize_texts
|
||||
IMPORTING
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
||||
|
@ -55,7 +57,7 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
CLEAR lv_key_s.
|
||||
CALL FUNCTION 'DOCU_OBJECT_NAME_CONCATENATE'
|
||||
EXPORTING
|
||||
docu_id = 'NA'
|
||||
docu_id = c_longtext_id_msag
|
||||
element = iv_message_id
|
||||
addition = ' '
|
||||
IMPORTING
|
||||
|
@ -65,7 +67,7 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
|
||||
CALL FUNCTION 'DOKU_DELETE_ALL'
|
||||
EXPORTING
|
||||
doku_id = 'NA'
|
||||
doku_id = c_longtext_id_msag
|
||||
doku_object = lv_key_s
|
||||
generic_use = 'X'
|
||||
suppress_authority = space
|
||||
|
@ -182,7 +184,7 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
FOR ALL ENTRIES IN lt_doku_object_names
|
||||
WHERE id = 'NA'
|
||||
WHERE id = c_longtext_id_msag
|
||||
AND object = lt_doku_object_names-table_line
|
||||
AND masterlang = abap_true
|
||||
ORDER BY PRIMARY KEY.
|
||||
|
@ -191,7 +193,7 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
FOR ALL ENTRIES IN lt_doku_object_names
|
||||
WHERE id = 'NA'
|
||||
WHERE id = c_longtext_id_msag
|
||||
AND object = lt_doku_object_names-table_line
|
||||
AND langu IN lt_language_filter
|
||||
ORDER BY PRIMARY KEY.
|
||||
|
@ -402,7 +404,8 @@ CLASS zcl_abapgit_object_msag IMPLEMENTATION.
|
|||
AND msgnr = ls_t100u-msgnr. "#EC CI_SUBRC
|
||||
ENDLOOP.
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts( ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_msag ).
|
||||
|
||||
deserialize_texts( io_xml ).
|
||||
|
||||
|
|
|
@ -263,7 +263,8 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
|
|||
deserialize_texts( io_xml ).
|
||||
deserialize_lxe_texts( io_xml ).
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts( ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_prog ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -836,7 +836,8 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
|||
deserialize_texts( io_xml = io_xml
|
||||
is_dd02v = ls_dd02v ).
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts( ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_tabl ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = c_s_dataname-tabl_extras
|
||||
CHANGING cg_data = ls_extras ).
|
||||
|
|
|
@ -859,10 +859,13 @@ CLASS zcl_abapgit_object_wdyn IMPLEMENTATION.
|
|||
|
||||
add_with_inactive_parts( ).
|
||||
|
||||
deserialize_longtexts( io_xml ).
|
||||
deserialize_longtexts(
|
||||
ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_wd ).
|
||||
|
||||
deserialize_longtexts(
|
||||
ii_xml = io_xml
|
||||
iv_longtext_id = c_longtext_id_wc
|
||||
iv_longtext_name = c_longtext_name_wc ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -55,6 +55,7 @@ CLASS zcl_abapgit_objects_super DEFINITION
|
|||
METHODS deserialize_longtexts
|
||||
IMPORTING
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
||||
!iv_longtext_id TYPE dokil-id OPTIONAL
|
||||
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
@ -218,6 +219,8 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
|
|||
zcl_abapgit_factory=>get_longtexts( )->deserialize(
|
||||
ii_xml = ii_xml
|
||||
iv_longtext_name = iv_longtext_name
|
||||
iv_object_name = ms_item-obj_name
|
||||
iv_longtext_id = iv_longtext_id
|
||||
iv_main_language = mv_language ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
Loading…
Reference in New Issue
Block a user