CLASS zcl_abapgit_object_sfsw DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PRIVATE SECTION. METHODS: get RETURNING VALUE(ro_switch) TYPE REF TO cl_sfw_sw RAISING zcx_abapgit_exception. ENDCLASS. CLASS ZCL_ABAPGIT_OBJECT_SFSW IMPLEMENTATION. METHOD get. DATA: lv_switch_id TYPE sfw_switch_id. lv_switch_id = ms_item-obj_name. TRY. ro_switch = cl_sfw_sw=>get_switch_from_db( lv_switch_id ). CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized. zcx_abapgit_exception=>raise( 'Error from CL_SFW_SW=>GET_SWITCH' ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~changed_by. DATA: ls_data TYPE sfw_switch. ls_data = get( )->get_header_data( ). rv_user = ls_data-changedby. IF rv_user IS INITIAL. rv_user = ls_data-author. ENDIF. 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: lv_switch_id TYPE sfw_switch_id, lo_switch TYPE REF TO cl_sfw_sw. lv_switch_id = ms_item-obj_name. TRY. lo_switch = cl_sfw_sw=>get_switch( lv_switch_id ). lo_switch->set_delete_flag( lv_switch_id ). lo_switch->save_all( ). CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized. zcx_abapgit_exception=>raise( 'Error deleting Switch' ). ENDTRY. ENDMETHOD. "delete METHOD zif_abapgit_object~deserialize. DATA: lo_switch TYPE REF TO cl_sfw_sw, lv_switch_id TYPE sfw_switch_id, ls_header TYPE sfw_switch, lv_name_32 TYPE sfw_name32, lv_name_80 TYPE sfw_name80, lt_parent_bf TYPE sfw_bf_sw_outtab, lt_conflicts TYPE sfw_confl_outtab. io_xml->read( EXPORTING iv_name = 'HEADER' CHANGING cg_data = ls_header ). io_xml->read( EXPORTING iv_name = 'NAME32' CHANGING cg_data = lv_name_32 ). io_xml->read( EXPORTING iv_name = 'NAME80' CHANGING cg_data = lv_name_80 ). io_xml->read( EXPORTING iv_name = 'PARENT_BF' CHANGING cg_data = lt_parent_bf ). io_xml->read( EXPORTING iv_name = 'CONFLICTS' CHANGING cg_data = lt_conflicts ). lv_switch_id = ms_item-obj_name. TRY. lo_switch = cl_sfw_sw=>create_switch( lv_switch_id ). CATCH cx_pak_not_authorized cx_pak_invalid_state cx_pak_invalid_data. zcx_abapgit_exception=>raise( 'error in CL_SFW_SW=>CREATE_SWITCH' ). ENDTRY. ls_header-author = sy-uname. ls_header-createdon = sy-datum. lo_switch->set_header_data( ls_header ). lo_switch->set_texts( p_32 = lv_name_32 p_80 = lv_name_80 ). lo_switch->set_parent_bf( lt_parent_bf ). lo_switch->set_conflicts( lt_conflicts ). * magic, see function module RS_CORR_INSERT, FORM get_current_devclass SET PARAMETER ID 'EUK' FIELD iv_package. lo_switch->save_all( EXCEPTIONS not_saved = 1 OTHERS = 2 ). SET PARAMETER ID 'EUK' FIELD ''. IF sy-subrc <> 0. zcx_abapgit_exception=>raise( 'error in CL_SFW_SW->SAVE_ALL' ). ENDIF. zcl_abapgit_objects_activation=>add_item( ms_item ). ENDMETHOD. "deserialize METHOD zif_abapgit_object~exists. DATA: ls_tadir TYPE tadir, lv_switch_id TYPE sfw_switch_id. lv_switch_id = ms_item-obj_name. IF cl_sfw_sw=>check_existence( lv_switch_id ) = abap_false. RETURN. ENDIF. SELECT SINGLE * FROM tadir INTO ls_tadir WHERE pgmid = 'R3TR' AND object = ms_item-obj_type AND obj_name = ms_item-obj_name. IF ls_tadir IS INITIAL. RETURN. ENDIF. rv_bool = abap_true. ENDMETHOD. "zif_abapgit_object~exists METHOD zif_abapgit_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-ddic = abap_true. ENDMETHOD. "zif_abapgit_object~get_metadata METHOD zif_abapgit_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. "zif_abapgit_object~has_changed_since METHOD zif_abapgit_object~jump. CALL FUNCTION 'RS_TOOL_ACCESS' EXPORTING operation = 'SHOW' object_name = ms_item-obj_name object_type = 'SFSW' in_new_window = abap_true. ENDMETHOD. "jump METHOD zif_abapgit_object~serialize. DATA: lo_switch TYPE REF TO cl_sfw_sw, ls_header TYPE sfw_switch, lv_name_32 TYPE sfw_name32, lv_name_80 TYPE sfw_name80, lt_parent_bf TYPE sfw_bf_sw_outtab, lt_conflicts TYPE sfw_confl_outtab. IF zif_abapgit_object~exists( ) = abap_false. RETURN. ENDIF. lo_switch = get( ). ls_header = lo_switch->get_header_data( ). CLEAR: ls_header-author, ls_header-createdon, ls_header-changedby, ls_header-changedon, ls_header-timestamp. lo_switch->get_texts( IMPORTING p_32 = lv_name_32 p_80 = lv_name_80 ). lt_parent_bf = lo_switch->get_parent_bf( ). lt_conflicts = lo_switch->get_conflicts( ). io_xml->add( ig_data = ls_header iv_name = 'HEADER' ). io_xml->add( ig_data = lv_name_32 iv_name = 'NAME32' ). io_xml->add( ig_data = lv_name_80 iv_name = 'NAME80' ). io_xml->add( ig_data = lt_parent_bf iv_name = 'PARENT_BF' ). io_xml->add( ig_data = lt_conflicts iv_name = 'CONFLICTS' ). ENDMETHOD. "serialize METHOD zif_abapgit_object~is_locked. rv_is_locked = abap_false. ENDMETHOD. ENDCLASS.