CLASS zcl_abapgit_object_ftgl DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. DATA: mv_toggle_id TYPE c LENGTH 40, "sftgl_ft_id mr_toggle TYPE REF TO data. METHODS: clear_field IMPORTING iv_fieldname TYPE string CHANGING cg_header TYPE any. ENDCLASS. CLASS zcl_abapgit_object_ftgl IMPLEMENTATION. METHOD clear_field. FIELD-SYMBOLS: TYPE data. ASSIGN COMPONENT iv_fieldname OF STRUCTURE cg_header TO . ASSERT sy-subrc = 0. CLEAR: . ENDMETHOD. METHOD constructor. super->constructor( is_item = is_item iv_language = iv_language io_files = io_files io_i18n_params = io_i18n_params ). mv_toggle_id = ms_item-obj_name. TRY. CREATE DATA mr_toggle TYPE ('FTGL_S_WB_FEATURE_TOGGLE'). CATCH cx_root. RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~changed_by. SELECT SINGLE changedby FROM ('FTGL_ID') INTO rv_user WHERE feature_id = ms_item-obj_name AND version = 'A'. IF sy-subrc <> 0. rv_user = c_user_unknown. ENDIF. ENDMETHOD. METHOD zif_abapgit_object~delete. DATA: lv_return_code TYPE i. CALL METHOD ('CL_FEATURE_TOGGLE_OBJECT')=>delete EXPORTING iv_toggle_id = mv_toggle_id RECEIVING rv_rc = lv_return_code. IF lv_return_code <> 0. zcx_abapgit_exception=>raise( |Cannot delete feature toggle { mv_toggle_id }. | && |Error { sy-subrc } from cl_feature_toggle_object=>delete| ). ENDIF. corr_insert( iv_package ). ENDMETHOD. METHOD zif_abapgit_object~deserialize. DATA: lo_toggle TYPE REF TO object, lx_error TYPE REF TO cx_root. FIELD-SYMBOLS: TYPE data. ASSIGN mr_toggle->* TO . ASSERT sy-subrc = 0. io_xml->read( EXPORTING iv_name = 'FTGL' CHANGING cg_data = ). TRY. CALL METHOD ('CL_FEATURE_TOGGLE_OBJECT')=>create_toggle_by_content EXPORTING is_content = RECEIVING ro_toggle = lo_toggle. CALL METHOD lo_toggle->('SAVE'). tadir_insert( iv_package ). corr_insert( iv_package ). CATCH cx_root INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~exists. CALL METHOD ('CL_FEATURE_TOGGLE')=>is_defined EXPORTING iv_toggle_id = mv_toggle_id RECEIVING rc_exists = rv_bool. 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-late 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 = exists_a_lock_entry_for( iv_lock_object = 'E_FTGL' iv_argument = |{ mv_toggle_id }*| ). 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: lx_error TYPE REF TO cx_root, lo_toggle TYPE REF TO object. FIELD-SYMBOLS: TYPE data. ASSIGN mr_toggle->* TO . ASSERT sy-subrc = 0. TRY. CALL METHOD ('CL_FEATURE_TOGGLE_OBJECT')=>create_toggle_by_id EXPORTING iv_toggle_id = mv_toggle_id RECEIVING ro_toggle = lo_toggle. CATCH cx_root INTO lx_error. zcx_abapgit_exception=>raise_with_text( lx_error ). ENDTRY. CALL METHOD lo_toggle->('GET_CONTENT') RECEIVING rs_content = . clear_field( EXPORTING iv_fieldname = 'HEADER-OWNER' CHANGING cg_header = ). clear_field( EXPORTING iv_fieldname = 'HEADER-CREATED_DATE' CHANGING cg_header = ). clear_field( EXPORTING iv_fieldname = 'HEADER-CREATED_TIME' CHANGING cg_header = ). clear_field( EXPORTING iv_fieldname = 'HEADER-CHANGEDBY ' CHANGING cg_header = ). clear_field( EXPORTING iv_fieldname = 'HEADER-CHANGED_DATE' CHANGING cg_header = ). clear_field( EXPORTING iv_fieldname = 'HEADER-CHANGED_TIME' CHANGING cg_header = ). io_xml->add( iv_name = 'FTGL' ig_data = ). ENDMETHOD. ENDCLASS.