CLASS zcl_abapgit_object_enhc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super. PUBLIC SECTION. INTERFACES zif_abapgit_object. ALIASES mo_files FOR zif_abapgit_object~mo_files. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item iv_language TYPE spras. PRIVATE SECTION. DATA: mv_composite_id TYPE enhcompositename. ENDCLASS. CLASS ZCL_ABAPGIT_OBJECT_ENHC IMPLEMENTATION. METHOD constructor. super->constructor( is_item = is_item iv_language = iv_language ). mv_composite_id = ms_item-obj_name. ENDMETHOD. METHOD zif_abapgit_object~changed_by. rv_user = c_user_unknown. ENDMETHOD. METHOD zif_abapgit_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. ENDMETHOD. METHOD zif_abapgit_object~delete. DATA: lx_error TYPE REF TO cx_enh_root, li_enh_object TYPE REF TO if_enh_object. TRY. li_enh_object = cl_enh_factory=>load_enhancement_composite( name = mv_composite_id lock = abap_true ). li_enh_object->delete( ). li_enh_object->save( ). li_enh_object->unlock( ). CATCH cx_enh_root INTO lx_error. zcx_abapgit_exception=>raise( lx_error->get_text( ) ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~deserialize. DATA: lx_error TYPE REF TO cx_enh_root, li_enh_composite TYPE REF TO if_enh_composite, lv_package TYPE devclass, lt_composite_childs TYPE enhcompositename_it, lt_enh_childs TYPE enhname_it, lv_longtext_id TYPE enhdocuobject, lv_shorttext TYPE string. FIELD-SYMBOLS: TYPE enhcompositename, LIKE LINE OF lt_enh_childs. lv_package = iv_package. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' CHANGING cg_data = lv_shorttext ). io_xml->read( EXPORTING iv_name = 'COMPOSITE_CHILDS' CHANGING cg_data = lt_composite_childs ). io_xml->read( EXPORTING iv_name = 'ENH_CHILDS' CHANGING cg_data = lt_enh_childs ). io_xml->read( EXPORTING iv_name = 'LONGTEXT_ID' CHANGING cg_data = lv_longtext_id ). TRY. cl_enh_factory=>create_enhancement_composite( EXPORTING name = mv_composite_id run_dark = abap_true IMPORTING composite = li_enh_composite CHANGING devclass = lv_package ). li_enh_composite->if_enh_object_docu~set_shorttext( lv_shorttext ). LOOP AT lt_composite_childs ASSIGNING . li_enh_composite->add_composite_child( ). ENDLOOP. LOOP AT lt_enh_childs ASSIGNING . li_enh_composite->add_enh_child( ). ENDLOOP. li_enh_composite->set_longtext_id( lv_longtext_id ). li_enh_composite->if_enh_object~save( ). li_enh_composite->if_enh_object~activate( ). li_enh_composite->if_enh_object~unlock( ). CATCH cx_enh_root INTO lx_error. zcx_abapgit_exception=>raise( lx_error->get_text( ) ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~exists. TRY. cl_enh_factory=>load_enhancement_composite( name = mv_composite_id lock = abap_false ). rv_bool = abap_true. CATCH cx_enh_root. rv_bool = abap_false. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~get_metadata. rs_metadata = get_metadata( ). ENDMETHOD. METHOD zif_abapgit_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. METHOD zif_abapgit_object~is_locked. DATA: lv_argument TYPE seqg3-garg. lv_argument = |{ mv_composite_id }|. OVERLAY lv_argument WITH ' '. lv_argument = |{ lv_argument }*|. rv_is_locked = exists_a_lock_entry_for( iv_lock_object = |E_ENHANCE| iv_argument = lv_argument ). ENDMETHOD. METHOD zif_abapgit_object~jump. CALL FUNCTION 'RS_TOOL_ACCESS' EXPORTING operation = 'SHOW' object_name = ms_item-obj_name object_type = ms_item-obj_type in_new_window = abap_true EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. zcx_abapgit_exception=>raise_t100( ). ENDIF. ENDMETHOD. METHOD zif_abapgit_object~serialize. DATA: lx_error TYPE REF TO cx_enh_root, li_enh_composite TYPE REF TO if_enh_composite, lt_composite_childs TYPE enhcompositename_it, lt_enh_childs TYPE enhname_it, lv_longtext_id TYPE enhdocuobject, lv_shorttext TYPE string. TRY. li_enh_composite = cl_enh_factory=>load_enhancement_composite( name = mv_composite_id lock = abap_false ). lv_shorttext = li_enh_composite->if_enh_object_docu~get_shorttext( ). lt_composite_childs = li_enh_composite->get_composite_childs( ). lt_enh_childs = li_enh_composite->get_enh_childs( ). lv_longtext_id = li_enh_composite->get_longtext_id( ). io_xml->add( iv_name = 'SHORTTEXT' ig_data = lv_shorttext ). io_xml->add( iv_name = 'COMPOSITE_CHILDS' ig_data = lt_composite_childs ). io_xml->add( iv_name = 'ENH_CHILDS' ig_data = lt_enh_childs ). io_xml->add( iv_name = 'LONGTEXT_ID' ig_data = lv_longtext_id ). CATCH cx_enh_root INTO lx_error. zcx_abapgit_exception=>raise( lx_error->get_text( ) ). ENDTRY. ENDMETHOD. ENDCLASS.