Merge pull request #1538 from larshp/issue_1537

TABL: check existence before SELECTing
This commit is contained in:
Lars Hvam 2018-07-02 17:29:38 +02:00 committed by GitHub
commit b39bab5363
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -89,6 +89,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
DATA: lv_objname TYPE rsedd0-ddobjname, DATA: lv_objname TYPE rsedd0-ddobjname,
lv_tabclass TYPE dd02l-tabclass, lv_tabclass TYPE dd02l-tabclass,
lv_no_ask TYPE abap_bool, lv_no_ask TYPE abap_bool,
lv_subrc TYPE sy-subrc,
lr_data TYPE REF TO data. lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lg_data> TYPE any. FIELD-SYMBOLS: <lg_data> TYPE any.
@ -102,12 +103,21 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
AND as4local = 'A' AND as4local = 'A'
AND as4vers = '0000'. AND as4vers = '0000'.
IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'. IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'.
* Avoid dump in dynamic SELECT in case the table does not exist on database
CALL FUNCTION 'DB_EXISTS_TABLE'
EXPORTING
tabname = lv_objname
IMPORTING
subrc = lv_subrc.
IF lv_subrc = 0.
* it cannot delete table with table wihtout asking * it cannot delete table with table wihtout asking
CREATE DATA lr_data TYPE (lv_objname). CREATE DATA lr_data TYPE (lv_objname).
ASSIGN lr_data->* TO <lg_data>. ASSIGN lr_data->* TO <lg_data>.
SELECT SINGLE * FROM (lv_objname) INTO <lg_data>. SELECT SINGLE * FROM (lv_objname) INTO <lg_data>.
IF sy-subrc = 0. IF sy-subrc = 0.
lv_no_ask = abap_false. lv_no_ask = abap_false.
ENDIF.
ENDIF. ENDIF.
ENDIF. ENDIF.
@ -314,6 +324,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~has_changed_since ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
jump_se11( iv_radio = 'RSRD1-DDTYPE' jump_se11( iv_radio = 'RSRD1-DDTYPE'
@ -498,12 +516,4 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
ig_data = lt_dd36m ). ig_data = lt_dd36m ).
ENDMETHOD. "serialize ENDMETHOD. "serialize
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
ENDCLASS. ENDCLASS.