CLASS zcl_abapgit_object_enqu DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_object . PROTECTED SECTION. PRIVATE SECTION. TYPES: ty_dd27p TYPE STANDARD TABLE OF dd27p WITH DEFAULT KEY. " Fields that are not part of dd25v TYPES: BEGIN OF ty_extra, abap_language_version TYPE uccheck, END OF ty_extra. 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, ls_extra TYPE ty_extra, 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. " Fields that are not part of dd25v io_xml->read( EXPORTING iv_name = 'DD25L_EXTRA' CHANGING cg_data = ls_extra ). TRY. set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ). UPDATE ('DD25L') SET abap_language_version = ls_extra-abap_language_version WHERE viewname = lv_name. CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER. ENDTRY. 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_order. 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( ). 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. " Covered by ZCL_ABAPGIT_OBJECT=>JUMP ENDMETHOD. METHOD zif_abapgit_object~map_filename_to_object. RETURN. ENDMETHOD. METHOD zif_abapgit_object~map_object_to_filename. RETURN. ENDMETHOD. METHOD zif_abapgit_object~serialize. DATA: lv_name TYPE ddobjname, lv_state TYPE ddgotstate, ls_dd25v TYPE dd25v, ls_extra TYPE ty_extra, 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 gotstate = lv_state 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 OR lv_state <> 'A'. RETURN. 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' ). ls_extra-abap_language_version = get_abap_language_version( ). io_xml->add( iv_name = 'DD25L_EXTRA' ig_data = ls_extra ). ENDMETHOD. METHOD _clear_dd27p_fields. FIELD-SYMBOLS TYPE dd27p. LOOP AT ct_dd27p ASSIGNING . "taken from table CLEAR -headlen. CLEAR -scrlen1. CLEAR -scrlen2. CLEAR -scrlen3. CLEAR -intlen. CLEAR -outputlen. CLEAR -flength. CLEAR -ddtext. CLEAR -reptext. CLEAR -scrtext_s. CLEAR -scrtext_m. CLEAR -scrtext_l. CLEAR -rollname. CLEAR -rollnamevi. CLEAR -entitytab. CLEAR -datatype. CLEAR -inttype. CLEAR -ddlanguage. CLEAR -domname. CLEAR -signflag. ENDLOOP. ENDMETHOD. ENDCLASS.