CLASS zcl_abapgit_object_para DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS unlock IMPORTING !iv_paramid TYPE memoryid . ENDCLASS. CLASS zcl_abapgit_object_para IMPLEMENTATION. METHOD unlock. CALL FUNCTION 'RS_ACCESS_PERMISSION' EXPORTING mode = 'FREE' object = iv_paramid object_class = 'PARA'. ENDMETHOD. METHOD zif_abapgit_object~changed_by. * looks like "changed by user" is not stored in the database rv_user = c_user_unknown. ENDMETHOD. METHOD zif_abapgit_object~delete. " We can't use FM RS_PARAMETER_DELETE because of the popup to confirm "Therefore we have to reimplement most of the FMs logic DATA lv_paramid TYPE tpara-paramid. lv_paramid = ms_item-obj_name. CALL FUNCTION 'RS_ACCESS_PERMISSION' EXPORTING global_lock = abap_true language_upd_exit = 'RS_PARAMETER_LANGUAGE_EXIT' " Name FuBa for maintenance language change object = lv_paramid object_class = ms_item-obj_type suppress_language_check = space EXCEPTIONS canceled_in_corr = 1 enqueued_by_user = 2 enqueue_system_failure = 3 illegal_parameter_values = 4 locked_by_author = 5 no_modify_permission = 6 no_show_permission = 7 permission_failure = 8 request_language_denied = 9 OTHERS = 10. IF sy-subrc <> 0. zcx_abapgit_exception=>raise_t100( ). ENDIF. SELECT COUNT(*) FROM cross WHERE ( type = 'P' OR type = 'Q' ) AND name = lv_paramid. IF sy-subrc = 0. unlock( lv_paramid ). zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ). ELSE. SELECT COUNT(*) FROM dd04l BYPASSING BUFFER WHERE memoryid = lv_paramid AND as4local = 'A'. IF sy-subrc = 0. unlock( lv_paramid ). zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ). ENDIF. ENDIF. unlock( lv_paramid ). zcl_abapgit_factory=>get_cts_api( )->insert_transport_object( iv_object = 'PARA' iv_obj_name = lv_paramid iv_package = iv_package iv_language = mv_language iv_mode = zif_abapgit_cts_api=>c_transport_mode-delete ). DELETE FROM tpara WHERE paramid = lv_paramid. DELETE FROM tparat WHERE paramid = lv_paramid. CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT' EXPORTING object = lv_paramid operation = 'DELETE' type = 'CR'. ENDMETHOD. METHOD zif_abapgit_object~deserialize. * see fm RS_PARAMETER_ADD and RS_PARAMETER_EDIT DATA: lv_mode TYPE c LENGTH 1, ls_tpara TYPE tpara, ls_tparat TYPE tparat. SELECT SINGLE * FROM tpara INTO ls_tpara WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF IF sy-subrc = 0. lv_mode = 'M'. ELSE. lv_mode = 'I'. ENDIF. io_xml->read( EXPORTING iv_name = 'TPARA' CHANGING cg_data = ls_tpara ). CALL FUNCTION 'RS_CORR_INSERT' EXPORTING object = ms_item-obj_name object_class = 'PARA' mode = lv_mode global_lock = abap_true devclass = iv_package master_language = mv_language suppress_dialog = abap_true EXCEPTIONS cancelled = 1 permission_failure = 2 unknown_objectclass = 3 OTHERS = 4. IF sy-subrc <> 0. zcx_abapgit_exception=>raise_t100( ). ENDIF. MODIFY tpara FROM ls_tpara. "#EC CI_SUBRC ASSERT sy-subrc = 0. io_xml->read( EXPORTING iv_name = 'TPARAT' CHANGING cg_data = ls_tparat ). MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC ASSERT sy-subrc = 0. ENDMETHOD. METHOD zif_abapgit_object~exists. DATA: lv_paramid TYPE tpara-paramid. SELECT SINGLE paramid FROM tpara INTO lv_paramid WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF 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 = exists_a_lock_entry_for( iv_lock_object = 'EEUDB' iv_argument = ms_item-obj_name iv_prefix = 'PA' ). 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: ls_tpara TYPE tpara, ls_tparat TYPE tparat. SELECT SINGLE * FROM tpara INTO ls_tpara WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF IF sy-subrc <> 0. RETURN. ENDIF. SELECT SINGLE * FROM tparat INTO ls_tparat WHERE paramid = ms_item-obj_name AND sprache = mv_language. "#EC CI_GENBUFF "#EC CI_SUBRC io_xml->add( iv_name = 'TPARA' ig_data = ls_tpara ). io_xml->add( iv_name = 'TPARAT' ig_data = ls_tparat ). " Here only the original language is serialized, " so it should be present for the moment. LXEs are just translations ENDMETHOD. ENDCLASS.