*"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes *"* use this source file for any type declarations (class *"* definitions, interfaces or data types) you need for method *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class ABAP method CONSTRUCTOR. orientation = me->c_orientation_default. * default margins margin_bottom = '0.75'. margin_footer = '0.3'. margin_header = '0.3'. margin_left = '0.7'. margin_right = '0.7'. margin_top = '0.75'. * clear page settings CLEAR: black_and_white, cell_comments, copies, draft, errors, first_page_number, fit_to_page, fit_to_height, fit_to_width, horizontal_dpi, orientation, page_order, paper_height, paper_size, paper_width, scale, use_first_page_num, use_printer_defaults, vertical_dpi. endmethod. method GET_HEADER_FOOTER_STRING. * ---------------------------------------------------------------------- DATA: lc_marker_left(2) TYPE c VALUE '&L' , lc_marker_right(2) TYPE c VALUE '&R' , lc_marker_center(2) TYPE c VALUE '&C' , lv_value TYPE string . * ---------------------------------------------------------------------- IF ep_odd_header IS SUPPLIED. IF me->odd_header-left_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'LEFT' ). CONCATENATE lc_marker_left lv_value INTO ep_odd_header. ENDIF. IF me->odd_header-center_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'CENTER' ). CONCATENATE ep_odd_header lc_marker_center lv_value INTO ep_odd_header. ENDIF. IF me->odd_header-right_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_header ip_side = 'RIGHT' ). CONCATENATE ep_odd_header lc_marker_right lv_value INTO ep_odd_header. ENDIF. ENDIF. * ---------------------------------------------------------------------- IF ep_odd_footer IS SUPPLIED. IF me->odd_footer-left_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'LEFT' ). CONCATENATE lc_marker_left lv_value INTO ep_odd_footer. ENDIF. IF me->odd_footer-center_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'CENTER' ). CONCATENATE ep_odd_footer lc_marker_center lv_value INTO ep_odd_footer. ENDIF. IF me->odd_footer-right_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->odd_footer ip_side = 'RIGHT' ). CONCATENATE ep_odd_footer lc_marker_right lv_value INTO ep_odd_footer. ENDIF. ENDIF. * ---------------------------------------------------------------------- IF ep_even_header IS SUPPLIED. IF me->even_header-left_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'LEFT' ). CONCATENATE lc_marker_left lv_value INTO ep_even_header. ENDIF. IF me->even_header-center_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'CENTER' ). CONCATENATE ep_even_header lc_marker_center lv_value INTO ep_even_header. ENDIF. IF me->even_header-right_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_header ip_side = 'RIGHT' ). CONCATENATE ep_even_header lc_marker_right lv_value INTO ep_even_header. ENDIF. ENDIF. * ---------------------------------------------------------------------- IF ep_even_footer IS SUPPLIED. IF me->even_footer-left_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'LEFT' ). CONCATENATE lc_marker_left lv_value INTO ep_even_footer. ENDIF. IF me->even_footer-center_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'CENTER' ). CONCATENATE ep_even_footer lc_marker_center lv_value INTO ep_even_footer. ENDIF. IF me->even_footer-right_value IS NOT INITIAL. lv_value = me->process_header_footer( ip_header = me->even_footer ip_side = 'RIGHT' ). CONCATENATE ep_even_footer lc_marker_right lv_value INTO ep_even_footer. ENDIF. ENDIF. * ---------------------------------------------------------------------- endmethod. method PROCESS_HEADER_FOOTER. * ---------------------------------------------------------------------- * Only Basic font/text formatting possible: * Bold (yes / no), Font Type, Font Size DATA: lv_fname(12) TYPE c , lv_string TYPE string . FIELD-SYMBOLS: <lv_value> TYPE string , <ls_font> TYPE zexcel_s_style_font . * ---------------------------------------------------------------------- CONCATENATE ip_side '_VALUE' INTO lv_fname. ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <lv_value>. CONCATENATE ip_side '_FONT' INTO lv_fname. ASSIGN COMPONENT lv_fname OF STRUCTURE ip_header TO <ls_font>. IF <ls_font> IS ASSIGNED AND <lv_value> IS ASSIGNED. IF <ls_font>-name IS NOT INITIAL. CONCATENATE '&"' <ls_font>-name ',' INTO rv_processed_string. ELSE. rv_processed_string = '&"-,'. ENDIF. IF <ls_font>-bold = abap_true. CONCATENATE rv_processed_string 'Bold"' INTO rv_processed_string. ELSE. CONCATENATE rv_processed_string 'Standard"' INTO rv_processed_string. ENDIF. IF <ls_font>-size IS NOT INITIAL. lv_string = <ls_font>-size. CONCATENATE rv_processed_string '&' lv_string INTO rv_processed_string. ENDIF. CONCATENATE rv_processed_string <lv_value> INTO rv_processed_string. ENDIF. * ---------------------------------------------------------------------- endmethod. method SET_HEADER_FOOTER. * Only Basic font/text formatting possible: * Bold (yes / no), Font Type, Font Size * * usefull placeholders, which can be used in header/footer value strings * '&P' - page number * '&N' - total number of pages * '&D' - Date * '&T' - Time * '&F' - File Name * '&Z' - Path * '&A' - Sheet name * new line via class constant CL_ABAP_CHAR_UTILITIES=>newline * * Example Value String 'page &P of &N' * * DO NOT USE &L , &C or &R which automatically created as position markers me->odd_header = ip_odd_header. me->odd_footer = ip_odd_footer. me->even_header = ip_even_header. me->even_footer = ip_even_footer. IF me->even_header IS NOT INITIAL OR me->even_footer IS NOT INITIAL. me->diff_oddeven_headerfooter = abap_true. ENDIF. endmethod. method SET_PAGE_MARGINS. DATA: lv_coef TYPE f, lv_unit TYPE string. lv_unit = ip_unit. TRANSLATE lv_unit TO UPPER CASE. CASE lv_unit. WHEN 'IN'. lv_coef = 1. WHEN 'CM'. lv_coef = '0.393700787'. WHEN 'MM'. lv_coef = '0.0393700787'. ENDCASE. IF ip_bottom IS SUPPLIED. margin_bottom = lv_coef * ip_bottom. ENDIF. IF ip_footer IS SUPPLIED. margin_footer = lv_coef * ip_footer. ENDIF. IF ip_header IS SUPPLIED. margin_header = lv_coef * ip_header. ENDIF. IF ip_left IS SUPPLIED. margin_left = lv_coef * ip_left. ENDIF. IF ip_right IS SUPPLIED. margin_right = lv_coef * ip_right. ENDIF. IF ip_top IS SUPPLIED. margin_top = lv_coef * ip_top. ENDIF. endmethod.