mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-03 05:18:59 +08:00

In case DDIC objects exist as "new" version only , the system will now raise an error message to alert the user that "No active version was found". Note: The log will disappear after some navigation and such objects will not be included in the repo view if they only exist locally (until they are activated).
217 lines
4.8 KiB
ABAP
217 lines
4.8 KiB
ABAP
CLASS zcl_abapgit_object_enqu DEFINITION
|
|
PUBLIC
|
|
INHERITING FROM zcl_abapgit_objects_super
|
|
FINAL
|
|
CREATE PUBLIC .
|
|
|
|
PUBLIC SECTION.
|
|
|
|
INTERFACES zif_abapgit_object .
|
|
|
|
ALIASES mo_files
|
|
FOR zif_abapgit_object~mo_files .
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
TYPES: ty_dd27p TYPE STANDARD TABLE OF dd27p WITH DEFAULT KEY.
|
|
METHODS _clear_dd27p_fields CHANGING ct_dd27p TYPE ty_dd27p.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
|
|
|
|
|
|
METHOD zif_abapgit_object~changed_by.
|
|
|
|
SELECT SINGLE as4user FROM dd25l
|
|
INTO rv_user
|
|
WHERE viewname = ms_item-obj_name
|
|
AND as4local = 'A'
|
|
AND as4vers = '0000'.
|
|
IF sy-subrc <> 0.
|
|
rv_user = c_user_unknown.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~delete.
|
|
|
|
IF zif_abapgit_object~exists( ) = abap_false.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
delete_ddic( 'L' ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~deserialize.
|
|
|
|
DATA: lv_name TYPE ddobjname,
|
|
ls_dd25v TYPE dd25v,
|
|
lt_dd26e TYPE TABLE OF dd26e,
|
|
lt_dd27p TYPE ty_dd27p.
|
|
|
|
|
|
io_xml->read( EXPORTING iv_name = 'DD25V'
|
|
CHANGING cg_data = ls_dd25v ).
|
|
io_xml->read( EXPORTING iv_name = 'DD26E_TABLE'
|
|
CHANGING cg_data = lt_dd26e ).
|
|
io_xml->read( EXPORTING iv_name = 'DD27P_TABLE'
|
|
CHANGING cg_data = lt_dd27p ).
|
|
|
|
corr_insert( iv_package = iv_package
|
|
ig_object_class = 'DICT' ).
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
CALL FUNCTION 'DDIF_ENQU_PUT'
|
|
EXPORTING
|
|
name = lv_name
|
|
dd25v_wa = ls_dd25v
|
|
TABLES
|
|
dd26e_tab = lt_dd26e
|
|
dd27p_tab = lt_dd27p
|
|
EXCEPTIONS
|
|
enqu_not_found = 1
|
|
name_inconsistent = 2
|
|
enqu_inconsistent = 3
|
|
put_failure = 4
|
|
put_refused = 5
|
|
OTHERS = 6.
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
zcl_abapgit_objects_activation=>add_item( ms_item ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~exists.
|
|
|
|
DATA: lv_viewname TYPE dd25l-viewname.
|
|
|
|
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
|
WHERE viewname = ms_item-obj_name.
|
|
rv_bool = boolc( sy-subrc = 0 ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_comparator.
|
|
RETURN.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_deserialize_steps.
|
|
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
rs_metadata-ddic = abap_true.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_active.
|
|
rv_active = is_active( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_locked.
|
|
|
|
rv_is_locked = abap_false.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~jump.
|
|
|
|
jump_se11( ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~serialize.
|
|
|
|
DATA: lv_name TYPE ddobjname,
|
|
ls_dd25v TYPE dd25v,
|
|
lt_dd26e TYPE TABLE OF dd26e,
|
|
lt_dd27p TYPE ty_dd27p.
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
CALL FUNCTION 'DDIF_ENQU_GET'
|
|
EXPORTING
|
|
name = lv_name
|
|
state = 'A'
|
|
langu = mv_language
|
|
IMPORTING
|
|
dd25v_wa = ls_dd25v
|
|
TABLES
|
|
dd26e_tab = lt_dd26e
|
|
dd27p_tab = lt_dd27p
|
|
EXCEPTIONS
|
|
illegal_input = 1
|
|
OTHERS = 2.
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
IF ls_dd25v IS INITIAL.
|
|
zcx_abapgit_exception=>raise( |No active version found for { ms_item-obj_type } { ms_item-obj_name }| ).
|
|
ENDIF.
|
|
|
|
CLEAR: ls_dd25v-as4user,
|
|
ls_dd25v-as4date,
|
|
ls_dd25v-as4time,
|
|
ls_dd25v-as4local,
|
|
ls_dd25v-as4vers.
|
|
|
|
_clear_dd27p_fields( CHANGING ct_dd27p = lt_dd27p ).
|
|
|
|
io_xml->add( iv_name = 'DD25V'
|
|
ig_data = ls_dd25v ).
|
|
io_xml->add( ig_data = lt_dd26e
|
|
iv_name = 'DD26E_TABLE' ).
|
|
io_xml->add( ig_data = lt_dd27p
|
|
iv_name = 'DD27P_TABLE' ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD _clear_dd27p_fields.
|
|
|
|
FIELD-SYMBOLS <ls_dd27p> TYPE dd27p.
|
|
|
|
LOOP AT ct_dd27p ASSIGNING <ls_dd27p>.
|
|
"taken from table
|
|
CLEAR <ls_dd27p>-headlen.
|
|
CLEAR <ls_dd27p>-scrlen1.
|
|
CLEAR <ls_dd27p>-scrlen2.
|
|
CLEAR <ls_dd27p>-scrlen3.
|
|
CLEAR <ls_dd27p>-intlen.
|
|
CLEAR <ls_dd27p>-outputlen.
|
|
CLEAR <ls_dd27p>-flength.
|
|
CLEAR <ls_dd27p>-ddtext.
|
|
CLEAR <ls_dd27p>-reptext.
|
|
CLEAR <ls_dd27p>-scrtext_s.
|
|
CLEAR <ls_dd27p>-scrtext_m.
|
|
CLEAR <ls_dd27p>-scrtext_l.
|
|
CLEAR <ls_dd27p>-rollname.
|
|
CLEAR <ls_dd27p>-rollnamevi.
|
|
CLEAR <ls_dd27p>-entitytab.
|
|
CLEAR <ls_dd27p>-datatype.
|
|
CLEAR <ls_dd27p>-inttype.
|
|
CLEAR <ls_dd27p>-ddlanguage.
|
|
CLEAR <ls_dd27p>-domname.
|
|
CLEAR <ls_dd27p>-signflag.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|