*&---------------------------------------------------------------------* *& 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. CONSTANTS: c_style_active TYPE tdactivate VALUE 'A'. PRIVATE SECTION. METHODS validate_font IMPORTING iv_tdfamily TYPE tdfamily RAISING zcx_abapgit_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 stxshead INTO lv_stylename WHERE active = c_style_active AND stylename = ms_item-obj_name AND vari = ''. 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. zcx_abapgit_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 = c_style_active 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. zcx_abapgit_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, ls_new_header TYPE ssfcats, lt_paragraphs TYPE TABLE OF ssfparas, lt_strings TYPE TABLE OF ssfstrings, lt_tabstops TYPE TABLE OF stxstab. FIELD-SYMBOLS: TYPE spras. 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_READ_STYLE' "Just load FG EXPORTING i_style_name = ls_header-stylename i_style_active_flag = 'A' EXCEPTIONS OTHERS = 0. IF sy-subrc <> 0. ENDIF. SET PARAMETER ID 'EUK' FIELD iv_package. ASSIGN ('(SAPLSTXBS)MASTER_LANGUAGE') TO . IF sy-subrc = 0. = ls_header-masterlang. ENDIF. CALL FUNCTION 'SSF_SAVE_STYLE' EXPORTING i_header = ls_header IMPORTING e_header = ls_new_header TABLES i_paragraphs = lt_paragraphs i_strings = lt_strings i_tabstops = lt_tabstops. IF ls_new_header IS NOT INITIAL. 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. zcx_abapgit_exception=>raise( 'error from SSF_ACTIVATE_STYLE' ). ENDIF. 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. zcx_abapgit_exception=>raise( 'error from SSF_DELETE_STYLE' ). ENDIF. ENDMETHOD. "delete METHOD lif_object~jump. DATA: ls_bcdata TYPE bdcdata, lt_bcdata TYPE STANDARD TABLE OF bdcdata. ls_bcdata-program = 'SAPMSSFS'. ls_bcdata-dynpro = '0100'. ls_bcdata-dynbegin = 'X'. APPEND ls_bcdata TO lt_bcdata. CLEAR ls_bcdata. ls_bcdata-fnam = 'SSFSCREENS-SNAME'. ls_bcdata-fval = ms_item-obj_name. APPEND ls_bcdata TO lt_bcdata. CLEAR ls_bcdata. ls_bcdata-fnam = 'BDC_OKCODE'. ls_bcdata-fval = '=DISPLAY'. APPEND ls_bcdata TO lt_bcdata. CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'GIT' EXPORTING tcode = 'SMARTSTYLES' mode_val = 'E' TABLES using_tab = lt_bcdata EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. zcx_abapgit_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, SSST' ). ENDIF. ENDMETHOD. "jump METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. ENDMETHOD. ENDCLASS. "lcl_object_ssst IMPLEMENTATION