CLASS zcl_abapgit_object_ensc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS ZCL_ABAPGIT_OBJECT_ENSC IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. DATA: lv_spot_name TYPE enhspotcompositename, li_spot_ref TYPE REF TO if_enh_spot_composite, lo_spot_ref TYPE REF TO cl_enh_spot_composite. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp( lock = '' run_dark = abap_true name = lv_spot_name ). lo_spot_ref ?= li_spot_ref. lo_spot_ref->if_enh_spot_composite~get_change_attributes( IMPORTING changedby = rv_user ). CATCH cx_root. rv_user = c_user_unknown. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~delete. DATA: lv_spot_name TYPE enhspotcompositename, lv_message TYPE string, lx_root TYPE REF TO cx_root, li_spot_ref TYPE REF TO if_enh_spot_composite. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp( lock = abap_true run_dark = abap_true name = lv_spot_name ). IF li_spot_ref IS BOUND. li_spot_ref->if_enh_object~delete( nevertheless_delete = abap_true run_dark = abap_true ). ENDIF. li_spot_ref->if_enh_object~unlock( ). CATCH cx_enh_root INTO lx_root. lv_message = `Error occurred while deleting ENSC: ` && lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_message ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~deserialize. DATA: lv_spot_name TYPE enhspotcompositename, lv_message TYPE string, lv_enh_shtext TYPE string, lv_enh_spot TYPE enhspotname, lt_enh_spots TYPE enhspotname_it, lt_comp_spots TYPE enhspotname_it, lx_root TYPE REF TO cx_root, lv_package LIKE iv_package, li_spot_ref TYPE REF TO if_enh_spot_composite, lo_spot_ref TYPE REF TO cl_enh_spot_composite. lv_spot_name = ms_item-obj_name. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' CHANGING cg_data = lv_enh_shtext ). io_xml->read( EXPORTING iv_name = 'ENH_SPOTS' "Enhancement spots CHANGING cg_data = lt_enh_spots ). io_xml->read( EXPORTING iv_name = 'COMP_ENH_SPOTS' "Composite enhancement spots CHANGING cg_data = lt_comp_spots ). IF zif_abapgit_object~exists( ) = abap_true. zif_abapgit_object~delete( iv_package = iv_package iv_transport = iv_transport ). ENDIF. lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement_spot_comp( EXPORTING name = lv_spot_name run_dark = abap_true IMPORTING composite = li_spot_ref CHANGING devclass = lv_package ). lo_spot_ref ?= li_spot_ref. lo_spot_ref->if_enh_object_docu~set_shorttext( lv_enh_shtext ). "Add subsequent enhancement spots LOOP AT lt_enh_spots INTO lv_enh_spot. lo_spot_ref->if_enh_spot_composite~add_enh_spot_child( lv_enh_spot ). ENDLOOP. "Add subsequent composite enhancement spots LOOP AT lt_comp_spots INTO lv_enh_spot. lo_spot_ref->if_enh_spot_composite~add_composite_child( lv_enh_spot ). ENDLOOP. lo_spot_ref->if_enh_object~save( ). lo_spot_ref->if_enh_object~activate( ). lo_spot_ref->if_enh_object~unlock( ). zcl_abapgit_sotr_handler=>create_sotr( iv_package = iv_package io_xml = io_xml ). CATCH cx_enh_root INTO lx_root. lv_message = `Error occurred while deserializing ENSC: ` && lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_message ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~exists. DATA: lv_spot_name TYPE enhspotcompositename. lv_spot_name = ms_item-obj_name. TRY. cl_enh_factory=>get_enhancement_spot_comp( lock = '' run_dark = abap_true name = lv_spot_name ). rv_bool = abap_true. CATCH cx_enh_root. rv_bool = abap_false. ENDTRY. 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-abap 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_OBJECTS=>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_spot_name TYPE enhspotcompositename, lv_message TYPE string, lv_enh_shtext TYPE string, lt_enh_spots TYPE enhspotname_it, lt_comp_spots TYPE enhspotname_it, lx_root TYPE REF TO cx_root, li_spot_ref TYPE REF TO if_enh_spot_composite, lo_spot_ref TYPE REF TO cl_enh_spot_composite. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp( lock = '' run_dark = abap_true name = lv_spot_name ). lo_spot_ref ?= li_spot_ref. lv_enh_shtext = li_spot_ref->if_enh_object_docu~get_shorttext( ). "find subsequent enhancement spots lt_enh_spots = lo_spot_ref->if_enh_spot_composite~get_enh_spot_childs( ). "find subsequent composite enhancement spots lt_comp_spots = lo_spot_ref->if_enh_spot_composite~get_composite_childs( ). io_xml->add( ig_data = lv_enh_shtext iv_name = 'SHORTTEXT' ). io_xml->add( ig_data = lt_enh_spots iv_name = 'ENH_SPOTS' ). "Enhancement spots io_xml->add( ig_data = lt_comp_spots iv_name = 'COMP_ENH_SPOTS' ). "Composite enhancement spots zcl_abapgit_sotr_handler=>read_sotr( iv_pgmid = 'R3TR' iv_object = ms_item-obj_type iv_obj_name = ms_item-obj_name io_i18n_params = mo_i18n_params io_xml = io_xml ). CATCH cx_enh_root INTO lx_root. lv_message = `Error occurred while serializing ENSC: ` && lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_message ). ENDTRY. ENDMETHOD. ENDCLASS.