*&---------------------------------------------------------------------*
*& Report ZDEMO_EXCEL16
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zdemo_excel39.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_drawing TYPE REF TO zcl_excel_drawing.
DATA lv_value TYPE i.
DATA: ls_io TYPE skwf_io.
DATA: ls_upper TYPE zexcel_drawing_location,
ls_lower TYPE zexcel_drawing_location.
DATA lo_bar TYPE REF TO zcl_excel_graph_bars.
DATA lo_bar2 TYPE REF TO zcl_excel_graph_bars.
DATA lo_pie TYPE REF TO zcl_excel_graph_pie.
DATA lv_media TYPE xstring.
CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'.
INCLUDE zdemo_excel_outputopt_incl.
START-OF-SELECTION.
" Creates active sheet
CREATE OBJECT lo_excel.
" Get active sheet
lo_worksheet = lo_excel->get_active_worksheet( ).
lo_worksheet->set_title( 'Sheet1' ).
" Set values for chart
lv_value = 1.
lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = lv_value ).
lv_value = 2.
lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_value ).
lv_value = 3.
lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = lv_value ).
" Set labels for chart
lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'One' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Two' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Three' ).
" Set values for chart
lv_value = 3.
lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = lv_value ).
lv_value = 2.
lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = lv_value ).
lv_value = 1.
lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = lv_value ).
" Set labels for chart
lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = 'One' ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = 'Two' ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Three' ).
" Create a pie chart and series
CREATE OBJECT lo_pie.
CALL METHOD lo_pie->create_serie
EXPORTING
ip_idx = 0
ip_order = 0
ip_lbl = 'Sheet1!$B$1:$B$3'
ip_REF = 'Sheet1!$A$1:$A$3'
ip_sername = 'My serie 1'
.
CALL METHOD lo_pie->create_serie
EXPORTING
ip_idx = 1
ip_order = 1
ip_lbl = 'Sheet1!$D$1:$D$3'
ip_REF = 'Sheet1!$C$1:$C$3'
ip_sername = 'My serie 2'
.
" Create a bar chart, series and axes
CREATE OBJECT lo_bar.
CALL METHOD lo_bar->create_serie
EXPORTING
ip_idx = 0
ip_order = 0
ip_invertIfNegative = '0'
ip_lbl = 'Sheet1!$D$1:$D$3'
ip_REF = 'Sheet1!$C$1:$C$3'
ip_sername = 'My serie 1'
.
CALL METHOD lo_bar->create_serie
EXPORTING
ip_idx = 1
ip_order = 1
ip_invertIfNegative = '0'
ip_lbl = 'Sheet1!$B$1:$B$3'
ip_REF = 'Sheet1!$A$1:$A$3'
ip_sername = 'My serie 2'
.
CALL METHOD lo_bar->create_ax
EXPORTING
* ip_axid =
ip_type = zcl_excel_graph_bars=>c_catax
* ip_orientation =
* ip_delete =
* ip_axpos =
* ip_formatcode =
* ip_sourcelinked =
* ip_majortickmark =
* ip_minortickmark =
* ip_ticklblpos =
* ip_crossax =
* ip_crosses =
* ip_auto =
* ip_lblalgn =
* ip_lbloffset =
* ip_nomultilvllbl =
* ip_crossbetween =
.
CALL METHOD lo_bar->create_ax
EXPORTING
* ip_axid =
ip_type = zcl_excel_graph_bars=>c_valax
* ip_orientation =
* ip_delete =
* ip_axpos =
* ip_formatcode =
* ip_sourcelinked =
* ip_majortickmark =
* ip_minortickmark =
* ip_ticklblpos =
* ip_crossax =
* ip_crosses =
* ip_auto =
* ip_lblalgn =
* ip_lbloffset =
* ip_nomultilvllbl =
* ip_crossbetween =
.
" Create a bar chart, series and axes
CREATE OBJECT lo_bar2.
CALL METHOD lo_bar2->create_serie
EXPORTING
ip_idx = 0
ip_order = 0
ip_invertIfNegative = '0'
ip_lbl = 'Sheet1!$D$1:$D$3'
ip_REF = 'Sheet1!$C$1:$C$3'
ip_sername = 'My serie 1'
.
CALL METHOD lo_bar2->create_ax
EXPORTING
* ip_axid =
ip_type = zcl_excel_graph_bars=>c_catax
* ip_orientation =
* ip_delete =
* ip_axpos =
* ip_formatcode =
* ip_sourcelinked =
* ip_majortickmark =
* ip_minortickmark =
* ip_ticklblpos =
* ip_crossax =
* ip_crosses =
* ip_auto =
* ip_lblalgn =
* ip_lbloffset =
* ip_nomultilvllbl =
* ip_crossbetween =
.
CALL METHOD lo_bar2->create_ax
EXPORTING
* ip_axid =
ip_type = zcl_excel_graph_bars=>c_valax
* ip_orientation =
* ip_delete =
* ip_axpos =
* ip_formatcode =
* ip_sourcelinked =
* ip_majortickmark =
* ip_minortickmark =
* ip_ticklblpos =
* ip_crossax =
* ip_crosses =
* ip_auto =
* ip_lblalgn =
* ip_lbloffset =
* ip_nomultilvllbl =
* ip_crossbetween =
.
" Create global drawing, set type as pie chart, assign chart, set position and media type
lo_drawing = lo_worksheet->excel->add_new_drawing(
ip_type = zcl_excel_drawing=>type_chart
ip_title = 'CHART PIE' ).
lo_drawing->graph = lo_pie.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie.
"Set chart position (anchor 2 cells)
ls_lower-row = 22.
ls_lower-col = 10.
lo_drawing->set_position2(
EXPORTING
ip_from = ls_upper
ip_to = ls_lower ).
lo_drawing->set_media(
EXPORTING
ip_media = lv_media "used for template (binary content)
ip_media_type = 'xml'
ip_width = 0 "used only for image types, not for charts
ip_height = 0 ). "used only for image types, not for charts
lo_worksheet->add_drawing( lo_drawing ).
" Create global drawing, set type as pie chart, assign chart, set position and media type
lo_drawing = lo_worksheet->excel->add_new_drawing(
ip_type = zcl_excel_drawing=>type_chart
ip_title = 'CHART BARS' ).
lo_drawing->graph = lo_bar.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars.
"Set chart position (anchor 2 cells)
ls_upper-row = 0.
ls_upper-col = 11.
ls_lower-row = 22.
ls_lower-col = 21.
lo_drawing->set_position2(
EXPORTING
ip_from = ls_upper
ip_to = ls_lower ).
lo_drawing->set_media(
EXPORTING
ip_media = lv_media "used for template (binary content)
ip_media_type = 'xml'
ip_width = 0 "used only for image types, not for charts
ip_height = 0 ). "used only for image types, not for charts
lo_worksheet->add_drawing( lo_drawing ).
" Create global drawing, set type as pie chart, assign chart, set position and media type
lo_drawing = lo_worksheet->excel->add_new_drawing(
ip_type = zcl_excel_drawing=>type_chart
ip_title = 'CHART BARS WITH 1 SERIE' ).
lo_drawing->graph = lo_bar2.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars.
"Set chart position (anchor 2 cells)
ls_upper-row = 23.
ls_upper-col = 0.
ls_lower-row = 31.
ls_lower-col = 10.
lo_drawing->set_position2(
EXPORTING
ip_from = ls_upper
ip_to = ls_lower ).
lo_drawing->set_media(
EXPORTING
ip_media = lv_media "used for template (binary content)
ip_media_type = 'xml'
ip_width = 0 "used only for image types, not for charts
ip_height = 0 ). "used only for image types, not for charts
lo_worksheet->add_drawing( lo_drawing ).
*** Create output
lcl_output=>output( lo_excel ).