abap2xlsx/src/zcl_excel_style_cond.clas.abap

269 lines
11 KiB
ABAP

class ZCL_EXCEL_STYLE_COND definition
public
final
create public .
public section.
class ZCL_EXCEL_STYLE_CONDITIONAL definition load .
*"* public components of class ZCL_EXCEL_STYLE_COND
*"* do not include other source files here!!!
constants C_CFVO_TYPE_FORMULA type ZEXCEL_CONDITIONAL_TYPE value 'formula'. "#EC NOTEXT
constants C_CFVO_TYPE_MAX type ZEXCEL_CONDITIONAL_TYPE value 'max'. "#EC NOTEXT
constants C_CFVO_TYPE_MIN type ZEXCEL_CONDITIONAL_TYPE value 'min'. "#EC NOTEXT
constants C_CFVO_TYPE_NUMBER type ZEXCEL_CONDITIONAL_TYPE value 'num'. "#EC NOTEXT
constants C_CFVO_TYPE_PERCENT type ZEXCEL_CONDITIONAL_TYPE value 'percent'. "#EC NOTEXT
constants C_CFVO_TYPE_PERCENTILE type ZEXCEL_CONDITIONAL_TYPE value 'percentile'. "#EC NOTEXT
constants C_ICONSET_3ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '3Arrows'. "#EC NOTEXT
constants C_ICONSET_3ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '3ArrowsGray'. "#EC NOTEXT
constants C_ICONSET_3FLAGS type ZEXCEL_CONDITION_RULE_ICONSET value '3Flags'. "#EC NOTEXT
constants C_ICONSET_3SIGNS type ZEXCEL_CONDITION_RULE_ICONSET value '3Signs'. "#EC NOTEXT
constants C_ICONSET_3SYMBOLS type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols'. "#EC NOTEXT
constants C_ICONSET_3SYMBOLS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols2'. "#EC NOTEXT
constants C_ICONSET_3TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value ''. "#EC NOTEXT
constants C_ICONSET_3TRAFFICLIGHTS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3TrafficLights2'. "#EC NOTEXT
constants C_ICONSET_4ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '4Arrows'. "#EC NOTEXT
constants C_ICONSET_4ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '4ArrowsGray'. "#EC NOTEXT
constants C_ICONSET_4RATING type ZEXCEL_CONDITION_RULE_ICONSET value '4Rating'. "#EC NOTEXT
constants C_ICONSET_4REDTOBLACK type ZEXCEL_CONDITION_RULE_ICONSET value '4RedToBlack'. "#EC NOTEXT
constants C_ICONSET_4TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value '4TrafficLights'. "#EC NOTEXT
constants C_ICONSET_5ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '5Arrows'. "#EC NOTEXT
constants C_ICONSET_5ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '5ArrowsGray'. "#EC NOTEXT
constants C_ICONSET_5QUARTERS type ZEXCEL_CONDITION_RULE_ICONSET value '5Quarters'. "#EC NOTEXT
constants C_ICONSET_5RATING type ZEXCEL_CONDITION_RULE_ICONSET value '5Rating'. "#EC NOTEXT
constants C_OPERATOR_BEGINSWITH type ZEXCEL_CONDITION_OPERATOR value 'beginsWith'. "#EC NOTEXT
constants C_OPERATOR_BETWEEN type ZEXCEL_CONDITION_OPERATOR value 'between'. "#EC NOTEXT
constants C_OPERATOR_CONTAINSTEXT type ZEXCEL_CONDITION_OPERATOR value 'containsText'. "#EC NOTEXT
constants C_OPERATOR_ENDSWITH type ZEXCEL_CONDITION_OPERATOR value 'endsWith'. "#EC NOTEXT
constants C_OPERATOR_EQUAL type ZEXCEL_CONDITION_OPERATOR value 'equal'. "#EC NOTEXT
constants C_OPERATOR_GREATERTHAN type ZEXCEL_CONDITION_OPERATOR value 'greaterThan'. "#EC NOTEXT
constants C_OPERATOR_GREATERTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'greaterThanOrEqual'. "#EC NOTEXT
constants C_OPERATOR_LESSTHAN type ZEXCEL_CONDITION_OPERATOR value 'lessThan'. "#EC NOTEXT
constants C_OPERATOR_LESSTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'lessThanOrEqual'. "#EC NOTEXT
constants C_OPERATOR_NONE type ZEXCEL_CONDITION_OPERATOR value ''. "#EC NOTEXT
constants C_OPERATOR_NOTCONTAINS type ZEXCEL_CONDITION_OPERATOR value 'notContains'. "#EC NOTEXT
constants C_OPERATOR_NOTEQUAL type ZEXCEL_CONDITION_OPERATOR value 'notEqual'. "#EC NOTEXT
constants C_RULE_CELLIS type ZEXCEL_CONDITION_RULE value 'cellIs'. "#EC NOTEXT
constants C_RULE_CONTAINSTEXT type ZEXCEL_CONDITION_RULE value 'containsText'. "#EC NOTEXT
constants C_RULE_DATABAR type ZEXCEL_CONDITION_RULE value 'dataBar'. "#EC NOTEXT
constants C_RULE_EXPRESSION type ZEXCEL_CONDITION_RULE value 'expression'. "#EC NOTEXT
constants C_RULE_ICONSET type ZEXCEL_CONDITION_RULE value 'iconSet'. "#EC NOTEXT
constants C_RULE_COLORSCALE type ZEXCEL_CONDITION_RULE value 'colorScale'. "#EC NOTEXT
constants C_RULE_NONE type ZEXCEL_CONDITION_RULE value 'none'. "#EC NOTEXT
constants C_RULE_TOP10 type ZEXCEL_CONDITION_RULE value 'top10'. "#EC NOTEXT
constants C_RULE_ABOVE_AVERAGE type ZEXCEL_CONDITION_RULE value 'aboveAverage'. "#EC NOTEXT
constants C_SHOWVALUE_FALSE type ZEXCEL_CONDITIONAL_SHOW_VALUE value 0. "#EC NOTEXT
constants C_SHOWVALUE_TRUE type ZEXCEL_CONDITIONAL_SHOW_VALUE value 1. "#EC NOTEXT
data MODE_CELLIS type ZEXCEL_CONDITIONAL_CELLIS .
data MODE_COLORSCALE type ZEXCEL_CONDITIONAL_COLORSCALE .
data MODE_DATABAR type ZEXCEL_CONDITIONAL_DATABAR .
data MODE_EXPRESSION type ZEXCEL_CONDITIONAL_EXPRESSION .
data MODE_ICONSET type ZEXCEL_CONDITIONAL_ICONSET .
data MODE_TOP10 type ZEXCEL_CONDITIONAL_TOP10 .
data MODE_ABOVE_AVERAGE type ZEXCEL_CONDITIONAL_ABOVE_AVG .
data PRIORITY type ZEXCEL_STYLE_PRIORITY value 1. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . " .
data RULE type ZEXCEL_CONDITION_RULE .
METHODS constructor
IMPORTING
!ip_guid TYPE zexcel_cell_style OPTIONAL
!ip_dimension_range TYPE string.
methods GET_DIMENSION_RANGE
returning
value(EP_DIMENSION_RANGE) type STRING .
methods SET_RANGE
importing
!IP_START_ROW type ZEXCEL_CELL_ROW
!IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
!IP_STOP_ROW type ZEXCEL_CELL_ROW
!IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
raising
ZCX_EXCEL .
methods ADD_RANGE
importing
!IP_START_ROW type ZEXCEL_CELL_ROW
!IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
!IP_STOP_ROW type ZEXCEL_CELL_ROW
!IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
raising
ZCX_EXCEL .
class-methods FACTORY_COND_STYLE_ICONSET
importing
!IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET
!IV_ICON_TYPE type ZEXCEL_CONDITION_RULE_ICONSET default C_ICONSET_3TRAFFICLIGHTS2
!IV_CFVO1_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
!IV_CFVO1_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
!IV_CFVO2_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
!IV_CFVO2_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
!IV_CFVO3_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
!IV_CFVO3_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
!IV_CFVO4_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
!IV_CFVO4_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
!IV_CFVO5_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
!IV_CFVO5_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
!IV_SHOWVALUE type ZEXCEL_CONDITIONAL_SHOW_VALUE default ZCL_EXCEL_STYLE_COND=>C_SHOWVALUE_TRUE
returning
value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND .
methods GET_GUID
returning
value(EP_GUID) type ZEXCEL_CELL_STYLE .
*"* protected components of class ZABAP_EXCEL_STYLE_FONT
*"* do not include other source files here!!!
*"* protected components of class ZABAP_EXCEL_STYLE_FONT
*"* do not include other source files here!!!
protected section.
private section.
data MV_RULE_RANGE type STRING .
data GUID type ZEXCEL_CELL_STYLE .
ENDCLASS.
CLASS ZCL_EXCEL_STYLE_COND IMPLEMENTATION.
METHOD ADD_RANGE.
DATA: lv_column TYPE zexcel_cell_column,
lv_row_alpha TYPE string,
lv_col_alpha TYPE string,
lv_coords1 TYPE string,
lv_coords2 TYPE string.
lv_column = zcl_excel_common=>convert_column2int( ip_start_column ).
* me->mv_cell_data-cell_row = 1.
* me->mv_cell_data-cell_column = lv_column.
*
lv_col_alpha = ip_start_column.
lv_row_alpha = ip_start_row.
SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
SHIFT lv_row_alpha LEFT DELETING LEADING space.
CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords1.
IF ip_stop_column IS NOT INITIAL.
lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ).
ELSE.
lv_column = zcl_excel_common=>convert_column2int( ip_start_column ).
ENDIF.
IF ip_stop_row IS NOT INITIAL. " If we don't get explicitly a stop column use start column
lv_row_alpha = ip_stop_row.
ELSE.
lv_row_alpha = ip_start_row.
ENDIF.
IF ip_stop_column IS NOT INITIAL. " If we don't get explicitly a stop column use start column
lv_col_alpha = ip_stop_column.
ELSE.
lv_col_alpha = ip_start_column.
ENDIF.
SHIFT lv_row_alpha RIGHT DELETING TRAILING space.
SHIFT lv_row_alpha LEFT DELETING LEADING space.
CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords2.
IF lv_coords2 IS NOT INITIAL AND lv_coords2 <> lv_coords1.
CONCATENATE me->mv_rule_range ` ` lv_coords1 ':' lv_coords2 INTO me->mv_rule_range.
ELSE.
CONCATENATE me->mv_rule_range ` ` lv_coords1 INTO me->mv_rule_range.
ENDIF.
SHIFT me->mv_rule_range LEFT DELETING LEADING space.
ENDMETHOD.
METHOD constructor.
DATA: ls_iconset TYPE zexcel_conditional_iconset.
ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights.
ls_iconset-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent.
ls_iconset-cfvo1_value = '0'.
ls_iconset-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent.
ls_iconset-cfvo2_value = '20'.
ls_iconset-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent.
ls_iconset-cfvo3_value = '40'.
ls_iconset-cfvo4_type = zcl_excel_style_cond=>c_cfvo_type_percent.
ls_iconset-cfvo4_value = '60'.
ls_iconset-cfvo5_type = zcl_excel_style_cond=>c_cfvo_type_percent.
ls_iconset-cfvo5_value = '80'.
me->rule = zcl_excel_style_cond=>c_rule_none.
* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none.
me->mode_iconset = ls_iconset.
me->priority = 1.
* inizialize dimension range
me->mv_rule_range = ip_dimension_range.
IF ip_guid IS NOT INITIAL.
me->guid = ip_guid.
ELSE.
me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ).
ENDIF.
ENDMETHOD.
METHOD FACTORY_COND_STYLE_ICONSET.
*--------------------------------------------------------------------*
* Work in progress
* Missing: LE or LT may be specified --> extend structure ZEXCEL_CONDITIONAL_ICONSET to hold this information as well
*--------------------------------------------------------------------*
* DATA: lv_needed_values TYPE i.
* CASE icon_type.
*
* WHEN 'C_ICONSET_3ARROWS'
* OR 'C_ICONSET_3ARROWSGRAY'
* OR 'C_ICONSET_3FLAGS'
* OR 'C_ICONSET_3SIGNS'
* OR 'C_ICONSET_3SYMBOLS'
* OR 'C_ICONSET_3SYMBOLS2'
* OR 'C_ICONSET_3TRAFFICLIGHTS'
* OR 'C_ICONSET_3TRAFFICLIGHTS2'.
* lv_needed_values = 3.
*
* WHEN 'C_ICONSET_4ARROWS'
* OR 'C_ICONSET_4ARROWSGRAY'
* OR 'C_ICONSET_4RATING'
* OR 'C_ICONSET_4REDTOBLACK'
* OR 'C_ICONSET_4TRAFFICLIGHTS'.
* lv_needed_values = 4.
*
* WHEN 'C_ICONSET_5ARROWS'
* OR 'C_ICONSET_5ARROWSGRAY'
* OR 'C_ICONSET_5QUARTERS'
* OR 'C_ICONSET_5RATING'.
* lv_needed_values = 5.
*
* WHEN OTHERS.
* RETURN.
* ENDCASE.
ENDMETHOD.
METHOD GET_DIMENSION_RANGE.
ep_dimension_range = me->mv_rule_range.
ENDMETHOD.
METHOD GET_GUID.
ep_guid = me->guid.
ENDMETHOD.
METHOD SET_RANGE.
CLEAR: me->mv_rule_range.
me->add_range( ip_start_row = ip_start_row
ip_start_column = ip_start_column
ip_stop_row = ip_stop_row
ip_stop_column = ip_stop_column ).
ENDMETHOD.
ENDCLASS.