abap2xlsx/src/zcl_excel_graph.clas.abap

411 lines
12 KiB
ABAP

CLASS zcl_excel_graph DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
TYPES:
*"* public components of class ZCL_EXCEL_GRAPH
*"* do not include other source files here!!!
BEGIN OF s_style,
c14style TYPE i,
cstyle TYPE i,
END OF s_style .
TYPES:
BEGIN OF s_series,
idx TYPE i,
order TYPE i,
invertifnegative TYPE string,
symbol TYPE string,
smooth TYPE string,
lbl TYPE string,
ref TYPE string,
sername TYPE string,
END OF s_series .
TYPES:
t_series TYPE STANDARD TABLE OF s_series .
TYPES:
BEGIN OF s_pagemargins,
b TYPE string,
l TYPE string,
r TYPE string,
t TYPE string,
header TYPE string,
footer TYPE string,
END OF s_pagemargins .
DATA ns_1904val TYPE string VALUE '0'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_langval TYPE string VALUE 'it-IT'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_roundedcornersval TYPE string VALUE '0'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA pagemargins TYPE s_pagemargins .
DATA ns_autotitledeletedval TYPE string VALUE '0'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_plotvisonlyval TYPE string VALUE '1'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_dispblanksasval TYPE string VALUE 'gap'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_showdlblsovermaxval TYPE string VALUE '0'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA title TYPE string . . . " .
DATA series TYPE t_series .
DATA ns_c14styleval TYPE string VALUE '102'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA print_label TYPE c VALUE 'X'. "#EC NOTEXT . . . . . . . . . . . . . . " .
DATA ns_styleval TYPE string VALUE '2'. "#EC NOTEXT . . . . . . . . . . . . . . " .
CONSTANTS:
BEGIN OF c_style_default,
c14style TYPE i VALUE 102,
cstyle TYPE i VALUE 2,
END OF c_style_default .
CONSTANTS:
BEGIN OF c_style_1,
c14style TYPE i VALUE 101,
cstyle TYPE i VALUE 1,
END OF c_style_1 .
CONSTANTS:
BEGIN OF c_style_3,
c14style TYPE i VALUE 103,
cstyle TYPE i VALUE 3,
END OF c_style_3 .
CONSTANTS:
BEGIN OF c_style_4,
c14style TYPE i VALUE 104,
cstyle TYPE i VALUE 4,
END OF c_style_4 .
CONSTANTS:
BEGIN OF c_style_5,
c14style TYPE i VALUE 105,
cstyle TYPE i VALUE 5,
END OF c_style_5 .
CONSTANTS:
BEGIN OF c_style_6,
c14style TYPE i VALUE 106,
cstyle TYPE i VALUE 6,
END OF c_style_6 .
CONSTANTS:
BEGIN OF c_style_7,
c14style TYPE i VALUE 107,
cstyle TYPE i VALUE 7,
END OF c_style_7 .
CONSTANTS:
BEGIN OF c_style_8,
c14style TYPE i VALUE 108,
cstyle TYPE i VALUE 8,
END OF c_style_8 .
CONSTANTS:
BEGIN OF c_style_9,
c14style TYPE i VALUE 109,
cstyle TYPE i VALUE 9,
END OF c_style_9 .
CONSTANTS:
BEGIN OF c_style_10,
c14style TYPE i VALUE 110,
cstyle TYPE i VALUE 10,
END OF c_style_10 .
CONSTANTS:
BEGIN OF c_style_11,
c14style TYPE i VALUE 111,
cstyle TYPE i VALUE 11,
END OF c_style_11 .
CONSTANTS:
BEGIN OF c_style_12,
c14style TYPE i VALUE 112,
cstyle TYPE i VALUE 12,
END OF c_style_12 .
CONSTANTS:
BEGIN OF c_style_13,
c14style TYPE i VALUE 113,
cstyle TYPE i VALUE 13,
END OF c_style_13 .
CONSTANTS:
BEGIN OF c_style_14,
c14style TYPE i VALUE 114,
cstyle TYPE i VALUE 14,
END OF c_style_14 .
CONSTANTS:
BEGIN OF c_style_15,
c14style TYPE i VALUE 115,
cstyle TYPE i VALUE 15,
END OF c_style_15 .
CONSTANTS:
BEGIN OF c_style_16,
c14style TYPE i VALUE 116,
cstyle TYPE i VALUE 16,
END OF c_style_16 .
CONSTANTS:
BEGIN OF c_style_17,
c14style TYPE i VALUE 117,
cstyle TYPE i VALUE 17,
END OF c_style_17 .
CONSTANTS:
BEGIN OF c_style_18,
c14style TYPE i VALUE 118,
cstyle TYPE i VALUE 18,
END OF c_style_18 .
CONSTANTS:
BEGIN OF c_style_19,
c14style TYPE i VALUE 119,
cstyle TYPE i VALUE 19,
END OF c_style_19 .
CONSTANTS:
BEGIN OF c_style_20,
c14style TYPE i VALUE 120,
cstyle TYPE i VALUE 20,
END OF c_style_20 .
CONSTANTS:
BEGIN OF c_style_21,
c14style TYPE i VALUE 121,
cstyle TYPE i VALUE 21,
END OF c_style_21 .
CONSTANTS:
BEGIN OF c_style_22,
c14style TYPE i VALUE 122,
cstyle TYPE i VALUE 22,
END OF c_style_22 .
CONSTANTS:
BEGIN OF c_style_23,
c14style TYPE i VALUE 123,
cstyle TYPE i VALUE 23,
END OF c_style_23 .
CONSTANTS:
BEGIN OF c_style_24,
c14style TYPE i VALUE 124,
cstyle TYPE i VALUE 24,
END OF c_style_24 .
CONSTANTS:
BEGIN OF c_style_25,
c14style TYPE i VALUE 125,
cstyle TYPE i VALUE 25,
END OF c_style_25 .
CONSTANTS:
BEGIN OF c_style_26,
c14style TYPE i VALUE 126,
cstyle TYPE i VALUE 26,
END OF c_style_26 .
CONSTANTS:
BEGIN OF c_style_27,
c14style TYPE i VALUE 127,
cstyle TYPE i VALUE 27,
END OF c_style_27 .
CONSTANTS:
BEGIN OF c_style_28,
c14style TYPE i VALUE 128,
cstyle TYPE i VALUE 28,
END OF c_style_28 .
CONSTANTS:
BEGIN OF c_style_29,
c14style TYPE i VALUE 129,
cstyle TYPE i VALUE 29,
END OF c_style_29 .
CONSTANTS:
BEGIN OF c_style_30,
c14style TYPE i VALUE 130,
cstyle TYPE i VALUE 30,
END OF c_style_30 .
CONSTANTS:
BEGIN OF c_style_31,
c14style TYPE i VALUE 131,
cstyle TYPE i VALUE 31,
END OF c_style_31 .
CONSTANTS:
BEGIN OF c_style_32,
c14style TYPE i VALUE 132,
cstyle TYPE i VALUE 32,
END OF c_style_32 .
CONSTANTS:
BEGIN OF c_style_33,
c14style TYPE i VALUE 133,
cstyle TYPE i VALUE 33,
END OF c_style_33 .
CONSTANTS:
BEGIN OF c_style_34,
c14style TYPE i VALUE 134,
cstyle TYPE i VALUE 34,
END OF c_style_34 .
CONSTANTS:
BEGIN OF c_style_35,
c14style TYPE i VALUE 135,
cstyle TYPE i VALUE 35,
END OF c_style_35 .
CONSTANTS:
BEGIN OF c_style_36,
c14style TYPE i VALUE 136,
cstyle TYPE i VALUE 36,
END OF c_style_36 .
CONSTANTS:
BEGIN OF c_style_37,
c14style TYPE i VALUE 137,
cstyle TYPE i VALUE 37,
END OF c_style_37 .
CONSTANTS:
BEGIN OF c_style_38,
c14style TYPE i VALUE 138,
cstyle TYPE i VALUE 38,
END OF c_style_38 .
CONSTANTS:
BEGIN OF c_style_39,
c14style TYPE i VALUE 139,
cstyle TYPE i VALUE 39,
END OF c_style_39 .
CONSTANTS:
BEGIN OF c_style_40,
c14style TYPE i VALUE 140,
cstyle TYPE i VALUE 40,
END OF c_style_40 .
CONSTANTS:
BEGIN OF c_style_41,
c14style TYPE i VALUE 141,
cstyle TYPE i VALUE 41,
END OF c_style_41 .
CONSTANTS:
BEGIN OF c_style_42,
c14style TYPE i VALUE 142,
cstyle TYPE i VALUE 42,
END OF c_style_42 .
CONSTANTS:
BEGIN OF c_style_43,
c14style TYPE i VALUE 143,
cstyle TYPE i VALUE 43,
END OF c_style_43 .
CONSTANTS:
BEGIN OF c_style_44,
c14style TYPE i VALUE 144,
cstyle TYPE i VALUE 44,
END OF c_style_44 .
CONSTANTS:
BEGIN OF c_style_45,
c14style TYPE i VALUE 145,
cstyle TYPE i VALUE 45,
END OF c_style_45 .
CONSTANTS:
BEGIN OF c_style_46,
c14style TYPE i VALUE 146,
cstyle TYPE i VALUE 46,
END OF c_style_46 .
CONSTANTS:
BEGIN OF c_style_47,
c14style TYPE i VALUE 147,
cstyle TYPE i VALUE 47,
END OF c_style_47 .
CONSTANTS:
BEGIN OF c_style_48,
c14style TYPE i VALUE 148,
cstyle TYPE i VALUE 48,
END OF c_style_48 .
CONSTANTS c_show_true TYPE c VALUE '1'. "#EC NOTEXT
CONSTANTS c_show_false TYPE c VALUE '0'. "#EC NOTEXT
CONSTANTS c_print_lbl_true TYPE c VALUE '1'. "#EC NOTEXT
CONSTANTS c_print_lbl_false TYPE c VALUE '0'. "#EC NOTEXT
METHODS constructor .
METHODS create_serie
IMPORTING
!ip_idx TYPE i OPTIONAL
!ip_order TYPE i
!ip_invertifnegative TYPE string OPTIONAL
!ip_symbol TYPE string OPTIONAL
!ip_smooth TYPE c OPTIONAL
!ip_lbl_from_col TYPE zexcel_cell_column_alpha OPTIONAL
!ip_lbl_from_row TYPE zexcel_cell_row OPTIONAL
!ip_lbl_to_col TYPE zexcel_cell_column_alpha OPTIONAL
!ip_lbl_to_row TYPE zexcel_cell_row OPTIONAL
!ip_lbl TYPE string OPTIONAL
!ip_ref_from_col TYPE zexcel_cell_column_alpha OPTIONAL
!ip_ref_from_row TYPE zexcel_cell_row OPTIONAL
!ip_ref_to_col TYPE zexcel_cell_column_alpha OPTIONAL
!ip_ref_to_row TYPE zexcel_cell_row OPTIONAL
!ip_ref TYPE string OPTIONAL
!ip_sername TYPE string
!ip_sheet TYPE zexcel_sheet_title OPTIONAL .
METHODS set_style
IMPORTING
!ip_style TYPE s_style .
METHODS set_print_lbl
IMPORTING
!ip_value TYPE c .
METHODS set_title
IMPORTING
ip_value TYPE string .
PROTECTED SECTION.
*"* protected components of class ZCL_EXCEL_GRAPH
*"* do not include other source files here!!!
PRIVATE SECTION.
*"* private components of class ZCL_EXCEL_GRAPH
*"* do not include other source files here!!!
ENDCLASS.
CLASS zcl_excel_graph IMPLEMENTATION.
METHOD constructor.
"Load default values
me->pagemargins-b = '0.75'.
me->pagemargins-l = '0.7'.
me->pagemargins-r = '0.7'.
me->pagemargins-t = '0.75'.
me->pagemargins-header = '0.3'.
me->pagemargins-footer = '0.3'.
ENDMETHOD.
METHOD create_serie.
DATA ls_serie TYPE s_series.
DATA: lv_start_row_c TYPE c LENGTH 7,
lv_stop_row_c TYPE c LENGTH 7.
IF ip_lbl IS NOT SUPPLIED.
lv_stop_row_c = ip_lbl_to_row.
SHIFT lv_stop_row_c RIGHT DELETING TRAILING space.
SHIFT lv_stop_row_c LEFT DELETING LEADING space.
lv_start_row_c = ip_lbl_from_row.
SHIFT lv_start_row_c RIGHT DELETING TRAILING space.
SHIFT lv_start_row_c LEFT DELETING LEADING space.
ls_serie-lbl = ip_sheet.
ls_serie-lbl = zcl_excel_common=>escape_string( ip_value = ls_serie-lbl ).
CONCATENATE ls_serie-lbl '!$' ip_lbl_from_col '$' lv_start_row_c ':$' ip_lbl_to_col '$' lv_stop_row_c INTO ls_serie-lbl.
CLEAR: lv_start_row_c, lv_stop_row_c.
ELSE.
ls_serie-lbl = ip_lbl.
ENDIF.
IF ip_ref IS NOT SUPPLIED.
lv_stop_row_c = ip_ref_to_row.
SHIFT lv_stop_row_c RIGHT DELETING TRAILING space.
SHIFT lv_stop_row_c LEFT DELETING LEADING space.
lv_start_row_c = ip_ref_from_row.
SHIFT lv_start_row_c RIGHT DELETING TRAILING space.
SHIFT lv_start_row_c LEFT DELETING LEADING space.
ls_serie-ref = ip_sheet.
ls_serie-ref = zcl_excel_common=>escape_string( ip_value = ls_serie-ref ).
CONCATENATE ls_serie-ref '!$' ip_ref_from_col '$' lv_start_row_c ':$' ip_ref_to_col '$' lv_stop_row_c INTO ls_serie-ref.
CLEAR: lv_start_row_c, lv_stop_row_c.
ELSE.
ls_serie-ref = ip_ref.
ENDIF.
ls_serie-idx = ip_idx.
ls_serie-order = ip_order.
ls_serie-invertifnegative = ip_invertifnegative.
ls_serie-symbol = ip_symbol.
ls_serie-smooth = ip_smooth.
ls_serie-sername = ip_sername.
APPEND ls_serie TO me->series.
SORT me->series BY order ASCENDING.
ENDMETHOD.
METHOD set_print_lbl.
me->print_label = ip_value.
ENDMETHOD.
METHOD set_style.
me->ns_c14styleval = ip_style-c14style.
CONDENSE me->ns_c14styleval NO-GAPS.
me->ns_styleval = ip_style-cstyle.
CONDENSE me->ns_styleval NO-GAPS.
ENDMETHOD.
METHOD set_title.
me->title = ip_value.
ENDMETHOD.
ENDCLASS.