diff --git a/build/ABAP2XLSX_V_7_0.nugg b/build/ABAP2XLSX_V_7_0.nugg index 769d980..8237b75 100644 --- a/build/ABAP2XLSX_V_7_0.nugg +++ b/build/ABAP2XLSX_V_7_0.nugg @@ -457,7 +457,7 @@ - method GET_IXML_FROM_ZIP_ARCHIVE. + METHOD get_ixml_from_zip_archive. *--------------------------------------------------------------------* * ToDos: * 2do§1 Add comment what is being achieved here @@ -496,7 +496,7 @@ lo_parser->set_validating( mode = if_ixml_parser=>co_no_validation ). lo_parser->parse( ). - endmethod. +ENDMETHOD. @@ -1918,7 +1918,7 @@ - method LOAD_WORKSHEET. + METHOD load_worksheet. *--------------------------------------------------------------------* * ToDos: * 2do§1 Header/footer @@ -2127,6 +2127,9 @@ lv_datavalidation_range TYPE string, lt_datavalidation_range TYPE TABLE OF string. + DATA: lv_errormessage TYPE string, + lo_ex TYPE REF TO cx_root. + *--------------------------------------------------------------------* * §2 We need to read the the file "\\_rels\.rels" because it tells * us where in this folder structure the data for the workbook @@ -2310,8 +2313,11 @@ ls_ref_formula-ref = ls_formula_attributes-ref. ls_ref_formula-formula = lv_cell_formula. INSERT ls_ref_formula INTO TABLE me->mt_ref_formulae. - CATCH cx_root. - BREAK-POINT. + CATCH cx_root INTO lo_ex. + lv_errormessage = lo_ex->if_message~get_text( ). + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = lv_errormessage. ENDTRY. ENDIF. *--------------------------------------------------------------------* @@ -2573,16 +2579,16 @@ ip_element = lo_ixml_datavalidation_elem CHANGING cp_structure = ls_datavalidation ). - clear lo_ixml_formula_elem. + CLEAR lo_ixml_formula_elem. lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ). - if lo_ixml_formula_elem is bound. + IF lo_ixml_formula_elem IS BOUND. ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ). - endif. - clear lo_ixml_formula_elem. + ENDIF. + CLEAR lo_ixml_formula_elem. lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ). - if lo_ixml_formula_elem is bound. + IF lo_ixml_formula_elem IS BOUND. ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ). - endif. + ENDIF. SPLIT ls_datavalidation-sqref AT space INTO TABLE lt_datavalidation_range. LOOP AT lt_datavalidation_range INTO lv_datavalidation_range. zcl_excel_common=>convert_range2column_a_row( EXPORTING @@ -2610,12 +2616,12 @@ lo_data_validation->cell_row_to = ls_datavalidation-cell_row_to. lo_data_validation->cell_column = ls_datavalidation-cell_column. lo_data_validation->cell_column_to = ls_datavalidation-cell_column_to. - endloop. + ENDLOOP. lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ). ENDWHILE. " End fix 276 Read data validations - endmethod. +ENDMETHOD. @@ -3134,17 +3140,13 @@ - - method CONSTRUCTOR. - endmethod. - - + - method IS_SECURITY_ENABLED. + METHOD is_security_enabled. IF lockrevision EQ abap_true OR lockstructure EQ abap_true OR lockwindows EQ abap_true. ep_security_enabled = abap_true. ENDIF. - endmethod. +ENDMETHOD. @@ -3813,11 +3815,7 @@ - - method CONSTRUCTOR. - endmethod. - - + method GET_STRUCTURE. *initialize colors to 'not set' @@ -3894,39 +3892,33 @@ *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - - - endmethod. - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4323,12 +4315,7 @@ - - method CONSTRUCTOR. - - endmethod. - - + method GET_BOTTOM_ROW_INTEGER. DATA: lv_table_lines TYPE i. @@ -4359,7 +4346,7 @@ ov_id = id. endmethod. - + method GET_NAME. @@ -4371,7 +4358,7 @@ ov_name = me->name. endmethod. - + method GET_REFERENCE. @@ -4415,7 +4402,7 @@ endmethod. - + method GET_RIGHT_COLUMN_INTEGER. @@ -4517,6 +4504,27 @@ ENDMETHOD. + + + + @@ -4731,6 +4739,7 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION + @@ -7129,7 +7138,7 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION CONSTANTS: lc_top_left_column TYPE zexcel_cell_column_alpha VALUE 'B', - lc_top_left_row TYPE zexcel_cell_row VALUE '3'. + lc_top_left_row TYPE zexcel_cell_row VALUE 3. DATA: lv_row_int TYPE zexcel_cell_row, @@ -7377,31 +7386,255 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION - + - method CALCULATE_CELL_WIDTH. - DATA: cell_value TYPE zexcel_cell_value, - guid TYPE zexcel_cell_style, - stylemapping TYPE zexcel_s_stylemapping. + *--------------------------------------------------------------------* +* issue #293 - Roberto Bianco +* - Christian Assig 2014-03-14 +* +* changes: - Calculate widths using SAPscript font metrics +* (transaction SE73) +* - Calculate the width of dates +* - Add additional width for auto filter buttons +* - Add cell padding to simulate Excel behavior +*--------------------------------------------------------------------* +METHOD calculate_cell_width. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_value = cell_value - ep_guid = guid )." Cell Value ). + CONSTANTS: + lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT + lc_default_font_height TYPE tdfontsize VALUE '110', + lc_excel_cell_padding TYPE float VALUE '0.75'. + DATA: ld_cell_value TYPE zexcel_cell_value, + ld_current_character TYPE c LENGTH 1, + ld_style_guid TYPE zexcel_cell_style, + ls_stylemapping TYPE zexcel_s_stylemapping, + lo_table_object TYPE REF TO object, + lo_table TYPE REF TO zcl_excel_table, + ld_table_top_left_column TYPE zexcel_cell_column, + ld_table_bottom_right_column TYPE zexcel_cell_column, + ld_flag_contains_auto_filter TYPE abap_bool VALUE abap_false, + ld_flag_bold TYPE abap_bool VALUE abap_false, + ld_flag_italic TYPE abap_bool VALUE abap_false, + ld_date TYPE d, + ld_date_char TYPE c LENGTH 50, + ld_font_height TYPE tdfontsize VALUE lc_default_font_height, + lt_itcfc TYPE STANDARD TABLE OF itcfc, + ld_offset TYPE i, + ld_uccp TYPE i, + ls_font_metric TYPE mty_s_font_metric, + ld_width_from_font_metrics TYPE i, + ld_font_family TYPE itcfh-tdfamily, + ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, + lt_font_families LIKE STANDARD TABLE OF ld_font_family, + ls_font_cache TYPE mty_s_font_cache. - ep_width = STRLEN( cell_value ). - TRY. - stylemapping = me->excel->get_style_to_guid( guid ). - CATCH zcx_excel. - EXIT. " Do nothing if no style was found - ENDTRY. + FIELD-SYMBOLS: <ls_font_cache> TYPE mty_s_font_cache, + <ls_font_metric> TYPE mty_s_font_metric, + <ls_itcfc> TYPE itcfc. - IF stylemapping-complete_stylex-font-size = 'X'. - ep_width = ep_width * stylemapping-complete_style-font-size / 11. + " Determine cell content and cell style + me->get_cell( EXPORTING ip_column = ip_column + ip_row = ip_row + IMPORTING ep_value = ld_cell_value + ep_guid = ld_style_guid ). + + " ABAP2XLSX uses tables to define areas containing headers and + " auto-filters. Find out if the current cell is in the header + " of one of these tables. + LOOP AT me->tables->collection INTO lo_table_object. + " Downcast: OBJECT -> ZCL_EXCEL_TABLE + lo_table ?= lo_table_object. + + " Convert column letters to corresponding integer values + ld_table_top_left_column = + zcl_excel_common=>convert_column2int( + lo_table->settings-top_left_column ). + + ld_table_bottom_right_column = + zcl_excel_common=>convert_column2int( + lo_table->settings-bottom_right_column ). + + " Is the current cell part of the table header? + IF ip_column BETWEEN ld_table_top_left_column AND + ld_table_bottom_right_column AND + ip_row EQ lo_table->settings-top_left_row. + " Current cell is part of the table header + " -> Assume that an auto filter is present and that the font is + " bold + ld_flag_contains_auto_filter = abap_true. + ld_flag_bold = abap_true. + ENDIF. + ENDLOOP. + + " If a style GUID is present, read style attributes + IF ld_style_guid IS NOT INITIAL. + TRY. + " Read style attributes + ls_stylemapping = me->excel->get_style_to_guid( ld_style_guid ). + + " If the current cell contains the default date format, + " convert the cell value to a date and calculate its length + IF ls_stylemapping-complete_style-number_format-format_code = + zcl_excel_style_number_format=>c_format_date_std. + + " Convert excel date to ABAP date + ld_date = + zcl_excel_common=>excel_string_to_date( ld_cell_value ). + + " Format ABAP date using user's formatting settings + WRITE ld_date TO ld_date_char. + + " Remember the formatted date to calculate the cell size + ld_cell_value = ld_date_char. + + ENDIF. + + " Read the font size and convert it to the font height + " used by SAPscript (multiplication by 10) + IF ls_stylemapping-complete_stylex-font-size = abap_true. + ld_font_height = ls_stylemapping-complete_style-font-size * 10. + ENDIF. + + " If set, remember the font name + IF ls_stylemapping-complete_stylex-font-name = abap_true. + ld_font_name = ls_stylemapping-complete_style-font-name. + ENDIF. + + " If set, remember whether font is bold and italic. + IF ls_stylemapping-complete_stylex-font-bold = abap_true. + ld_flag_bold = ls_stylemapping-complete_style-font-bold. + ENDIF. + + IF ls_stylemapping-complete_stylex-font-italic = abap_true. + ld_flag_italic = ls_stylemapping-complete_style-font-italic. + ENDIF. + + CATCH zcx_excel ##NO_HANDLER. + " Style GUID is present, but style was not found + " Continue with default values + + ENDTRY. ENDIF. - endmethod. + " Check if the same font (font name and font attributes) was already + " used before + READ TABLE mth_font_cache + WITH TABLE KEY + font_name = ld_font_name + font_height = ld_font_height + flag_bold = ld_flag_bold + flag_italic = ld_flag_italic + ASSIGNING <ls_font_cache>. + + IF sy-subrc <> 0. + " Font is used for the first time + " Add the font to our local font cache + ls_font_cache-font_name = ld_font_name. + ls_font_cache-font_height = ld_font_height. + ls_font_cache-flag_bold = ld_flag_bold. + ls_font_cache-flag_italic = ld_flag_italic. + INSERT ls_font_cache INTO TABLE mth_font_cache + ASSIGNING <ls_font_cache>. + + " Determine the SAPscript font family name from the Excel + " font name + SELECT tdfamily + FROM tfo01 + INTO TABLE lt_font_families + UP TO 1 ROWS + WHERE tdtext = ld_font_name. + + " Check if a matching font family was found + " Fonts can be uploaded from TTF files using transaction SE73 + IF lines( lt_font_families ) > 0. + READ TABLE lt_font_families INDEX 1 INTO ld_font_family. + + " Load font metrics (returns a table with the size of each letter + " in the font) + CALL FUNCTION 'LOAD_FONT' + EXPORTING + family = ld_font_family + height = ld_font_height + printer = 'SWIN' + bold = ld_flag_bold + italic = ld_flag_italic + TABLES + metric = lt_itcfc + EXCEPTIONS + font_family = 1 + codepage = 2 + device_type = 3 + OTHERS = 4. + IF sy-subrc <> 0. + CLEAR lt_itcfc. + ENDIF. + + " For faster access, convert each character number to the actual + " character, and store the characters and their sizes in a hash + " table + LOOP AT lt_itcfc ASSIGNING <ls_itcfc>. + ld_uccp = <ls_itcfc>-cpcharno. + ls_font_metric-char = + cl_abap_conv_in_ce=>uccpi( ld_uccp ). + ls_font_metric-char_width = <ls_itcfc>-tdcwidths. + INSERT ls_font_metric + INTO TABLE <ls_font_cache>-th_font_metrics. + ENDLOOP. + + ENDIF. + ENDIF. + + " Calculate the cell width + " If available, use font metrics + IF lines( <ls_font_cache>-th_font_metrics ) = 0. + " Font metrics are not available + " -> Calculate the cell width using only the font size + ep_width = + strlen( ld_cell_value ) * ld_font_height / lc_default_font_height + + lc_excel_cell_padding. + + ELSE. + " Font metrics are available + + " Calculate the size of the text by adding the sizes of each + " letter + DO strlen( ld_cell_value ) TIMES. + " Subtract 1, because the first character is at offset 0 + ld_offset = sy-index - 1. + + " Read the current character from the cell value + ld_current_character = ld_cell_value+ld_offset(1). + + " Look up the size of the current letter + READ TABLE <ls_font_cache>-th_font_metrics + WITH TABLE KEY char = ld_current_character + ASSIGNING <ls_font_metric>. + IF sy-subrc = 0. + " The size of the letter is known + " -> Add the actual size of the letter + ADD <ls_font_metric>-char_width TO ld_width_from_font_metrics. + ELSE. + " The size of the letter is unknown + " -> Add the font height as the default letter size + ADD ld_font_height TO ld_width_from_font_metrics. + ENDIF. + ENDDO. + + " Add cell padding (Excel makes columns a bit wider than the space + " that is needed for the text itself) and convert unit + " (division by 100) + ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. + ENDIF. + + " If the current cell contains an auto filter, make it a bit wider. + " The size used by the auto filter button does not depend on the font + " size. + IF ld_flag_contains_auto_filter = abap_true. + ADD 2 TO ep_width. + ENDIF. + +ENDMETHOD. @@ -7423,7 +7656,7 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION DATA: cell_style TYPE REF TO zcl_excel_style. DATA: count TYPE int4. DATA: highest_row TYPE int4. - DATA: width TYPE i. + DATA: width TYPE float. FIELD-SYMBOLS: <column_dimension> LIKE LINE OF column_dimensions. FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes. @@ -9068,7 +9301,7 @@ ENDMETHOD. ls_newline TYPE REF TO data, ls_header TYPE x030l, lt_dfies TYPE ddfields, - lv_row_header TYPE zexcel_cell_row VALUE '2', + lv_row_header TYPE zexcel_cell_row VALUE 2, lv_col_header TYPE zexcel_cell_column_alpha VALUE 'B', lv_row_int TYPE zexcel_cell_row, lv_column_int TYPE zexcel_cell_column, @@ -17995,7 +18228,7 @@ TYPES: BEGIN OF ts_objects, - + @@ -18045,7 +18278,7 @@ TYPES: BEGIN OF ts_objects, ENDIF. endmethod. - + @@ -18098,7 +18331,7 @@ TYPES: BEGIN OF ts_objects, ENDIF. endmethod. - + @@ -18162,7 +18395,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18203,7 +18436,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18362,7 +18595,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18385,7 +18618,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18478,7 +18711,7 @@ TYPES: BEGIN OF ts_objects, e_sheet = unescape_string( lv_sheet ). " Return in unescaped form endmethod. - + method DATE_TO_EXCEL_STRING. @@ -18547,11 +18780,7 @@ TYPES: BEGIN OF ts_objects, ENDIF. endmethod. - - method DESCRIBE_TABLE. - endmethod. - - + @@ -18581,7 +18810,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + method ENCRYPT_PASSWORD. @@ -18623,7 +18852,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + method ESCAPE_STRING. @@ -18674,7 +18903,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18697,7 +18926,7 @@ TYPES: BEGIN OF ts_objects, ENDTRY. endmethod. - + @@ -18720,7 +18949,7 @@ TYPES: BEGIN OF ts_objects, ENDTRY. endmethod. - + @@ -18760,7 +18989,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + method GET_FIELDCATALOG. @@ -18821,7 +19050,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + method NUMBER_TO_EXCEL_STRING. @@ -18840,7 +19069,7 @@ TYPES: BEGIN OF ts_objects, ENDIF. endmethod. - + @@ -18899,7 +19128,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -18963,7 +19192,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -19351,7 +19580,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + @@ -19438,7 +19667,7 @@ TYPES: BEGIN OF ts_objects, endmethod. - + method TIME_TO_EXCEL_STRING. @@ -19452,7 +19681,7 @@ TYPES: BEGIN OF ts_objects, ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_day_fraction ). endmethod. - + @@ -20297,7 +20526,7 @@ TYPES: BEGIN OF ts_color_styles, - method CREATE_TEXT_SUBTOTAL. + METHOD create_text_subtotal. DATA: l_string(256) TYPE c, l_func TYPE string. @@ -20316,11 +20545,11 @@ TYPES: BEGIN OF ts_color_styles, CLEAR l_func. ENDCASE. - WRITE i_value TO l_string. + MOVE i_value TO l_string. CONCATENATE l_string l_func INTO r_text SEPARATED BY space. - endmethod. +ENDMETHOD. @@ -20627,7 +20856,7 @@ TYPES: BEGIN OF ts_color_styles, method LOOP_NORMAL. DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE '2', + l_row_header TYPE zexcel_cell_row VALUE 2, l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', l_row_int_start TYPE zexcel_cell_row, l_row_int_end TYPE zexcel_cell_row, @@ -20750,7 +20979,7 @@ TYPES: BEGIN OF ts_color_styles, method LOOP_SUBTOTAL. DATA: lo_data TYPE REF TO data, - l_row_header TYPE zexcel_cell_row VALUE '2', + l_row_header TYPE zexcel_cell_row VALUE 2, l_col_header TYPE zexcel_cell_column_alpha VALUE 'B', l_row_int_start TYPE zexcel_cell_row, l_row_int_end TYPE zexcel_cell_row, @@ -21623,7 +21852,7 @@ TYPES: BEGIN OF ts_col_converter, - method GET_FILTER. + METHOD get_filter. DATA: ls_filt TYPE lvc_s_filt, l_line TYPE i, ls_filter TYPE zexcel_s_converter_fil. @@ -21638,10 +21867,10 @@ TYPES: BEGIN OF ts_col_converter, FIELD-SYMBOLS: <fs_tab> TYPE STANDARD TABLE, <fs_ltab> TYPE STANDARD TABLE, - <fs_stab> TYPE ANY, - <fs> TYPE ANY, - <fs1> TYPE ANY, - <fs_srange> TYPE ANY, + <fs_stab> TYPE any, + <fs> TYPE any, + <fs1> TYPE any, + <fs_srange> TYPE any, <fs_trange> TYPE STANDARD TABLE. IF ws_option-filter = abap_false. @@ -21719,7 +21948,7 @@ TYPES: BEGIN OF ts_col_converter, ENDIF. ENDLOOP. - endmethod. +ENDMETHOD. @@ -22068,8 +22297,6 @@ ENDMETHOD. CLEAR: es_layout, et_fieldcatalog. - break rturnheim. - IF lo_result IS BOUND. lo_data = get_table( io_object = lo_result->r_model->r_data ). IF lo_data IS BOUND. @@ -22661,15 +22888,15 @@ ENDMETHOD. - - - + + + - - - + + + @@ -22759,15 +22986,18 @@ ENDMETHOD. - method GET_MEDIA. + METHOD get_media. + + DATA: lv_language TYPE sylangu. + DATA: lt_bin_mime TYPE sdokcntbins. + DATA: lt_mime TYPE tsfmime, + lv_filesize TYPE i, + lv_filesizec(10). + CASE media_source. WHEN c_media_source_xstring. r_media = media. WHEN c_media_source_www. - DATA: lt_mime TYPE tsfmime, - lv_filesize TYPE i, - lv_filesizec(10). - CALL FUNCTION 'WWWDATA_IMPORT' EXPORTING key = media_key_www @@ -22796,14 +23026,14 @@ ENDMETHOD. failed = 1 OTHERS = 2. WHEN c_media_source_mime. - DATA: lt_bin_mime TYPE sdokcntbins. + lv_language = sy-langu. cl_wb_mime_repository=>load_mime( EXPORTING io = me->io IMPORTING filesize = lv_filesize bin_data = lt_bin_mime CHANGING - language = sy-langu ). + language = lv_language ). CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING @@ -22816,7 +23046,7 @@ ENDMETHOD. failed = 1 OTHERS = 2. ENDCASE. - endmethod. +ENDMETHOD. @@ -23559,7 +23789,7 @@ ENDMETHOD. - + method PIXEL2EMU. * suppose 96 DPI IF ip_dpi IS SUPPLIED. @@ -23593,26 +23823,27 @@ ENDMETHOD. - method SET_MEDIA_MIME. + METHOD set_media_mime. + + DATA: lv_language TYPE sylangu. io = ip_io. media_source = c_media_source_mime. size-width = ip_width. size-height = ip_height. + lv_language = sy-langu. cl_wb_mime_repository=>load_mime( EXPORTING io = ip_io IMPORTING filename = media_name "mimetype = media_type CHANGING - language = sy-langu ). + language = lv_language ). SPLIT media_name AT '.' INTO media_name media_type. - - - endmethod. +ENDMETHOD. @@ -23814,244 +24045,244 @@ ENDMETHOD. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -24962,11 +25193,7 @@ ENDMETHOD. - - method CONSTRUCTOR. - endmethod. - - + method GET_GUID. @@ -24974,7 +25201,7 @@ ENDMETHOD. endmethod. - + method GET_VALUE. @@ -24982,13 +25209,13 @@ ENDMETHOD. endmethod. - + method SET_RANGE_VALUE. me->value = ip_value. endmethod. - + @@ -25331,11 +25558,6 @@ ENDMETHOD. - - - - - @@ -25379,12 +25601,12 @@ ENDMETHOD. - - + + - - + + @@ -30724,144 +30946,6 @@ CLASS lcl_perform IMPLEMENTATION. ENDCLASS. "lcl_perform IMPLEMENTATION - - - - - - - *&---------------------------------------------------------------------* -*& Report Z_ZAKE_SVN -*& -*&---------------------------------------------------------------------* -*& Checkout / Checkin the ZAKE_SVN Project -*& -*&---------------------------------------------------------------------* - -REPORT zake_svn_a2x. - -CONSTANTS cl_svn TYPE seoclsname VALUE 'ZCL_ZAKE_SVN'. -CONSTANTS cl_tortoise_svn TYPE seoclsname VALUE 'ZCL_ZAKE_TORTOISE_SVN'. - -DATA package TYPE devclass. -DATA zake TYPE REF TO zake. - -DATA objects TYPE scts_tadir. -DATA object LIKE LINE OF objects. - -DATA files TYPE string_table. -DATA file LIKE LINE OF files. - -DATA zake_build TYPE string. -DATA zake_nuggetname TYPE string. - -DATA comment_str TYPE string. -DATA loclpath_str TYPE string. -DATA svnpath_str TYPE string. -DATA username_str TYPE string. -DATA password_str TYPE string. -DATA class TYPE seoclsname. - -DATA: ex TYPE REF TO zcx_saplink, - message TYPE string. - -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE a. -PARAMETERS: - checkout TYPE flag RADIOBUTTON GROUP act, - update TYPE flag RADIOBUTTON GROUP act DEFAULT 'X', - install TYPE flag RADIOBUTTON GROUP act, - export TYPE flag RADIOBUTTON GROUP act, - build TYPE flag RADIOBUTTON GROUP act, - checkin TYPE flag RADIOBUTTON GROUP act. -SELECTION-SCREEN END OF BLOCK a. - -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE b. -PARAMETERS: - svn TYPE flag RADIOBUTTON GROUP cl, - tortoise TYPE flag RADIOBUTTON GROUP cl. -SELECTION-SCREEN END OF BLOCK b. - -SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE c. -PARAMETERS: - loclpath TYPE char512 DEFAULT 'C:\Projects\abap2xlsx\trunk' LOWER CASE OBLIGATORY, - zakenugg TYPE char512 DEFAULT 'C:\Projects\abap2xlsx\nuggs\abap2xlsx_Daily.nugg' LOWER CASE OBLIGATORY, - svnpath TYPE char512 DEFAULT 'https://code.sdn.sap.com/svn/abap2xlsx/trunk' LOWER CASE OBLIGATORY, - comment TYPE char512 DEFAULT '' LOWER CASE, - username TYPE char512 LOWER CASE, - password TYPE char512 LOWER CASE, - testrun TYPE flag DEFAULT 'X'. -SELECTION-SCREEN END OF BLOCK c. - -INITIALIZATION. - a = 'Action'. - b = 'Version Controll Program'. - c = 'Parameters'. - -START-OF-SELECTION. - - svnpath_str = svnpath. - loclpath_str = loclpath. - zake_nuggetname = zakenugg. - comment_str = comment. - - " SELECT * INTO TABLE objects FROM tadir WHERE devclass = 'ZABAP2XLSX'. - " DELETE zake_objects WHERE object = 'DEVC'. - - TRY. - IF svn = 'X'. - class = cl_svn. - ELSE. - class = cl_tortoise_svn. - ENDIF. - - CREATE OBJECT zake - TYPE - (class) - EXPORTING - i_svnpath = svnpath_str - i_localpath = loclpath_str. - zake->set_testrun( testrun ). - zake->set_package( 'ZA2X' ). - - IF checkout = 'X'. - zake->checkout( ). - ELSEIF update = 'X'. - zake->update( ). - ELSEIF install = 'X'. - zake->install_slinkees_from_lm( testrun ). - " zake->install_objects( zake_objects ). - ELSEIF export = 'X'. - " Build Object list for Export - " Programs - object-object = 'PROG'. - object-obj_name = 'ZAKE_SVN_A2X'. - APPEND object TO objects. - zake->set_checkin_objects( objects ). - zake->download_slinkees_to_lm = abap_true. - zake->download_nugget_to_lm = space. - zake->download_zip_to_lm_flag = space. - zake->create_slinkees( zake_nuggetname ). - ELSEIF build = 'X'. - " Build a complete package for download - zake->set_checkin_objects( objects ). - " We don't want that for the complete Package Slinkees are created - " in the ZAKE folder - zake->download_slinkees_to_lm = space. - zake->download_nugget_to_lm = space. - zake->create_slinkees( zake_nuggetname ). - ELSEIF checkin = 'X'. - zake->set_package( 'ZA2X' ). - zake->set_checkin_objects( objects ). - zake->create_slinkees( zake_nuggetname ). - IF testrun IS INITIAL. - zake->checkin( comment_str ). - ENDIF. - ENDIF. - CATCH zcx_saplink INTO ex. - message = ex->msg. - WRITE: / 'An Error occured: ', message. - ENDTRY. - @@ -32751,11 +32835,13 @@ START-OF-SELECTION. - + + + - + @@ -32801,7 +32887,7 @@ INCLUDE zdemo_excel_outputopt_incl. PARAMETERS: md TYPE flag RADIOBUTTON GROUP act. -SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE a. +SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-00a. PARAMETERS: partnerc TYPE bu_type DEFAULT 2, " Organizations postlcod TYPE ad_pstcd1 DEFAULT '8334*', country TYPE land1 DEFAULT 'DE', @@ -32810,15 +32896,11 @@ SELECTION-SCREEN END OF BLOCK a. PARAMETERS: rel TYPE flag RADIOBUTTON GROUP act DEFAULT 'X'. -SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE b. +SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-00b. PARAMETERS: reltyp TYPE bu_reltyp DEFAULT 'BUR011', partner TYPE bu_partner DEFAULT '191'. SELECTION-SCREEN END OF BLOCK b. -INITIALIZATION. - a = 'Select by master data'. - b = 'Select by relationship'. - START-OF-SELECTION. IF md = abap_true. " Read all Companies by Master Data diff --git a/build/ABAP2XLSX_V_7_0.zip b/build/ABAP2XLSX_V_7_0.zip index 77a6ae8..b164ffe 100644 Binary files a/build/ABAP2XLSX_V_7_0.zip and b/build/ABAP2XLSX_V_7_0.zip differ diff --git a/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg b/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg index ca918ce..7674858 100644 --- a/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg +++ b/build/extra/NUGG_ABAP2XLSX - EXTRA.nugg @@ -1,5 +1,10 @@ + + + + + diff --git a/build/extra/NUGG_ABAP2XLSX - EXTRA.zip b/build/extra/NUGG_ABAP2XLSX - EXTRA.zip index aebba9b..c3af152 100644 Binary files a/build/extra/NUGG_ABAP2XLSX - EXTRA.zip and b/build/extra/NUGG_ABAP2XLSX - EXTRA.zip differ