mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 13:03:01 +08:00
TABL: Fix deserialize if foreign key exists (#5773)
This commit is contained in:
parent
61acfa5c45
commit
fcdb07a7a6
|
@ -58,6 +58,8 @@ CLASS zcl_abapgit_object_tabl DEFINITION
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
ty_dd03p_tt TYPE STANDARD TABLE OF dd03p .
|
ty_dd03p_tt TYPE STANDARD TABLE OF dd03p .
|
||||||
|
TYPES:
|
||||||
|
ty_dd08v_tt TYPE STANDARD TABLE OF dd08v.
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_dd02_text,
|
BEGIN OF ty_dd02_text,
|
||||||
ddlanguage TYPE dd02t-ddlanguage,
|
ddlanguage TYPE dd02t-ddlanguage,
|
||||||
|
@ -108,6 +110,9 @@ CLASS zcl_abapgit_object_tabl DEFINITION
|
||||||
!iv_tabclass TYPE dd02l-tabclass
|
!iv_tabclass TYPE dd02l-tabclass
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_is_db_table_type) TYPE dd02l-tabclass .
|
VALUE(rv_is_db_table_type) TYPE dd02l-tabclass .
|
||||||
|
METHODS clear_foreign_keys
|
||||||
|
CHANGING
|
||||||
|
!ct_dd08v TYPE ty_dd08v_tt.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,6 +210,30 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD clear_foreign_keys.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
ls_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
|
lv_index TYPE sy-tabix.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ls_dd08v> TYPE dd08v.
|
||||||
|
|
||||||
|
" Remove foreign key definitions where the check table/view does not exist (yet)
|
||||||
|
LOOP AT ct_dd08v ASSIGNING <ls_dd08v>.
|
||||||
|
lv_index = sy-tabix.
|
||||||
|
ls_item-obj_name = <ls_dd08v>-checktable.
|
||||||
|
ls_item-obj_type = 'TABL'.
|
||||||
|
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
|
||||||
|
ls_item-obj_type = 'VIEW'.
|
||||||
|
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
|
||||||
|
DELETE ct_dd08v INDEX lv_index.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD delete_extras.
|
METHOD delete_extras.
|
||||||
|
|
||||||
DELETE FROM tddat WHERE tabname = iv_tabname.
|
DELETE FROM tddat WHERE tabname = iv_tabname.
|
||||||
|
@ -780,7 +809,8 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
|
|
||||||
" DDIC Step: Remove references to search helps and foreign keys
|
" DDIC Step: Remove references to search helps and foreign keys
|
||||||
IF iv_step = zif_abapgit_object=>gc_step_id-ddic.
|
IF iv_step = zif_abapgit_object=>gc_step_id-ddic.
|
||||||
CLEAR: lt_dd08v, lt_dd35v, lt_dd36m.
|
CLEAR: lt_dd35v, lt_dd36m.
|
||||||
|
clear_foreign_keys( CHANGING ct_dd08v = lt_dd08v ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF iv_step = zif_abapgit_object=>gc_step_id-late
|
IF iv_step = zif_abapgit_object=>gc_step_id-late
|
||||||
|
|
Loading…
Reference in New Issue
Block a user