*&---------------------------------------------------------------------* *& Include ZABAPGIT_OBJECT_SSST *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * CLASS lcl_object_ssst DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_ssst DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. PRIVATE SECTION. METHODS validate_font IMPORTING iv_tdfamily TYPE tdfamily RAISING lcx_exception. ENDCLASS. "lcl_object_ssst DEFINITION *----------------------------------------------------------------------* * CLASS lcl_object_ssst IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_object_ssst IMPLEMENTATION. METHOD lif_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. SELECT SINGLE lastuser FROM stxsadm INTO rv_user WHERE stylename = ms_item-obj_name. IF sy-subrc <> 0. rv_user = c_user_unknown. ENDIF. ENDMETHOD. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-delete_tadir = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. DATA: lv_stylename TYPE stxsadm-stylename. SELECT SINGLE stylename FROM stxsadm INTO lv_stylename WHERE stylename = ms_item-obj_name. rv_bool = boolc( sy-subrc = 0 ). ENDMETHOD. "lif_object~exists METHOD validate_font. DATA: lv_tdfamily TYPE tfo01-tdfamily. SELECT SINGLE tdfamily FROM tfo01 INTO lv_tdfamily WHERE tdfamily = iv_tdfamily. IF sy-subrc <> 0. lcx_exception=>raise( 'Font family not found' ). ENDIF. ENDMETHOD. "validate_font METHOD lif_object~serialize. * see fm SSF_DOWNLOAD_STYLE DATA: lv_style_name TYPE tdssname, ls_header TYPE ssfcats, lt_paragraphs TYPE TABLE OF ssfparas, lt_strings TYPE TABLE OF ssfstrings, lt_tabstops TYPE TABLE OF stxstab. lv_style_name = ms_item-obj_name. CALL FUNCTION 'SSF_READ_STYLE' EXPORTING i_style_name = lv_style_name i_style_active_flag = 'A' i_style_variant = '%MAIN' i_style_language = mv_language IMPORTING e_header = ls_header TABLES e_paragraphs = lt_paragraphs e_strings = lt_strings e_tabstops = lt_tabstops EXCEPTIONS no_name = 1 no_style = 2 active_style_not_found = 3 inactive_style_not_found = 4 no_variant = 5 no_main_variant = 6 cancelled = 7 no_access_permission = 8 OTHERS = 9. IF sy-subrc = 2. RETURN. ELSEIF sy-subrc <> 0. lcx_exception=>raise( 'error from SSF_READ_STYLE' ). ENDIF. CLEAR ls_header-version. CLEAR ls_header-firstuser. CLEAR ls_header-firstdate. CLEAR ls_header-firsttime. CLEAR ls_header-lastuser. CLEAR ls_header-lastdate. CLEAR ls_header-lasttime. io_xml->add( iv_name = 'HEADER' ig_data = ls_header ). io_xml->add( ig_data = lt_paragraphs iv_name = 'SSFPARAS' ). io_xml->add( ig_data = lt_strings iv_name = 'SSFSTRINGS' ). io_xml->add( ig_data = lt_tabstops iv_name = 'STXSTAB' ). ENDMETHOD. "serialize METHOD lif_object~deserialize. * see fm SSF_UPLOAD_STYLE DATA: ls_header TYPE ssfcats, lt_paragraphs TYPE TABLE OF ssfparas, lt_strings TYPE TABLE OF ssfstrings, lt_tabstops TYPE TABLE OF stxstab. io_xml->read( EXPORTING iv_name = 'HEADER' CHANGING cg_data = ls_header ). io_xml->read( EXPORTING iv_name = 'SSFPARAS' CHANGING cg_data = lt_paragraphs ). io_xml->read( EXPORTING iv_name = 'SSFSTRINGS' CHANGING cg_data = lt_strings ). io_xml->read( EXPORTING iv_name = 'STXSTAB' CHANGING cg_data = lt_tabstops ). validate_font( ls_header-tdfamily ). CALL FUNCTION 'SSF_SAVE_STYLE' EXPORTING i_header = ls_header TABLES i_paragraphs = lt_paragraphs i_strings = lt_strings i_tabstops = lt_tabstops. CALL FUNCTION 'SSF_ACTIVATE_STYLE' EXPORTING i_stylename = ls_header-stylename EXCEPTIONS no_name = 1 no_style = 2 cancelled = 3 no_access_permission = 4 illegal_language = 5 OTHERS = 6. IF sy-subrc <> 0. lcx_exception=>raise( 'error from SSF_ACTIVATE_STYLE' ). ENDIF. ENDMETHOD. "deserialize METHOD lif_object~delete. DATA: lv_stylename TYPE tdssname. lv_stylename = ms_item-obj_name. CALL FUNCTION 'SSF_DELETE_STYLE' EXPORTING i_stylename = lv_stylename i_with_dialog = abap_false i_with_confirm_dialog = abap_false EXCEPTIONS no_name = 1 no_style = 2 style_locked = 3 cancelled = 4 no_access_permission = 5 illegal_language = 6 OTHERS = 7. IF sy-subrc <> 0 AND sy-subrc <> 2. lcx_exception=>raise( 'error from SSF_DELETE_STYLE' ). ENDIF. ENDMETHOD. "delete METHOD lif_object~jump. lcx_exception=>raise( 'todo' ). ENDMETHOD. "jump METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. ENDCLASS. "lcl_object_ssst IMPLEMENTATION