diff --git a/ZA2X/CLAS/ZCL_EXCEL_GRAPH_BARS.slnk b/ZA2X/CLAS/ZCL_EXCEL_GRAPH_BARS.slnk index 51d1fe2..ba3f71d 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_GRAPH_BARS.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_GRAPH_BARS.slnk @@ -1,6 +1,6 @@ - - + - *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type @@ -30,25 +30,27 @@ *"* components in the private section *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - + - - - + + + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index 410b5a4..ac9562c 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -1153,6 +1153,7 @@ ENDMETHOD. lc_xml_node_numref TYPE string VALUE 'c:numRef', lc_xml_node_strref TYPE string VALUE 'c:strRef', lc_xml_node_f TYPE string VALUE 'c:f', "this is the range + lc_xml_node_overlap TYPE string VALUE 'c:overlap', "note: numcache avoided lc_xml_node_dlbls TYPE string VALUE 'c:dLbls', lc_xml_node_showlegendkey TYPE string VALUE 'c:showLegendKey', @@ -1415,6 +1416,12 @@ ENDMETHOD. ENDIF. ENDLOOP. "endseries + IF lo_chartb->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. + lo_element4 = lo_document->create_simple_element( name = lc_xml_node_overlap + parent = lo_element3 ). + lo_element4->set_attribute_ns( name = 'val' + value = '100' ). + ENDIF. lo_element4 = lo_document->create_simple_element( name = lc_xml_node_dlbls parent = lo_element3 ). @@ -2724,12 +2731,15 @@ ENDMETHOD. SHIFT lv_uniquecount_str RIGHT DELETING TRAILING space. SHIFT lv_uniquecount_str LEFT DELETING LEADING space. - LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>. - lv_sytabix = sy-tabix - 1. + clear lv_count. + LOOP AT lt_cell_data ASSIGNING <fs_sheet_content> where data_type = 's'. +* lv_sytabix = sy-tabix - 1. + lv_sytabix = lv_count. MOVE lv_sytabix TO ls_shared_string-string_no. MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value. MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type. APPEND ls_shared_string TO shared_strings. + add 1 to lv_count. ENDLOOP. diff --git a/ZA2X/PROG/ZDEMO_EXCEL39.slnk b/ZA2X/PROG/ZDEMO_EXCEL39.slnk index 1aaeb05..f9e42e3 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL39.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL39.slnk @@ -19,21 +19,22 @@ 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: 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: ls_upper TYPE zexcel_drawing_location, + ls_lower TYPE zexcel_drawing_location. -DATA lo_bar1 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 lo_line TYPE REF TO zcl_excel_graph_line. +DATA: lo_bar1 TYPE REF TO zcl_excel_graph_bars, + lo_bar1_stacked TYPE REF TO zcl_excel_graph_bars, + lo_bar2 TYPE REF TO zcl_excel_graph_bars, + lo_pie TYPE REF TO zcl_excel_graph_pie, + lo_line TYPE REF TO zcl_excel_graph_line. CONSTANTS: gc_save_file_name TYPE string VALUE '39_Charts.xlsx'. INCLUDE zdemo_excel_outputopt_incl. @@ -81,8 +82,8 @@ START-OF-SELECTION. CALL METHOD lo_bar1->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax +* ip_axid = + ip_type = zcl_excel_graph_bars=>c_catax * ip_orientation = * ip_delete = * ip_axpos = @@ -93,7 +94,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -102,8 +103,8 @@ START-OF-SELECTION. CALL METHOD lo_bar1->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax +* ip_axid = + ip_type = zcl_excel_graph_bars=>c_valax * ip_orientation = * ip_delete = * ip_axpos = @@ -114,7 +115,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -127,6 +128,43 @@ START-OF-SELECTION. " Set label to none lo_bar1->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). +* Same barchart - but this time stacked + CREATE OBJECT lo_bar1_stacked. + + CALL METHOD lo_bar1_stacked->create_serie + EXPORTING + ip_order = 0 + ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no + ip_lbl = 'Values!$D$1:$D$3' + ip_ref = 'Values!$C$1:$C$3' + ip_sername = 'My serie 1'. + + CALL METHOD lo_bar1_stacked->create_serie + EXPORTING + ip_order = 1 + ip_invertifnegative = zcl_excel_graph_bars=>c_invertifnegative_no + ip_lbl = 'Values!$B$1:$B$3' + ip_ref = 'Values!$A$1:$A$3' + ip_sername = 'My serie 2'. + + CALL METHOD lo_bar1_stacked->create_ax + EXPORTING + ip_type = zcl_excel_graph_bars=>c_catax . + + CALL METHOD lo_bar1_stacked->create_ax + EXPORTING + ip_type = zcl_excel_graph_bars=>c_valax. + + " Set style + lo_bar1_stacked->set_style( zcl_excel_graph=>c_style_default ). + + " Set label to none + lo_bar1_stacked->set_print_lbl( zcl_excel_graph_bars=>c_show_false ). + + " Make it stacked + lo_bar1_stacked->ns_groupingval = zcl_excel_graph_bars=>c_groupingval_stacked. + + " Create a bar chart, series and axes CREATE OBJECT lo_bar2. @@ -140,8 +178,8 @@ START-OF-SELECTION. CALL METHOD lo_bar2->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_catax +* ip_axid = + ip_type = zcl_excel_graph_bars=>c_catax * ip_orientation = * ip_delete = * ip_axpos = @@ -152,7 +190,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -161,8 +199,8 @@ START-OF-SELECTION. CALL METHOD lo_bar2->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_bars=>c_valax +* ip_axid = + ip_type = zcl_excel_graph_bars=>c_valax * ip_orientation = * ip_delete = * ip_axpos = @@ -173,7 +211,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -220,8 +258,8 @@ START-OF-SELECTION. CALL METHOD lo_line->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_catax +* ip_axid = + ip_type = zcl_excel_graph_line=>c_catax * ip_orientation = * ip_delete = * ip_axpos = @@ -230,7 +268,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -239,8 +277,8 @@ START-OF-SELECTION. CALL METHOD lo_line->create_ax EXPORTING -* ip_axid = - ip_type = zcl_excel_graph_line=>c_valax +* ip_axid = + ip_type = zcl_excel_graph_line=>c_valax * ip_orientation = * ip_delete = * ip_axpos = @@ -251,7 +289,7 @@ START-OF-SELECTION. * ip_ticklblpos = * ip_crossax = * ip_crosses = -* ip_auto = +* ip_auto = * ip_lblalgn = * ip_lbloffset = * ip_nomultilvllbl = @@ -320,6 +358,28 @@ START-OF-SELECTION. lo_worksheet->add_drawing( lo_drawing ). + lo_drawing = lo_worksheet->excel->add_new_drawing( + ip_type = zcl_excel_drawing=>type_chart + ip_title = 'Stacked CHART BARS WITH 2 SER.' ). + lo_drawing->graph = lo_bar1_stacked. + lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars. + + "Set chart position (anchor 2 cells) + ls_upper-row = 0. + ls_upper-col = 1. + 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_type = zcl_excel_drawing=>c_media_type_xml ). + + lo_worksheet->add_drawing( lo_drawing ). + " BarChart2 sheet lo_worksheet = lo_excel->add_new_worksheet( ).