CLASS zcl_abapgit_object_dsys 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_exception. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS: c_typ TYPE dokhl-typ VALUE 'E', c_id TYPE dokhl-id VALUE 'HY'. DATA: mv_doc_object TYPE sobj_name. TYPES: BEGIN OF ty_data, doctitle TYPE dsyst-doktitle, head TYPE thead, lines TYPE tline_tab, END OF ty_data. METHODS deserialize_dsys IMPORTING ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception. METHODS get_main_lang RETURNING VALUE(rv_language) TYPE spras. ENDCLASS. CLASS zcl_abapgit_object_dsys IMPLEMENTATION. METHOD constructor. DATA: lv_prefix TYPE namespace, lv_bare_name TYPE progname. super->constructor( is_item = is_item iv_language = iv_language io_files = io_files io_i18n_params = io_i18n_params ). IF ms_item-obj_name(1) = '/'. CALL FUNCTION 'RS_NAME_SPLIT_NAMESPACE' EXPORTING name_with_namespace = ms_item-obj_name IMPORTING namespace = lv_prefix name_without_namespace = lv_bare_name. mv_doc_object = |{ lv_bare_name+0(4) }{ lv_prefix }{ lv_bare_name+4(*) }|. ELSE. mv_doc_object = ms_item-obj_name. ENDIF. ENDMETHOD. METHOD deserialize_dsys. DATA: ls_data TYPE ty_data, ls_docu_info TYPE dokil, lv_version TYPE dokvers, lv_doku_obj TYPE doku_obj. lv_doku_obj = mv_doc_object. ii_xml->read( EXPORTING iv_name = 'DSYS' CHANGING cg_data = ls_data ). CALL FUNCTION 'DOCU_INIT' EXPORTING id = c_id langu = mv_language object = lv_doku_obj typ = c_typ IMPORTING xdokil = ls_docu_info. lv_version = ls_docu_info-version. CALL FUNCTION 'DOCU_UPDATE' EXPORTING head = ls_data-head state = 'A' typ = c_typ version = lv_version TABLES line = ls_data-lines. ENDMETHOD. METHOD get_main_lang. SELECT SINGLE langu FROM dokil INTO rv_language WHERE id = c_id AND object = mv_doc_object AND masterlang = abap_true. "#EC CI_NOORDER IF sy-subrc <> 0. rv_language = mv_language. ENDIF. ENDMETHOD. METHOD zif_abapgit_object~changed_by. rv_user = zcl_abapgit_factory=>get_longtexts( )->changed_by( iv_object_name = mv_doc_object iv_longtext_id = c_id ). ENDMETHOD. METHOD zif_abapgit_object~delete. zcl_abapgit_factory=>get_longtexts( )->delete( iv_object_name = mv_doc_object iv_longtext_id = c_id ). corr_insert( iv_package ). ENDMETHOD. METHOD zif_abapgit_object~deserialize. DATA: ls_metadata TYPE zif_abapgit_definitions=>ty_metadata. ls_metadata = io_xml->get_metadata( ). CASE ls_metadata-version. WHEN 'v1.0.0'. deserialize_dsys( io_xml ). WHEN 'v2.0.0'. zcl_abapgit_factory=>get_longtexts( )->deserialize( ii_xml = io_xml iv_object_name = mv_doc_object iv_longtext_id = c_id iv_main_language = mv_language ). WHEN OTHERS. zcx_abapgit_exception=>raise( 'unsupported DSYS version' ). ENDCASE. tadir_insert( iv_package ). corr_insert( iv_package ). ENDMETHOD. METHOD zif_abapgit_object~exists. DATA: lv_count TYPE i. SELECT SINGLE COUNT( * ) FROM dokil INTO lv_count WHERE id = c_id AND object = mv_doc_object. "#EC CI_GENBUFF "#EC CI_NOORDER rv_bool = boolc( lv_count > 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-abap TO rt_steps. ENDMETHOD. METHOD zif_abapgit_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-version = 'v2.0.0'. 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. DATA lv_lang TYPE sy-langu. lv_lang = get_main_lang( ). CALL FUNCTION 'DSYS_EDIT' EXPORTING dokclass = mv_doc_object+0(4) dokname = mv_doc_object+4(*) doklangu = lv_lang EXCEPTIONS not_hypertext_class = 1 no_editor = 2 OTHERS = 3. rv_exit = boolc( sy-subrc = 0 ). 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. zcl_abapgit_factory=>get_longtexts( )->serialize( iv_object_name = mv_doc_object iv_longtext_id = c_id io_i18n_params = mo_i18n_params ii_xml = io_xml ). ENDMETHOD. ENDCLASS.