mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 02:39:48 +08:00

git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@265 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
1835 lines
112 KiB
XML
1835 lines
112 KiB
XML
<?xml version="1.0" encoding="utf-16"?>
|
|
<CLAS CLSNAME="ZCL_EXCEL_CONVERTER" VERSION="1" LANGU="E" DESCRIPT="Salv converter" UUID="4F03DF55DA5D00BFE1008000C008015A" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDON="00000000" CHGDANYON="00000000" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="700" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
|
|
<types CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="T_RELATIONSHIP" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120112" TYPTYPE="4" SRCROW1="6 " SRCCOLUMN1="4 " SRCROW2="10 " SRCCOLUMN2="29 " TYPESRC_LENG="154 " TYPESRC="BEGIN OF t_relationship,
|
|
|
|
id TYPE string,
|
|
|
|
type TYPE string,
|
|
|
|
target TYPE string,
|
|
|
|
END OF t_relationship
|
|
|
|
"/>
|
|
<types CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="T_FILEVERSION" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="2 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120112" TYPTYPE="4" SRCROW1="12 " SRCCOLUMN1="4 " SRCROW2="18 " SRCCOLUMN2="26 " TYPESRC_LENG="254 " TYPESRC="BEGIN OF t_fileversion,
|
|
|
|
appname TYPE string,
|
|
|
|
lastedited TYPE string,
|
|
|
|
lowestedited TYPE string,
|
|
|
|
rupbuild TYPE string,
|
|
|
|
codename TYPE string,
|
|
|
|
END OF t_fileversion
|
|
|
|
"/>
|
|
<types CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="T_SHEET" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="3 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120112" TYPTYPE="4" SRCROW1="20 " SRCCOLUMN1="4 " SRCROW2="24 " SRCCOLUMN2="22 " TYPESRC_LENG="152 " TYPESRC="BEGIN OF t_sheet,
|
|
|
|
name TYPE string,
|
|
|
|
sheetid TYPE string,
|
|
|
|
id TYPE string,
|
|
|
|
END OF t_sheet
|
|
|
|
"/>
|
|
<types CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="T_WORKBOOKPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="4 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120112" TYPTYPE="4" SRCROW1="26 " SRCCOLUMN1="4 " SRCROW2="29 " SRCCOLUMN2="27 " TYPESRC_LENG="150 " TYPESRC="BEGIN OF t_workbookpr,
|
|
|
|
codename TYPE string,
|
|
|
|
defaultthemeversion TYPE string,
|
|
|
|
END OF t_workbookpr
|
|
|
|
"/>
|
|
<types CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="T_SHEETPR" VERSION="1" LANGU="E" EXPOSURE="1" STATE="1" EDITORDER="5 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120111" TYPTYPE="4" SRCROW1="31 " SRCCOLUMN1="4 " SRCROW2="33 " SRCCOLUMN2="24 " TYPESRC_LENG="96 " TYPESRC="BEGIN OF t_sheetpr,
|
|
|
|
codename TYPE string,
|
|
|
|
END OF t_sheetpr
|
|
|
|
"/>
|
|
<publicSection>class ZCL_EXCEL_CONVERTER definition
|
|
public
|
|
create public .
|
|
|
|
*"* public components of class ZCL_EXCEL_CONVERTER
|
|
*"* do not include other source files here!!!
|
|
public section.
|
|
type-pools ABAP .
|
|
|
|
class-methods CLASS_CONSTRUCTOR .
|
|
methods CONVERT
|
|
importing
|
|
!IO_ALV type ref to OBJECT optional
|
|
!IT_TABLE type STANDARD TABLE optional
|
|
!I_ROW_INT type I default 1
|
|
!I_COLUMN_INT type I default 1
|
|
!I_TABLE type FLAG optional
|
|
!I_STYLE_TABLE type ZEXCEL_TABLE_STYLE optional
|
|
!IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET optional
|
|
changing
|
|
!CO_EXCEL type ref to ZCL_EXCEL optional
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods GET_FILE
|
|
exporting
|
|
!E_BYTECOUNT type I
|
|
!ET_FILE type SOLIX_TAB
|
|
!E_FILE type XSTRING .
|
|
methods OPEN_FILE .
|
|
methods WRITE_FILE
|
|
importing
|
|
!I_PATH type STRING optional .</publicSection>
|
|
<protectedSection>*"* protected components of class ZCL_EXCEL_CONVERTER
|
|
*"* do not include other source files here!!!
|
|
protected section.
|
|
|
|
types:
|
|
BEGIN OF t_relationship,
|
|
id TYPE string,
|
|
type TYPE string,
|
|
target TYPE string,
|
|
END OF t_relationship .
|
|
types:
|
|
BEGIN OF t_fileversion,
|
|
appname TYPE string,
|
|
lastedited TYPE string,
|
|
lowestedited TYPE string,
|
|
rupbuild TYPE string,
|
|
codename TYPE string,
|
|
END OF t_fileversion .
|
|
types:
|
|
BEGIN OF t_sheet,
|
|
name TYPE string,
|
|
sheetid TYPE string,
|
|
id TYPE string,
|
|
END OF t_sheet .
|
|
types:
|
|
BEGIN OF t_workbookpr,
|
|
codename TYPE string,
|
|
defaultthemeversion TYPE string,
|
|
END OF t_workbookpr .
|
|
types:
|
|
BEGIN OF t_sheetpr,
|
|
codename TYPE string,
|
|
END OF t_sheetpr .
|
|
|
|
data W_ROW_INT type ZEXCEL_CELL_ROW value 1. "#EC NOTEXT .
|
|
data W_COL_INT type ZEXCEL_CELL_COLUMN value 1. "#EC NOTEXT .</protectedSection>
|
|
<privateSection>*"* private components of class ZCL_EXCEL_CONVERTER
|
|
*"* do not include other source files here!!!
|
|
private section.
|
|
|
|
data WO_EXCEL type ref to ZCL_EXCEL .
|
|
data WO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET .
|
|
data WO_AUTOFILTER type ref to ZCL_EXCEL_AUTOFILTER .
|
|
data WO_TABLE type ref to DATA .
|
|
data WO_DATA type ref to DATA .
|
|
data WT_FIELDCATALOG type ZEXCEL_T_CONVERTER_FCAT .
|
|
data WS_LAYOUT type ZEXCEL_S_CONVERTER_LAYO .
|
|
data WT_COLORS type ZEXCEL_T_CONVERTER_COL .
|
|
data WT_FILTER type ZEXCEL_T_CONVERTER_FIL .
|
|
class-data WT_OBJECTS type TT_ALV_TYPES .
|
|
class-data W_FCOUNT type NUMC3 .
|
|
data WT_SORT_VALUES type TT_SORT_VALUES .
|
|
data WT_SUBTOTAL_ROWS type TT_SUBTOTAL_ROWS .
|
|
data WT_STYLES type TT_STYLES .
|
|
constants C_TYPE_HDR type CHAR1 value 'H'. "#EC NOTEXT
|
|
constants C_TYPE_STR type CHAR1 value 'P'. "#EC NOTEXT
|
|
constants C_TYPE_NOR type CHAR1 value 'N'. "#EC NOTEXT
|
|
constants C_TYPE_SUB type CHAR1 value 'S'. "#EC NOTEXT
|
|
constants C_TYPE_TOT type CHAR1 value 'T'. "#EC NOTEXT
|
|
data WT_COLOR_STYLES type TT_COLOR_STYLES .
|
|
|
|
methods GET_COLOR_STYLE
|
|
importing
|
|
!I_ROW type ZEXCEL_CELL_ROW
|
|
!I_FIELDNAME type FIELDNAME
|
|
!I_STYLE type ZEXCEL_CELL_STYLE
|
|
returning
|
|
value(R_STYLE) type ZEXCEL_CELL_STYLE .
|
|
methods CLEAN_FIELDCATALOG .
|
|
methods SET_CELL_FORMAT
|
|
importing
|
|
!I_INTTYPE type INTTYPE
|
|
!I_DECIMALS type INT1
|
|
returning
|
|
value(R_FORMAT) type ZEXCEL_NUMBER_FORMAT .
|
|
methods GET_FUNCTION_NUMBER
|
|
importing
|
|
!I_TOTALS_FUNCTION type ZEXCEL_TABLE_TOTALS_FUNCTION
|
|
returning
|
|
value(R_FUNCTION_NUMBER) type INT1 .
|
|
methods LOOP_NORMAL
|
|
importing
|
|
!I_ROW_INT type ZEXCEL_CELL_ROW
|
|
!I_COL_INT type ZEXCEL_CELL_COLUMN
|
|
returning
|
|
value(R_FREEZE_COL) type INT1
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods LOOP_SUBTOTAL
|
|
importing
|
|
!I_ROW_INT type ZEXCEL_CELL_ROW
|
|
!I_COL_INT type ZEXCEL_CELL_COLUMN
|
|
returning
|
|
value(R_FREEZE_COL) type INT1
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods BIND_TABLE
|
|
importing
|
|
!I_STYLE_TABLE type ZEXCEL_TABLE_STYLE
|
|
returning
|
|
value(R_FREEZE_COL) type INT1
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods BIND_CELLS
|
|
returning
|
|
value(R_FREEZE_COL) type INT1
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods SET_AUTOFILTER_AREA .
|
|
methods CREATE_COLOR_STYLE
|
|
importing
|
|
!I_STYLE type ZEXCEL_CELL_STYLE
|
|
!IS_COLORS type ZEXCEL_S_CONVERTER_COL
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_FORMULAR_SUBTOTAL
|
|
importing
|
|
!I_ROW_INT_START type ZEXCEL_CELL_ROW
|
|
!I_ROW_INT_END type ZEXCEL_CELL_ROW
|
|
!I_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
!I_TOTALS_FUNCTION type ZEXCEL_TABLE_TOTALS_FUNCTION
|
|
returning
|
|
value(R_FORMULA) type STRING .
|
|
methods CREATE_FORMULAR_TOTAL
|
|
importing
|
|
!I_ROW_INT type ZEXCEL_CELL_ROW
|
|
!I_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
!I_TOTALS_FUNCTION type ZEXCEL_TABLE_TOTALS_FUNCTION
|
|
returning
|
|
value(R_FORMULA) type STRING .
|
|
methods CREATE_PATH
|
|
returning
|
|
value(R_PATH) type STRING .
|
|
methods CREATE_STYLE_HDR
|
|
importing
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT optional
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_STYLE_NORMAL
|
|
importing
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT optional
|
|
!I_INTTYPE type INTTYPE optional
|
|
!I_DECIMALS type INT1 optional
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_STYLE_STRIPPED
|
|
importing
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT optional
|
|
!I_INTTYPE type INTTYPE optional
|
|
!I_DECIMALS type INT1 optional
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_STYLE_SUBTOTAL
|
|
importing
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT optional
|
|
!I_INTTYPE type INTTYPE optional
|
|
!I_DECIMALS type INT1 optional
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_STYLE_TOTAL
|
|
importing
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT optional
|
|
!I_INTTYPE type INTTYPE optional
|
|
!I_DECIMALS type INT1 optional
|
|
returning
|
|
value(RO_STYLE) type ref to ZCL_EXCEL_STYLE .
|
|
methods CREATE_TABLE .
|
|
methods CREATE_TEXT_SUBTOTAL
|
|
importing
|
|
!I_VALUE type ANY
|
|
!I_TOTALS_FUNCTION type ZEXCEL_TABLE_TOTALS_FUNCTION
|
|
returning
|
|
value(R_TEXT) type STRING .
|
|
methods CREATE_WORKSHEET
|
|
importing
|
|
!I_TABLE type FLAG default 'X'
|
|
!I_STYLE_TABLE type ZEXCEL_TABLE_STYLE
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods EXECUTE_CONVERTER
|
|
importing
|
|
!IO_OBJECT type ref to OBJECT
|
|
!IT_TABLE type STANDARD TABLE
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods SET_FIELDCATALOG .
|
|
methods GET_STYLE
|
|
importing
|
|
!I_TYPE type CHAR1
|
|
!I_ALIGNMENT type ZEXCEL_ALIGNMENT default SPACE
|
|
!I_INTTYPE type INTTYPE default SPACE
|
|
!I_DECIMALS type INT1 default 0
|
|
returning
|
|
value(R_STYLE) type ZEXCEL_CELL_STYLE .</privateSection>
|
|
<localImplementation>*"* local class implementation for public class
|
|
*"* use this source file for the implementation part of
|
|
*"* local helper classes</localImplementation>
|
|
<localTypes>*"* use this source file for any type declarations (class
|
|
*"* definitions, interfaces or data types) you need for method
|
|
*"* implementation or private method's signature
|
|
|
|
TYPES: BEGIN OF ts_alv_types,
|
|
seoclass TYPE seoclsname,
|
|
clsname TYPE seoclsname,
|
|
END OF ts_alv_types,
|
|
tt_alv_types TYPE HASHED TABLE OF ts_alv_types WITH UNIQUE KEY seoclass.
|
|
|
|
TYPES: BEGIN OF ts_sort_values,
|
|
fieldname TYPE fieldname,
|
|
row_int TYPE zexcel_cell_row,
|
|
value TYPE REF TO data,
|
|
new TYPE flag,
|
|
END OF ts_sort_values,
|
|
|
|
tt_sort_values TYPE HASHED TABLE OF ts_sort_values WITH UNIQUE KEY fieldname.
|
|
TYPES: BEGIN OF ts_subtotal_rows,
|
|
row_int TYPE zexcel_cell_row,
|
|
row_int_start TYPE zexcel_cell_row,
|
|
columnname TYPE fieldname,
|
|
END OF ts_subtotal_rows,
|
|
|
|
tt_subtotal_rows TYPE HASHED TABLE OF ts_subtotal_rows WITH UNIQUE KEY row_int.
|
|
|
|
TYPES: BEGIN OF ts_styles,
|
|
type TYPE char1,
|
|
alignment TYPE zexcel_alignment,
|
|
inttype TYPE inttype,
|
|
decimals TYPE int1,
|
|
style TYPE REF TO zcl_excel_style,
|
|
guid TYPE zexcel_cell_style,
|
|
END OF ts_styles,
|
|
|
|
tt_styles TYPE HASHED TABLE OF ts_styles WITH UNIQUE KEY type alignment inttype decimals.
|
|
|
|
TYPES: BEGIN OF ts_color_styles,
|
|
guid_old TYPE zexcel_cell_style,
|
|
fontcolor TYPE zexcel_style_color_argb,
|
|
fillcolor TYPE zexcel_style_color_argb,
|
|
style_new TYPE REF TO zcl_excel_style,
|
|
END OF ts_color_styles,
|
|
|
|
tt_color_styles TYPE HASHED TABLE OF ts_color_styles WITH UNIQUE KEY guid_old fontcolor fillcolor.</localTypes>
|
|
<localMacros>*"* use this source file for any macro definitions you need
|
|
*"* in the implementation part of the class</localMacros>
|
|
<textPool>
|
|
<language SPRAS="E">
|
|
<textElement ID="I" KEY="001" ENTRY="Sheet1" LENGTH="15 "/>
|
|
<textElement ID="I" KEY="002" ENTRY="Grand" LENGTH="10 "/>
|
|
<textElement ID="I" KEY="003" ENTRY="Total" LENGTH="10 "/>
|
|
<textElement ID="I" KEY="004" ENTRY="Minimum" LENGTH="10 "/>
|
|
<textElement ID="I" KEY="005" ENTRY="Maximum" LENGTH="10 "/>
|
|
<textElement ID="I" KEY="006" ENTRY="Average" LENGTH="10 "/>
|
|
<textElement ID="I" KEY="007" ENTRY="Count" LENGTH="10 "/>
|
|
</language>
|
|
</textPool>
|
|
<typeUsage CLSNAME="ZCL_EXCEL_CONVERTER" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" EXPLICIT="X"/>
|
|
<typeUsage CLSNAME="ZCL_EXCEL_CONVERTER" TYPEGROUP="SLIS" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
|
|
<typeUsage CLSNAME="ZCL_EXCEL_CONVERTER" TYPEGROUP="SOI" VERSION="1" TPUTYPE="0" IMPLICIT="X"/>
|
|
<forwardDeclaration>ABAP</forwardDeclaration>
|
|
<forwardDeclaration>SLIS</forwardDeclaration>
|
|
<forwardDeclaration>SOI</forwardDeclaration>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="C_TYPE_HDR" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" EXPOSURE="0" STATE="1" EDITORDER="15 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="2" ATTVALUE="'H'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CHAR1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="C_TYPE_NOR" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" EXPOSURE="0" STATE="1" EDITORDER="17 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="2" ATTVALUE="'N'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CHAR1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="C_TYPE_STR" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" EXPOSURE="0" STATE="1" EDITORDER="16 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="2" ATTVALUE="'P'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CHAR1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="C_TYPE_SUB" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" EXPOSURE="0" STATE="1" EDITORDER="18 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="2" ATTVALUE="'S'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CHAR1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="C_TYPE_TOT" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" EXPOSURE="0" STATE="1" EDITORDER="19 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="2" ATTVALUE="'T'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="CHAR1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WO_AUTOFILTER" VERSION="1" LANGU="E" DESCRIPT="Autofilter" EXPOSURE="0" STATE="1" EDITORDER="3 " AUTHOR="RTURNHEIM" CREATEDON="20120310" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_AUTOFILTER" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WO_DATA" VERSION="1" LANGU="E" DESCRIPT="Excel data without unwanted columns" EXPOSURE="0" STATE="1" EDITORDER="5 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WO_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" EXPOSURE="0" STATE="1" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WO_TABLE" VERSION="1" LANGU="E" DESCRIPT="Table sorted but not reduced" EXPOSURE="0" STATE="1" EDITORDER="4 " AUTHOR="RTURNHEIM" CREATEDON="20120208" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Worksheet" EXPOSURE="0" STATE="1" EDITORDER="2 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WS_LAYOUT" VERSION="1" LANGU="E" DESCRIPT="Converter settings for table" EXPOSURE="0" STATE="1" EDITORDER="7 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_CONVERTER_LAYO" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_COLORS" VERSION="1" LANGU="E" DESCRIPT="Table type for color information of cells for converter" EXPOSURE="0" STATE="1" EDITORDER="8 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_CONVERTER_COL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_COLOR_STYLES" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="20 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_COLOR_STYLES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Conter table for tabel fields" EXPOSURE="0" STATE="1" EDITORDER="6 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_CONVERTER_FCAT" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_FILTER" VERSION="1" LANGU="E" DESCRIPT="Table type for filter information of cells for converter" EXPOSURE="0" STATE="1" EDITORDER="9 " AUTHOR="RTURNHEIM" CREATEDON="20120305" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_CONVERTER_FIL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_OBJECTS" VERSION="1" LANGU="E" DESCRIPT="ALV object list" EXPOSURE="0" STATE="1" EDITORDER="10 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_ALV_TYPES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_SORT_VALUES" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="12 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_SORT_VALUES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_STYLES" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="14 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_STYLES" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WT_SUBTOTAL_ROWS" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="13 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="TT_SUBTOTAL_ROWS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="W_COL_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Column" EXPOSURE="1" STATE="1" EDITORDER="2 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDON="00000000" ATTDECLTYP="0" ATTVALUE="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="700" TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="W_FCOUNT" VERSION="1" LANGU="E" DESCRIPT="Three digit number" EXPOSURE="0" STATE="1" EDITORDER="11 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="NUMC3" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
|
<attribute CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="W_ROW_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Row" EXPOSURE="1" STATE="1" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDON="00000000" ATTDECLTYP="0" ATTVALUE="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="700" TYPESRC_LENG="0 "/>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_CELLS" VERSION="1" LANGU="E" DESCRIPT="Create table with set cell method" EXPOSURE="0" STATE="1" EDITORDER="8 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_CELLS" SCONAME="R_FREEZE_COL" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT1"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_CELLS" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120114" CHANGEDON="00000000"/>
|
|
<source>METHOD bind_cells.
|
|
|
|
* Do we need subtotals with grouping
|
|
READ TABLE wt_fieldcatalog TRANSPORTING NO FIELDS WITH KEY is_subtotalled = abap_true.
|
|
IF sy-subrc = 0 .
|
|
r_freeze_col = loop_subtotal( i_row_int = w_row_int
|
|
i_col_int = w_col_int ) .
|
|
ELSE.
|
|
r_freeze_col = loop_normal( i_row_int = w_row_int
|
|
i_col_int = w_col_int ) .
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_TABLE" VERSION="1" LANGU="E" DESCRIPT="Create table with bind table method" EXPOSURE="0" STATE="1" EDITORDER="7 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_TABLE" SCONAME="I_STYLE_TABLE" VERSION="1" LANGU="E" DESCRIPT="Name of the table style" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_STYLE"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_TABLE" SCONAME="R_FREEZE_COL" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT1"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="BIND_TABLE" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120225" CHANGEDON="00000000"/>
|
|
<source>method bind_table.
|
|
data: lt_field_catalog type zexcel_t_fieldcatalog,
|
|
ls_field_catalog type zexcel_s_fieldcatalog,
|
|
ls_fcat type zexcel_s_converter_fcat,
|
|
lo_col_dim type ref to zcl_excel_worksheet_columndime,
|
|
lo_row_dim type ref to zcl_excel_worksheet_rowdimensi,
|
|
l_col_int type zexcel_cell_column,
|
|
l_col_alpha type zexcel_cell_column_alpha,
|
|
ls_settings type zexcel_s_table_settings,
|
|
l_line type i.
|
|
|
|
field-symbols: <fs_tab> type any table.
|
|
|
|
assign wo_data->* to <fs_tab> .
|
|
|
|
ls_settings-table_style = i_style_table.
|
|
ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ).
|
|
ls_settings-top_left_row = w_row_int.
|
|
ls_settings-show_row_stripes = ws_layout-is_stripped.
|
|
|
|
describe table wt_fieldcatalog lines l_line.
|
|
l_line = l_line + 1 + w_col_int.
|
|
ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ).
|
|
|
|
describe table <fs_tab> lines l_line.
|
|
ls_settings-bottom_right_row = l_line + 1 + w_row_int.
|
|
sort wt_fieldcatalog by position.
|
|
loop at wt_fieldcatalog into ls_fcat.
|
|
move-corresponding ls_fcat to ls_field_catalog.
|
|
ls_field_catalog-dynpfld = abap_true.
|
|
insert ls_field_catalog into table lt_field_catalog.
|
|
endloop.
|
|
|
|
wo_worksheet->bind_table(
|
|
exporting
|
|
ip_table = <fs_tab>
|
|
it_field_catalog = lt_field_catalog
|
|
is_table_settings = ls_settings
|
|
importing
|
|
es_table_settings = ls_settings
|
|
).
|
|
loop at wt_fieldcatalog into ls_fcat.
|
|
l_col_int = w_col_int + ls_fcat-position - 1.
|
|
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
|
|
* Freeze panes
|
|
if ls_fcat-fix_column = abap_true.
|
|
add 1 to r_freeze_col.
|
|
endif.
|
|
* Now let's check for optimized
|
|
if ls_fcat-is_optimized = abap_true.
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_auto_size( ip_auto_size = abap_true ) .
|
|
endif.
|
|
* Now let's check for visible
|
|
if ls_fcat-is_hidden = abap_true.
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_visible( ip_visible = abap_false ) .
|
|
endif.
|
|
endloop.
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CLASS_CONSTRUCTOR" VERSION="1" LANGU="E" DESCRIPT="CLASS_CONSTRUCTOR" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" MTDTYPE="2" MTDDECLTYP="1" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>METHOD class_constructor.
|
|
DATA: ls_objects TYPE ts_alv_types.
|
|
|
|
* Object CL_GUI_ALV_GRID
|
|
ls_objects-seoclass = 'CL_GUI_ALV_GRID'.
|
|
ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_ALV_GRID'.
|
|
INSERT ls_objects INTO TABLE wt_objects.
|
|
|
|
* Object CL_SALV_TABLE
|
|
ls_objects-seoclass = 'CL_SALV_TABLE'.
|
|
ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_SALV_TABLE'.
|
|
INSERT ls_objects INTO TABLE wt_objects.
|
|
|
|
* Object CL_SALV_RESULT
|
|
ls_objects-seoclass = 'CL_SALV_EX_RESULT_DATA_TABLE '.
|
|
ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_EX_RESULT'.
|
|
INSERT ls_objects INTO TABLE wt_objects.
|
|
* Object CL_SALV_WD_RESULT
|
|
ls_objects-seoclass = 'CL_SALV_WD_RESULT_DATA_TABLE '.
|
|
ls_objects-clsname = 'ZCL_EXCEL_CONVERTER_WD_RESULT'.
|
|
INSERT ls_objects INTO TABLE wt_objects.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CLEAN_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Sort and check on fieldcatalog" EXPOSURE="0" STATE="1" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>METHOD clean_fieldcatalog.
|
|
DATA: l_position TYPE int1.
|
|
|
|
FIELD-SYMBOLS: <fs_sfcat> TYPE zexcel_s_converter_fcat.
|
|
|
|
SORT wt_fieldcatalog BY position col_id.
|
|
|
|
CLEAR l_position.
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>.
|
|
ADD 1 TO l_position.
|
|
<fs_sfcat>-position = l_position.
|
|
* Default stype with alignment and format
|
|
<fs_sfcat>-style_hdr = get_style( i_type = c_type_hdr
|
|
i_alignment = <fs_sfcat>-alignment ).
|
|
IF ws_layout-is_stripped = abap_true.
|
|
<fs_sfcat>-style_stripped = get_style( i_type = c_type_str
|
|
i_alignment = <fs_sfcat>-alignment
|
|
i_inttype = <fs_sfcat>-inttype
|
|
i_decimals = <fs_sfcat>-decimals ).
|
|
ENDIF.
|
|
<fs_sfcat>-style_normal = get_style( i_type = c_type_nor
|
|
i_alignment = <fs_sfcat>-alignment
|
|
i_inttype = <fs_sfcat>-inttype
|
|
i_decimals = <fs_sfcat>-decimals ).
|
|
<fs_sfcat>-style_subtotal = get_style( i_type = c_type_sub
|
|
i_alignment = <fs_sfcat>-alignment
|
|
i_inttype = <fs_sfcat>-inttype
|
|
i_decimals = <fs_sfcat>-decimals ).
|
|
<fs_sfcat>-style_total = get_style( i_type = c_type_tot
|
|
i_alignment = <fs_sfcat>-alignment
|
|
i_inttype = <fs_sfcat>-inttype
|
|
i_decimals = <fs_sfcat>-decimals ).
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" VERSION="1" LANGU="E" DESCRIPT="Convert" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="IO_ALV" VERSION="1" LANGU="E" DESCRIPT="ALV List Viewer" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="OBJECT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="IT_TABLE" VERSION="1" LANGU="E" DESCRIPT="Data table" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120208" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="I_ROW_INT" VERSION="1" LANGU="E" DESCRIPT="Top edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="I_COLUMN_INT" VERSION="1" LANGU="E" DESCRIPT="Left-hand edge of data block" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I" PARVALUE="1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Create as TABLE in workbook" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="I_STYLE_TABLE" VERSION="1" LANGU="E" DESCRIPT="Name of the table style" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_STYLE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="7 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="CO_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="8 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="2" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL" PAROPTIONL="X"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CONVERT" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120111" CHANGEDON="00000000"/>
|
|
<source>method convert.
|
|
|
|
try.
|
|
execute_converter( EXPORTING io_object = io_alv
|
|
it_table = it_table ) .
|
|
endtry.
|
|
|
|
if io_worksheet is supplied and io_worksheet is bound.
|
|
wo_worksheet = io_worksheet.
|
|
endif.
|
|
if co_excel is supplied.
|
|
if co_excel is not bound.
|
|
create object co_excel.
|
|
co_excel->zif_excel_book_properties~creator = sy-uname.
|
|
endif.
|
|
wo_excel = co_excel.
|
|
endif.
|
|
|
|
* Move table to data object and clean it up
|
|
if wt_fieldcatalog is not initial.
|
|
create_table( ).
|
|
else.
|
|
wo_data = wo_table .
|
|
endif.
|
|
|
|
if wo_excel is not bound.
|
|
create object wo_excel.
|
|
wo_excel->zif_excel_book_properties~creator = sy-uname.
|
|
endif.
|
|
if wo_worksheet is not bound.
|
|
" Get active sheet
|
|
wo_worksheet = wo_excel->get_active_worksheet( ).
|
|
wo_worksheet->set_title( ip_title = 'Sheet1'(001) ).
|
|
endif.
|
|
|
|
w_row_int = i_row_int.
|
|
w_col_int = i_column_int.
|
|
|
|
create_worksheet( i_table = i_table
|
|
i_style_table = i_style_table ) .
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_COLOR_STYLE" VERSION="1" LANGU="E" DESCRIPT="Create new color style based on cell style" EXPOSURE="0" STATE="1" EDITORDER="10 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_COLOR_STYLE" SCONAME="I_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_COLOR_STYLE" SCONAME="IS_COLORS" VERSION="1" LANGU="E" DESCRIPT="Color information for cells" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_S_CONVERTER_COL"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_COLOR_STYLE" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>METHOD create_color_style.
|
|
DATA: ls_styles TYPE ts_styles.
|
|
DATA: lo_style TYPE REF TO zcl_excel_style.
|
|
|
|
READ TABLE wt_styles INTO ls_styles WITH KEY guid = i_style.
|
|
IF sy-subrc = 0.
|
|
lo_style = wo_excel->add_new_style( ).
|
|
* lo_style->borders = ls_styles-style->borders.
|
|
* lo_style->protection = ls_styles-style->protection.
|
|
lo_style->font->bold = ls_styles-style->font->bold.
|
|
lo_style->alignment->horizontal = ls_styles-style->alignment->horizontal.
|
|
lo_style->number_format->format_code = ls_styles-style->number_format->format_code.
|
|
|
|
lo_style->font->color-rgb = is_colors-fontcolor.
|
|
lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid.
|
|
lo_style->fill->fgcolor-rgb = is_colors-fillcolor.
|
|
|
|
ro_style = lo_style.
|
|
ENDIF.
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" VERSION="1" LANGU="E" DESCRIPT="Create formular for subtotal" EXPOSURE="0" STATE="1" EDITORDER="11 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" SCONAME="I_ROW_INT_START" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" SCONAME="I_ROW_INT_END" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" SCONAME="I_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" SCONAME="I_TOTALS_FUNCTION" VERSION="1" LANGU="E" DESCRIPT="Totals function for table column (xml ST_TotalsRowFunction)" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_TOTALS_FUNCTION"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_SUBTOTAL" SCONAME="R_FORMULA" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
|
|
<source>method create_formular_subtotal.
|
|
data: l_row_alpha_start type string,
|
|
l_row_alpha_end type string,
|
|
l_func_num type string.
|
|
|
|
l_row_alpha_start = i_row_int_start.
|
|
l_row_alpha_end = i_row_int_end.
|
|
|
|
l_func_num = get_function_number( i_totals_function = i_totals_function ).
|
|
concatenate 'SUBTOTAL(' l_func_num ',' i_column l_row_alpha_start ':' i_column l_row_alpha_end ')' into r_formula.
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_TOTAL" VERSION="1" LANGU="E" DESCRIPT="Create formular for column total" EXPOSURE="0" STATE="1" EDITORDER="12 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_TOTAL" SCONAME="I_ROW_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_TOTAL" SCONAME="I_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120108" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_TOTAL" SCONAME="I_TOTALS_FUNCTION" VERSION="1" LANGU="E" DESCRIPT="Totals function for table column (xml ST_TotalsRowFunction)" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_TOTALS_FUNCTION"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_FORMULAR_TOTAL" SCONAME="R_FORMULA" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120107" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
|
|
<source>method create_formular_total.
|
|
data: l_row_alpha type string,
|
|
l_row_e_alpha type string.
|
|
|
|
l_row_alpha = w_row_int + 1.
|
|
l_row_e_alpha = i_row_int.
|
|
|
|
concatenate i_totals_function '(' i_column l_row_alpha ':' i_column l_row_e_alpha ')' into r_formula.
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_PATH" VERSION="1" LANGU="E" DESCRIPT="Create file path for download" EXPOSURE="0" STATE="1" EDITORDER="13 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120113" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_PATH" SCONAME="R_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120113" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
|
|
<source>METHOD create_path.
|
|
DATA: l_sep TYPE c ,
|
|
l_path TYPE string,
|
|
l_return TYPE i .
|
|
|
|
CLEAR r_path.
|
|
|
|
" Save the file
|
|
cl_gui_frontend_services=>get_sapgui_workdir(
|
|
CHANGING
|
|
sapworkdir = l_path
|
|
EXCEPTIONS
|
|
get_sapworkdir_failed = 1
|
|
cntl_error = 2
|
|
error_no_gui = 3
|
|
not_supported_by_gui = 4
|
|
).
|
|
IF sy-subrc <> 0.
|
|
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
|
|
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
|
|
CONCATENATE 'Excel_' w_fcount '.xlsx' INTO r_path.
|
|
ELSE.
|
|
DO.
|
|
ADD 1 TO w_fcount.
|
|
*-obtain file separator character---------------------------------------
|
|
CALL METHOD cl_gui_frontend_services=>get_file_separator
|
|
CHANGING
|
|
file_separator = l_sep
|
|
EXCEPTIONS
|
|
cntl_error = 1
|
|
error_no_gui = 2
|
|
not_supported_by_gui = 3
|
|
OTHERS = 4.
|
|
|
|
IF sy-subrc <> 0.
|
|
l_sep = ''.
|
|
ENDIF.
|
|
|
|
CONCATENATE l_path l_sep 'Excel_' w_fcount '.xlsx' INTO r_path.
|
|
|
|
IF cl_gui_frontend_services=>file_exist( file = r_path ) = abap_true.
|
|
cl_gui_frontend_services=>file_delete( EXPORTING filename = r_path
|
|
CHANGING rc = l_return
|
|
EXCEPTIONS OTHERS = 1 ).
|
|
IF sy-subrc = 0 .
|
|
RETURN.
|
|
ENDIF.
|
|
ELSE.
|
|
RETURN.
|
|
ENDIF.
|
|
ENDDO.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_HDR" VERSION="1" LANGU="E" DESCRIPT="Create header style" EXPOSURE="0" STATE="1" EDITORDER="14 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_HDR" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120108" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_HDR" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>method create_style_hdr.
|
|
data: lo_style type ref to zcl_excel_style.
|
|
|
|
lo_style = wo_excel->add_new_style( ).
|
|
lo_style->font->bold = abap_true.
|
|
lo_style->font->color-rgb = zcl_excel_style_color=>c_white.
|
|
lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid.
|
|
lo_style->fill->fgcolor-rgb = 'FF4F81BD'.
|
|
if i_alignment is supplied and i_alignment is not initial.
|
|
lo_style->alignment->horizontal = i_alignment.
|
|
endif.
|
|
ro_style = lo_style .
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_NORMAL" VERSION="1" LANGU="E" DESCRIPT="Create line style for stripped" EXPOSURE="0" STATE="1" EDITORDER="15 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120109" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_NORMAL" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120109" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_NORMAL" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120109" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_NORMAL" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_NORMAL" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>METHOD create_style_normal.
|
|
DATA: lo_style TYPE REF TO zcl_excel_style,
|
|
l_format TYPE zexcel_number_format.
|
|
|
|
IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL.
|
|
l_format = set_cell_format( i_inttype = i_inttype
|
|
i_decimals = i_decimals ) .
|
|
ENDIF.
|
|
IF l_format IS NOT INITIAL OR
|
|
( i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL ) .
|
|
|
|
lo_style = wo_excel->add_new_style( ).
|
|
|
|
IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL.
|
|
lo_style->alignment->horizontal = i_alignment.
|
|
ENDIF.
|
|
|
|
IF l_format IS NOT INITIAL.
|
|
lo_style->number_format->format_code = l_format.
|
|
ENDIF.
|
|
|
|
ro_style = lo_style .
|
|
|
|
ENDIF.
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_STRIPPED" VERSION="1" LANGU="E" DESCRIPT="Create line style for stripped" EXPOSURE="0" STATE="1" EDITORDER="16 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_STRIPPED" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120108" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_STRIPPED" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120109" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_STRIPPED" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_STRIPPED" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>method create_style_stripped.
|
|
data: lo_style type ref to zcl_excel_style.
|
|
data: l_format type zexcel_number_format.
|
|
|
|
lo_style = wo_excel->add_new_style( ).
|
|
lo_style->fill->filltype = zcl_excel_style_fill=>c_fill_solid.
|
|
lo_style->fill->fgcolor-rgb = 'FFDBE5F1'.
|
|
if i_alignment is supplied and i_alignment is not initial.
|
|
lo_style->alignment->horizontal = i_alignment.
|
|
endif.
|
|
if i_inttype is supplied and i_inttype is not initial.
|
|
l_format = set_cell_format( i_inttype = i_inttype
|
|
i_decimals = i_decimals ) .
|
|
if l_format is not initial.
|
|
lo_style->number_format->format_code = l_format.
|
|
endif.
|
|
endif.
|
|
ro_style = lo_style.
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_SUBTOTAL" VERSION="1" LANGU="E" DESCRIPT="Create subtotals style" EXPOSURE="0" STATE="1" EDITORDER="17 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_SUBTOTAL" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_SUBTOTAL" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_SUBTOTAL" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120129" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_SUBTOTAL" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Globally Unique Identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>method CREATE_STYLE_SUBTOTAL.
|
|
data: lo_style type ref to zcl_excel_style.
|
|
data: l_format type zexcel_number_format.
|
|
|
|
lo_style = wo_excel->add_new_style( ).
|
|
lo_style->font->bold = abap_true.
|
|
|
|
if i_alignment is supplied and i_alignment is not initial.
|
|
lo_style->alignment->horizontal = i_alignment.
|
|
endif.
|
|
if i_inttype is supplied and i_inttype is not initial.
|
|
l_format = set_cell_format( i_inttype = i_inttype
|
|
i_decimals = i_decimals ) .
|
|
if l_format is not initial.
|
|
lo_style->number_format->format_code = l_format.
|
|
endif.
|
|
endif.
|
|
|
|
ro_style = lo_style .
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_TOTAL" VERSION="1" LANGU="E" DESCRIPT="Create totals style" EXPOSURE="0" STATE="1" EDITORDER="18 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_TOTAL" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120108" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_TOTAL" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120109" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_TOTAL" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_STYLE_TOTAL" SCONAME="RO_STYLE" VERSION="1" LANGU="E" DESCRIPT="Globally Unique Identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_STYLE"/>
|
|
<source>METHOD create_style_total.
|
|
DATA: lo_style TYPE REF TO zcl_excel_style.
|
|
DATA: l_format TYPE zexcel_number_format.
|
|
|
|
lo_style = wo_excel->add_new_style( ).
|
|
lo_style->font->bold = abap_true.
|
|
|
|
CREATE OBJECT lo_style->borders->top.
|
|
lo_style->borders->top->border_style = zcl_excel_style_border=>c_border_thin.
|
|
lo_style->borders->top->border_color-rgb = zcl_excel_style_color=>c_black.
|
|
|
|
CREATE OBJECT lo_style->borders->right.
|
|
lo_style->borders->right->border_style = zcl_excel_style_border=>c_border_none.
|
|
lo_style->borders->right->border_color-rgb = zcl_excel_style_color=>c_black.
|
|
|
|
CREATE OBJECT lo_style->borders->down.
|
|
lo_style->borders->down->border_style = zcl_excel_style_border=>c_border_double.
|
|
lo_style->borders->down->border_color-rgb = zcl_excel_style_color=>c_black.
|
|
|
|
CREATE OBJECT lo_style->borders->left.
|
|
lo_style->borders->left->border_style = zcl_excel_style_border=>c_border_none.
|
|
lo_style->borders->left->border_color-rgb = zcl_excel_style_color=>c_black.
|
|
|
|
IF i_alignment IS SUPPLIED AND i_alignment IS NOT INITIAL.
|
|
lo_style->alignment->horizontal = i_alignment.
|
|
ENDIF.
|
|
IF i_inttype IS SUPPLIED AND i_inttype IS NOT INITIAL.
|
|
l_format = set_cell_format( i_inttype = i_inttype
|
|
i_decimals = i_decimals ) .
|
|
IF l_format IS NOT INITIAL.
|
|
lo_style->number_format->format_code = l_format.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
ro_style = lo_style .
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_TABLE" VERSION="1" LANGU="E" DESCRIPT="Create table based on fieldcatalog" EXPOSURE="0" STATE="1" EDITORDER="19 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>METHOD create_table.
|
|
TYPES: BEGIN OF ts_output,
|
|
fieldname TYPE fieldname,
|
|
function TYPE funcname,
|
|
END OF ts_output.
|
|
|
|
DATA: lo_data TYPE REF TO data.
|
|
DATA: lo_addit TYPE REF TO cl_abap_elemdescr,
|
|
lt_components_tab TYPE cl_abap_structdescr=>component_table,
|
|
ls_components TYPE abap_componentdescr,
|
|
lo_table TYPE REF TO cl_abap_tabledescr,
|
|
lo_struc TYPE REF TO cl_abap_structdescr,
|
|
lt_fieldcatalog TYPE zexcel_t_converter_fcat.
|
|
|
|
FIELD-SYMBOLS: <fs_scat> TYPE zexcel_s_converter_fcat,
|
|
<fs_stab> TYPE ANY,
|
|
<fs_ttab> TYPE STANDARD TABLE,
|
|
<fs> TYPE ANY,
|
|
<fs_table> TYPE STANDARD TABLE.
|
|
|
|
SORT wt_fieldcatalog BY position.
|
|
ASSIGN wo_table->* TO <fs_table>.
|
|
|
|
READ TABLE <fs_table> ASSIGNING <fs_stab> INDEX 1.
|
|
IF sy-subrc EQ 0 .
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_scat>.
|
|
ASSIGN COMPONENT <fs_scat>-columnname OF STRUCTURE <fs_stab> TO <fs>.
|
|
IF sy-subrc = 0.
|
|
ls_components-name = <fs_scat>-columnname.
|
|
TRY.
|
|
lo_addit ?= cl_abap_typedescr=>describe_by_data( <fs> ).
|
|
CATCH cx_sy_move_cast_error.
|
|
CLEAR lo_addit.
|
|
DELETE TABLE wt_fieldcatalog FROM <fs_scat>.
|
|
ENDTRY.
|
|
IF lo_addit IS BOUND.
|
|
ls_components-type = lo_addit .
|
|
INSERT ls_components INTO TABLE lt_components_tab.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
IF lt_components_tab IS NOT INITIAL.
|
|
"create new line type
|
|
lo_struc = cl_abap_structdescr=>create( lt_components_tab ).
|
|
|
|
lo_table = cl_abap_tabledescr=>create( lo_struc ).
|
|
|
|
CREATE DATA wo_data TYPE HANDLE lo_table.
|
|
CREATE DATA lo_data TYPE HANDLE lo_struc.
|
|
|
|
ASSIGN wo_data->* TO <fs_ttab>.
|
|
ASSIGN lo_data->* TO <fs_stab>.
|
|
LOOP AT <fs_table> ASSIGNING <fs>.
|
|
CLEAR <fs_stab>.
|
|
MOVE-CORRESPONDING <fs> TO <fs_stab>.
|
|
APPEND <fs_stab> TO <fs_ttab>.
|
|
ENDLOOP.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_TEXT_SUBTOTAL" VERSION="1" LANGU="E" DESCRIPT="Create subtoal text for column" EXPOSURE="0" STATE="1" EDITORDER="20 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_TEXT_SUBTOTAL" SCONAME="I_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_TEXT_SUBTOTAL" SCONAME="I_TOTALS_FUNCTION" VERSION="1" LANGU="E" DESCRIPT="Totals function for table column (xml ST_TotalsRowFunction)" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_TOTALS_FUNCTION"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_TEXT_SUBTOTAL" SCONAME="R_TEXT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
|
|
<source>method create_text_subtotal.
|
|
data: l_string type string,
|
|
l_func type string.
|
|
|
|
case i_totals_function.
|
|
when zcl_excel_table=>totals_function_sum. " Total
|
|
l_func = 'Total'(003).
|
|
when zcl_excel_table=>totals_function_min. " Minimum
|
|
l_func = 'Minimum'(004).
|
|
when zcl_excel_table=>totals_function_max. " Maximum
|
|
l_func = 'Maximum'(005).
|
|
when zcl_excel_table=>totals_function_average. " Mean Value
|
|
l_func = 'Average'(006).
|
|
when zcl_excel_table=>totals_function_count. " Count
|
|
l_func = 'Count'(007).
|
|
when others.
|
|
clear l_func.
|
|
endcase.
|
|
l_string = i_value.
|
|
|
|
concatenate l_string l_func into r_text separated by space.
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Create table in worksheet" EXPOSURE="0" STATE="1" EDITORDER="21 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120106" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_WORKSHEET" SCONAME="I_TABLE" VERSION="1" LANGU="E" DESCRIPT="Create as TABLE in workbook" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FLAG" PARVALUE="'X'" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_WORKSHEET" SCONAME="I_STYLE_TABLE" VERSION="1" LANGU="E" DESCRIPT="Name of the table style" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_STYLE"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="CREATE_WORKSHEET" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDON="00000000"/>
|
|
<source>METHOD create_worksheet.
|
|
DATA: l_freeze_col TYPE i.
|
|
DATA: l_guid TYPE oltpguid16.
|
|
|
|
wo_worksheet->zif_excel_sheet_properties~summarybelow = zif_excel_sheet_properties=>c_below_on. " By default is on
|
|
|
|
IF wo_data IS BOUND AND wo_worksheet IS BOUND.
|
|
|
|
IF wt_fieldcatalog IS INITIAL.
|
|
set_fieldcatalog( ) .
|
|
ELSE.
|
|
clean_fieldcatalog( ) .
|
|
ENDIF.
|
|
|
|
IF i_table = abap_true.
|
|
l_freeze_col = bind_table( i_style_table = i_style_table ) .
|
|
ELSE.
|
|
* Let's check for filter.
|
|
IF wt_filter IS NOT INITIAL.
|
|
wo_autofilter = wo_excel->add_new_autofilter( io_sheet = wo_worksheet ).
|
|
l_freeze_col = bind_cells( ) .
|
|
set_autofilter_area( ) .
|
|
ELSE.
|
|
l_freeze_col = bind_cells( ) .
|
|
ENDIF.
|
|
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
* Check for freeze panes
|
|
IF ws_layout-is_fixed = abap_true.
|
|
IF l_freeze_col = 0.
|
|
l_freeze_col = w_col_int.
|
|
ENDIF.
|
|
wo_worksheet->freeze_panes( EXPORTING ip_num_columns = l_freeze_col
|
|
ip_num_rows = w_row_int ) .
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="EXECUTE_CONVERTER" VERSION="1" LANGU="E" DESCRIPT="Execute the converter based on object provided" EXPOSURE="0" STATE="1" EDITORDER="22 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="EXECUTE_CONVERTER" SCONAME="IO_OBJECT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="OBJECT"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="EXECUTE_CONVERTER" SCONAME="IT_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="EXECUTE_CONVERTER" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120114" CHANGEDON="00000000"/>
|
|
<source>METHOD execute_converter.
|
|
DATA: lt_fieldcatalog TYPE zexcel_t_fieldcatalog,
|
|
ls_fieldcatalog TYPE zexcel_s_converter_fcat,
|
|
lo_if TYPE REF TO zif_excel_converter,
|
|
ls_types TYPE ts_alv_types,
|
|
lo_addit TYPE REF TO cl_abap_classdescr.
|
|
|
|
IF io_object IS BOUND.
|
|
TRY.
|
|
lo_addit ?= cl_abap_typedescr=>describe_by_object_ref( io_object ).
|
|
CATCH cx_sy_move_cast_error.
|
|
RAISE EXCEPTION TYPE zcx_excel.
|
|
ENDTRY.
|
|
ls_types-seoclass = lo_addit->get_relative_name( ).
|
|
READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass.
|
|
IF sy-subrc = 0.
|
|
CREATE OBJECT lo_if TYPE (ls_types-clsname).
|
|
|
|
TRY.
|
|
lo_if->create_fieldcatalog(
|
|
EXPORTING
|
|
io_object = io_object
|
|
it_table = it_table
|
|
IMPORTING
|
|
es_layout = ws_layout
|
|
et_fieldcatalog = wt_fieldcatalog
|
|
eo_table = wo_table
|
|
et_colors = wt_colors
|
|
et_filter = wt_filter
|
|
).
|
|
ENDTRY.
|
|
* data lines of highest level.
|
|
IF ws_layout-max_subtotal_level > 0.
|
|
ADD 1 TO ws_layout-max_subtotal_level.
|
|
ENDIF.
|
|
ELSE.
|
|
RAISE EXCEPTION TYPE zcx_excel.
|
|
ENDIF.
|
|
ELSE.
|
|
REFRESH wt_fieldcatalog.
|
|
GET REFERENCE OF it_table INTO wo_table.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_COLOR_STYLE" VERSION="1" LANGU="E" DESCRIPT="Look up color style and create if needed" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_COLOR_STYLE" SCONAME="I_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_COLOR_STYLE" SCONAME="I_FIELDNAME" VERSION="1" LANGU="E" DESCRIPT="Field Name" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="FIELDNAME"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_COLOR_STYLE" SCONAME="I_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_COLOR_STYLE" SCONAME="R_STYLE" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120212" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
|
|
<source>METHOD get_color_style.
|
|
DATA: ls_colors TYPE zexcel_s_converter_col,
|
|
ls_color_styles TYPE ts_color_styles,
|
|
lo_style TYPE REF TO zcl_excel_style.
|
|
|
|
r_style = i_style. " Default we change nothing
|
|
|
|
IF wt_colors IS NOT INITIAL.
|
|
* Full line has color
|
|
READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row
|
|
columnname = space.
|
|
IF sy-subrc = 0.
|
|
READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style
|
|
fontcolor = ls_colors-fontcolor
|
|
fillcolor = ls_colors-fillcolor.
|
|
IF sy-subrc = 0.
|
|
r_style = ls_color_styles-style_new->get_guid( ).
|
|
ELSE.
|
|
lo_style = create_color_style( i_style = i_style
|
|
is_colors = ls_colors ) .
|
|
r_style = lo_style->get_guid( ) .
|
|
ls_color_styles-guid_old = i_style.
|
|
ls_color_styles-fontcolor = ls_colors-fontcolor.
|
|
ls_color_styles-fillcolor = ls_colors-fillcolor.
|
|
ls_color_styles-style_new = lo_style.
|
|
INSERT ls_color_styles INTO TABLE wt_color_styles.
|
|
ENDIF.
|
|
ELSE.
|
|
* Only field has color
|
|
READ TABLE wt_colors INTO ls_colors WITH KEY rownumber = i_row
|
|
columnname = i_fieldname.
|
|
IF sy-subrc = 0.
|
|
READ TABLE wt_color_styles INTO ls_color_styles WITH KEY guid_old = i_style
|
|
fontcolor = ls_colors-fontcolor
|
|
fillcolor = ls_colors-fillcolor.
|
|
IF sy-subrc = 0.
|
|
r_style = ls_color_styles-style_new->get_guid( ).
|
|
ELSE.
|
|
lo_style = create_color_style( i_style = i_style
|
|
is_colors = ls_colors ) .
|
|
ls_color_styles-guid_old = i_style.
|
|
ls_color_styles-fontcolor = ls_colors-fontcolor.
|
|
ls_color_styles-fillcolor = ls_colors-fillcolor.
|
|
ls_color_styles-style_new = lo_style.
|
|
INSERT ls_color_styles INTO TABLE wt_color_styles.
|
|
r_style = ls_color_styles-style_new->get_guid( ).
|
|
ENDIF.
|
|
ELSE.
|
|
r_style = i_style.
|
|
ENDIF.
|
|
ENDIF.
|
|
ELSE.
|
|
r_style = i_style.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FILE" VERSION="1" LANGU="E" DESCRIPT="Create excel file" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FILE" SCONAME="E_BYTECOUNT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="I"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FILE" SCONAME="ET_FILE" VERSION="1" LANGU="E" DESCRIPT="GBT: SOLIX as Table Type" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="SOLIX_TAB"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FILE" SCONAME="E_FILE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="XSTRING"/>
|
|
<source>method get_file.
|
|
data: lo_excel_writer type ref to zif_excel_writer,
|
|
lo_excel type ref to zcl_excel.
|
|
|
|
data: ls_seoclass type seoclass.
|
|
|
|
|
|
if wo_excel is bound.
|
|
create object lo_excel_writer type zcl_excel_writer_2007.
|
|
e_file = lo_excel_writer->write_file( wo_excel ).
|
|
|
|
select single * into ls_seoclass
|
|
from seoclass
|
|
where clsname = 'CL_BCS_CONVERT'.
|
|
|
|
if sy-subrc = 0.
|
|
call method (ls_seoclass-clsname)=>xstring_to_solix
|
|
exporting
|
|
iv_xstring = e_file
|
|
receiving
|
|
et_solix = et_file.
|
|
e_bytecount = xstrlen( e_file ).
|
|
else.
|
|
" Convert to binary
|
|
call function 'SCMS_XSTRING_TO_BINARY'
|
|
exporting
|
|
buffer = e_file
|
|
importing
|
|
output_length = e_bytecount
|
|
tables
|
|
binary_tab = et_file.
|
|
endif.
|
|
endif.
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FUNCTION_NUMBER" VERSION="1" LANGU="E" DESCRIPT="Convert function name into internal number" EXPOSURE="0" STATE="1" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FUNCTION_NUMBER" SCONAME="I_TOTALS_FUNCTION" VERSION="1" LANGU="E" DESCRIPT="Totals function for table column (xml ST_TotalsRowFunction)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_TABLE_TOTALS_FUNCTION"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_FUNCTION_NUMBER" SCONAME="R_FUNCTION_NUMBER" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120121" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT1"/>
|
|
<source>method get_function_number.
|
|
*Number Function
|
|
*1 AVERAGE
|
|
*2 COUNT
|
|
*3 COUNTA
|
|
*4 MAX
|
|
*5 MIN
|
|
*6 PRODUCT
|
|
*7 STDEV
|
|
*8 STDEVP
|
|
*9 SUM
|
|
*10 VAR
|
|
*11 VARP
|
|
|
|
case i_totals_function.
|
|
when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_SUM. " Total
|
|
r_function_number = 9.
|
|
when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MIN. " Minimum
|
|
r_function_number = 5.
|
|
when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_MAX. " Maximum
|
|
r_function_number = 4.
|
|
when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_AVERAGE. " Mean Value
|
|
r_function_number = 1.
|
|
when ZCL_EXCEL_TABLE=>TOTALS_FUNCTION_count. " Count
|
|
r_function_number = 2.
|
|
when others.
|
|
clear r_function_number.
|
|
endcase.
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" VERSION="1" LANGU="E" DESCRIPT="Get style for cell" EXPOSURE="0" STATE="1" EDITORDER="24 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" SCONAME="I_TYPE" VERSION="1" LANGU="E" DESCRIPT="Cell type for converter" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR1"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" SCONAME="I_ALIGNMENT" VERSION="1" LANGU="E" DESCRIPT="Alignment" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_ALIGNMENT" PARVALUE="SPACE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE" PARVALUE="SPACE" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1" PARVALUE="0" PAROPTIONL="X"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="GET_STYLE" SCONAME="R_STYLE" VERSION="1" LANGU="E" DESCRIPT="Globally Unique Identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120211" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
|
|
<source>METHOD get_style.
|
|
DATA: ls_styles TYPE ts_styles,
|
|
lo_style TYPE REF TO zcl_excel_style.
|
|
|
|
CLEAR r_style.
|
|
|
|
READ TABLE wt_styles INTO ls_styles WITH TABLE KEY type = i_type
|
|
alignment = i_alignment
|
|
inttype = i_inttype
|
|
decimals = i_decimals.
|
|
IF sy-subrc = 0.
|
|
r_style = ls_styles-guid.
|
|
ELSE.
|
|
CASE i_type.
|
|
WHEN c_type_hdr. " Header
|
|
lo_style = create_style_hdr( i_alignment = i_alignment ).
|
|
WHEN c_type_str. "Stripped
|
|
lo_style = create_style_stripped( i_alignment = i_alignment
|
|
i_inttype = i_inttype
|
|
i_decimals = i_decimals ).
|
|
WHEN c_type_nor. "Normal
|
|
lo_style = create_style_normal( i_alignment = i_alignment
|
|
i_inttype = i_inttype
|
|
i_decimals = i_decimals ).
|
|
WHEN c_type_sub. "Subtotals
|
|
lo_style = create_style_subtotal( i_alignment = i_alignment
|
|
i_inttype = i_inttype
|
|
i_decimals = i_decimals ).
|
|
WHEN c_type_tot. "Totals
|
|
lo_style = create_style_total( i_alignment = i_alignment
|
|
i_inttype = i_inttype
|
|
i_decimals = i_decimals ).
|
|
ENDCASE.
|
|
IF lo_style IS NOT INITIAL.
|
|
r_style = lo_style->get_guid( ).
|
|
ls_styles-type = i_type.
|
|
ls_styles-alignment = i_alignment.
|
|
ls_styles-inttype = i_inttype.
|
|
ls_styles-decimals = i_decimals.
|
|
ls_styles-guid = r_style.
|
|
ls_styles-style = lo_style.
|
|
INSERT ls_styles INTO TABLE wt_styles.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_NORMAL" VERSION="1" LANGU="E" DESCRIPT="Bind cells with normal loop" EXPOSURE="0" STATE="1" EDITORDER="5 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_NORMAL" SCONAME="I_ROW_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_NORMAL" SCONAME="I_COL_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_NORMAL" SCONAME="R_FREEZE_COL" VERSION="1" LANGU="E" DESCRIPT="Natural Number" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT1"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_NORMAL" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120208" CHANGEDON="00000000"/>
|
|
<source>METHOD loop_normal.
|
|
DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr,
|
|
lo_data TYPE REF TO data,
|
|
l_row_header TYPE zexcel_cell_row VALUE '2',
|
|
l_col_header TYPE zexcel_cell_column_alpha VALUE 'B',
|
|
l_row_int_start TYPE zexcel_cell_row,
|
|
l_row_int_end TYPE zexcel_cell_row,
|
|
l_row_int TYPE zexcel_cell_row,
|
|
l_col_int TYPE zexcel_cell_column,
|
|
l_col_alpha TYPE zexcel_cell_column_alpha,
|
|
l_col_alpha_start TYPE zexcel_cell_column_alpha,
|
|
l_cell_value TYPE zexcel_cell_value,
|
|
l_s_color TYPE abap_bool,
|
|
lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime,
|
|
lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
|
l_formula TYPE zexcel_cell_formula,
|
|
l_style TYPE zexcel_cell_style,
|
|
l_cells TYPE i,
|
|
l_count TYPE i,
|
|
l_table_row TYPE i.
|
|
|
|
FIELD-SYMBOLS: <fs_stab> TYPE ANY,
|
|
<fs_tab> TYPE STANDARD TABLE,
|
|
<fs_sfcat> TYPE zexcel_s_converter_fcat,
|
|
<fs_fldval> TYPE ANY,
|
|
<fs_cell_value> TYPE zexcel_cell_value.
|
|
|
|
ASSIGN wo_data->* TO <fs_tab> .
|
|
|
|
DESCRIBE TABLE wt_fieldcatalog LINES l_cells.
|
|
DESCRIBE TABLE <fs_tab> LINES l_count.
|
|
l_cells = l_cells * l_count.
|
|
|
|
* It is better to loop column by column
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>.
|
|
l_row_int = i_row_int.
|
|
l_col_int = i_col_int + <fs_sfcat>-position - 1.
|
|
|
|
* Freeze panes
|
|
IF <fs_sfcat>-fix_column = abap_true.
|
|
ADD 1 TO r_freeze_col.
|
|
ENDIF.
|
|
l_s_color = abap_true.
|
|
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
|
|
" First of all write column header
|
|
l_cell_value = <fs_sfcat>-scrtext_m.
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = l_cell_value
|
|
ip_style = <fs_sfcat>-style_hdr ).
|
|
ADD 1 TO l_row_int.
|
|
LOOP AT <fs_tab> ASSIGNING <fs_stab>.
|
|
l_table_row = sy-tabix.
|
|
* Now the cell values
|
|
ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>.
|
|
* Now let's write the cell values
|
|
IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true.
|
|
l_style = get_color_style( i_row = l_table_row
|
|
i_fieldname = <fs_sfcat>-columnname
|
|
i_style = <fs_sfcat>-style_stripped ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = <fs_fldval>
|
|
ip_style = l_style ).
|
|
CLEAR l_s_color.
|
|
ELSE.
|
|
l_style = get_color_style( i_row = l_table_row
|
|
i_fieldname = <fs_sfcat>-columnname
|
|
i_style = <fs_sfcat>-style_normal ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = <fs_fldval>
|
|
ip_style = l_style ).
|
|
l_s_color = abap_true.
|
|
ENDIF.
|
|
READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row
|
|
columnname = <fs_sfcat>-columnname.
|
|
IF sy-subrc = 0.
|
|
wo_worksheet->get_cell( EXPORTING
|
|
ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
IMPORTING
|
|
ep_value = l_cell_value ).
|
|
wo_autofilter->set_value( i_column = l_col_int
|
|
i_value = l_cell_value ).
|
|
ENDIF.
|
|
ADD 1 TO l_row_int.
|
|
ENDLOOP.
|
|
* Now let's check for optimized
|
|
IF <fs_sfcat>-is_optimized = abap_true .
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_auto_size( ip_auto_size = abap_true ) .
|
|
ENDIF.
|
|
* Now let's check for visible
|
|
IF <fs_sfcat>-is_hidden = abap_true.
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_visible( ip_visible = abap_false ) .
|
|
ENDIF.
|
|
* Now let's check for total versus subtotal.
|
|
IF <fs_sfcat>-totals_function IS NOT INITIAL.
|
|
l_row_int_end = l_row_int - 1.
|
|
|
|
l_formula = create_formular_total( i_row_int = l_row_int_end
|
|
i_column = l_col_alpha
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_formula = l_formula
|
|
ip_style = <fs_sfcat>-style_total ).
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_SUBTOTAL" VERSION="1" LANGU="E" DESCRIPT="Bind cells with subtotal loop" EXPOSURE="0" STATE="1" EDITORDER="6 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_SUBTOTAL" SCONAME="I_ROW_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_SUBTOTAL" SCONAME="I_COL_INT" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_SUBTOTAL" SCONAME="R_FREEZE_COL" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120122" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="INT1"/>
|
|
<exception CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="LOOP_SUBTOTAL" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 " AUTHOR="RTURNHEIM" CREATEDON="20120125" CHANGEDON="00000000"/>
|
|
<source>METHOD loop_subtotal.
|
|
TYPES: BEGIN OF ts_line,
|
|
sort_level TYPE int4,
|
|
text TYPE string,
|
|
is_collapsed TYPE flag,
|
|
is_visible TYPE flag,
|
|
row_int_start TYPE zexcel_cell_row,
|
|
col_alpha TYPE zexcel_cell_column_alpha,
|
|
columnname TYPE fieldname,
|
|
END OF ts_line,
|
|
tt_line TYPE STANDARD TABLE OF ts_line.
|
|
DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr,
|
|
lo_data TYPE REF TO data,
|
|
l_row_header TYPE zexcel_cell_row VALUE '2',
|
|
l_col_header TYPE zexcel_cell_column_alpha VALUE 'B',
|
|
l_row_int_start TYPE zexcel_cell_row,
|
|
l_row_int_end TYPE zexcel_cell_row,
|
|
l_row_int TYPE zexcel_cell_row,
|
|
l_col_int TYPE zexcel_cell_column,
|
|
l_col_alpha TYPE zexcel_cell_column_alpha,
|
|
l_col_alpha_start TYPE zexcel_cell_column_alpha,
|
|
l_cell_value TYPE zexcel_cell_value,
|
|
l_s_color TYPE abap_bool,
|
|
lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime,
|
|
lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
|
l_formula TYPE zexcel_cell_formula,
|
|
l_style TYPE zexcel_cell_style,
|
|
l_subtotalled TYPE flag,
|
|
l_text TYPE string,
|
|
ls_sort_values TYPE ts_sort_values,
|
|
ls_subtotal_rows TYPE ts_subtotal_rows,
|
|
l_sort_level TYPE int4,
|
|
ls_line TYPE ts_line,
|
|
lt_line TYPE tt_line,
|
|
l_line TYPE i,
|
|
l_guid TYPE guid_22,
|
|
l_tabix TYPE sy-tabix,
|
|
l_cells TYPE i,
|
|
l_count TYPE i,
|
|
l_table_row TYPE i.
|
|
|
|
FIELD-SYMBOLS: <fs_stab> TYPE ANY,
|
|
<fs_tab> TYPE STANDARD TABLE,
|
|
<fs_sfcat> TYPE zexcel_s_converter_fcat,
|
|
<fs_fldval> TYPE ANY,
|
|
<fs_sortval> TYPE ANY,
|
|
<fs_sortv> TYPE ts_sort_values,
|
|
<fs_cell_value> TYPE zexcel_cell_value.
|
|
|
|
ASSIGN wo_data->* TO <fs_tab> .
|
|
|
|
REFRESH: wt_sort_values,
|
|
wt_subtotal_rows.
|
|
|
|
DESCRIBE TABLE wt_fieldcatalog LINES l_cells.
|
|
DESCRIBE TABLE <fs_tab> LINES l_count.
|
|
l_cells = l_cells * l_count.
|
|
|
|
READ TABLE <fs_tab> ASSIGNING <fs_stab> INDEX 1.
|
|
IF sy-subrc = 0.
|
|
l_row_int = i_row_int + 1.
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
|
|
ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>.
|
|
ls_sort_values-fieldname = <fs_sfcat>-columnname.
|
|
ls_sort_values-row_int = l_row_int.
|
|
CREATE DATA ls_sort_values-value LIKE <fs_fldval>.
|
|
ASSIGN ls_sort_values-value->* TO <fs_sortval>.
|
|
<fs_sortval> = <fs_fldval>.
|
|
INSERT ls_sort_values INTO TABLE wt_sort_values.
|
|
ENDLOOP.
|
|
ENDIF.
|
|
l_row_int = i_row_int.
|
|
* First loop without formular only addtional rows with subtotal text.
|
|
LOOP AT <fs_tab> ASSIGNING <fs_stab>.
|
|
l_table_row = sy-tabix.
|
|
ADD 1 TO l_row_int. " 1 is for header row.
|
|
REFRESH lt_line.
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
|
|
l_col_int = i_col_int + <fs_sfcat>-position - 1.
|
|
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
|
|
* Now the cell values
|
|
ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>.
|
|
IF sy-subrc = 0.
|
|
READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname.
|
|
IF sy-subrc = 0.
|
|
ASSIGN <fs_sortv>-value->* TO <fs_sortval>.
|
|
IF <fs_sortval> <> <fs_fldval> OR <fs_sortv>-new = abap_true.
|
|
* First let's write the value as it has to appear.
|
|
CLEAR ls_line.
|
|
ls_line-text = create_text_subtotal( i_value = <fs_sortval>
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
ls_line-col_alpha = l_col_alpha.
|
|
ls_line-sort_level = <fs_sfcat>-sort_level.
|
|
ls_line-is_collapsed = <fs_sfcat>-is_collapsed.
|
|
ls_line-row_int_start = <fs_sortv>-row_int.
|
|
ls_line-columnname = <fs_sfcat>-columnname.
|
|
|
|
INSERT ls_line INTO TABLE lt_line.
|
|
* Now let's change the key
|
|
<fs_sortval> = <fs_fldval>.
|
|
<fs_sortv>-new = abap_false.
|
|
<fs_sortv>-row_int = l_row_int.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
* Now we must write the lines in correct sequence.
|
|
l_row_int_start = l_row_int.
|
|
SORT lt_line BY sort_level DESCENDING.
|
|
DESCRIBE TABLE lt_line LINES l_line.
|
|
LOOP AT lt_line INTO ls_line.
|
|
l_tabix = sy-tabix.
|
|
ls_subtotal_rows-row_int = l_row_int.
|
|
ls_subtotal_rows-row_int_start = ls_line-row_int_start.
|
|
ls_subtotal_rows-columnname = ls_line-columnname.
|
|
INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
|
|
|
|
wo_worksheet->set_cell( ip_column = ls_line-col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = ls_line-text
|
|
ip_abap_type = cl_abap_typedescr=>typekind_string
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = ls_line-columnname.
|
|
IF sy-subrc = 0.
|
|
IF l_line > l_tabix . " Only if we have more than 1 and subtotal does not change on lower level but on higher does
|
|
<fs_sortv>-new = abap_true.
|
|
ENDIF.
|
|
<fs_sortv>-row_int = l_row_int_start + l_line.
|
|
ENDIF.
|
|
l_sort_level = ls_line-sort_level.
|
|
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
|
|
lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
|
|
lo_row_dim->set_collapsed( ip_collapsed = ls_line-is_collapsed ) .
|
|
ADD 1 TO l_row_int.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
ADD 1 TO l_row_int.
|
|
REFRESH lt_line.
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat> WHERE is_subtotalled = abap_true.
|
|
l_col_int = i_col_int + <fs_sfcat>-position - 1.
|
|
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
|
|
READ TABLE wt_sort_values ASSIGNING <fs_sortv> WITH TABLE KEY fieldname = <fs_sfcat>-columnname.
|
|
IF sy-subrc = 0.
|
|
ASSIGN <fs_sortv>-value->* TO <fs_sortval>.
|
|
* First let's write the value as it has to appear.
|
|
CLEAR ls_line.
|
|
ls_line-text = create_text_subtotal( i_value = <fs_sortval>
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
ls_line-col_alpha = l_col_alpha.
|
|
ls_line-sort_level = <fs_sfcat>-sort_level.
|
|
ls_line-is_collapsed = <fs_sfcat>-is_collapsed.
|
|
ls_line-row_int_start = <fs_sortv>-row_int.
|
|
ls_line-columnname = <fs_sfcat>-columnname.
|
|
INSERT ls_line INTO TABLE lt_line.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
* Now we must write the lines in correct sequence.
|
|
l_row_int_start = l_row_int.
|
|
SORT lt_line BY sort_level DESCENDING.
|
|
DESCRIBE TABLE lt_line LINES l_line.
|
|
LOOP AT lt_line INTO ls_line.
|
|
ls_subtotal_rows-row_int = l_row_int.
|
|
ls_subtotal_rows-row_int_start = ls_line-row_int_start.
|
|
ls_subtotal_rows-columnname = ls_line-columnname.
|
|
INSERT ls_subtotal_rows INTO TABLE wt_subtotal_rows.
|
|
|
|
wo_worksheet->set_cell( ip_column = ls_line-col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = ls_line-text
|
|
ip_abap_type = cl_abap_typedescr=>typekind_string
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
|
|
l_sort_level = ls_line-sort_level.
|
|
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
|
|
lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
|
|
lo_row_dim->set_collapsed( ip_collapsed = ls_line-is_collapsed ) .
|
|
ADD 1 TO l_row_int.
|
|
ENDLOOP.
|
|
* Let's write the Grand total
|
|
l_sort_level = 0.
|
|
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
|
|
lo_row_dim->set_outline_level( ip_outline_level = l_sort_level ) .
|
|
lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
|
|
|
|
l_text = create_text_subtotal( i_value = 'Grand'(002)
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
|
|
l_col_alpha_start = zcl_excel_common=>convert_column2alpha( i_col_int ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha_start
|
|
ip_row = l_row_int
|
|
ip_value = l_text
|
|
ip_abap_type = cl_abap_typedescr=>typekind_string
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
|
|
* It is better to loop column by column second time around
|
|
* Second loop with formular and data.
|
|
LOOP AT wt_fieldcatalog ASSIGNING <fs_sfcat>.
|
|
l_row_int = i_row_int.
|
|
l_col_int = i_col_int + <fs_sfcat>-position - 1.
|
|
* Freeze panes
|
|
IF <fs_sfcat>-fix_column = abap_true.
|
|
ADD 1 TO r_freeze_col.
|
|
ENDIF.
|
|
l_s_color = abap_true.
|
|
l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ).
|
|
" First of all write column header
|
|
l_cell_value = <fs_sfcat>-scrtext_m.
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = l_cell_value
|
|
ip_abap_type = cl_abap_typedescr=>typekind_string
|
|
ip_style = <fs_sfcat>-style_hdr ).
|
|
ADD 1 TO l_row_int.
|
|
LOOP AT <fs_tab> ASSIGNING <fs_stab>.
|
|
l_table_row = sy-tabix.
|
|
* Now the cell values
|
|
ASSIGN COMPONENT <fs_sfcat>-columnname OF STRUCTURE <fs_stab> TO <fs_fldval>.
|
|
* Let's check for subtotal lines
|
|
DO.
|
|
READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int.
|
|
IF sy-subrc = 0.
|
|
IF <fs_sfcat>-is_subtotalled = abap_false AND
|
|
<fs_sfcat>-totals_function IS NOT INITIAL.
|
|
DO.
|
|
READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int.
|
|
IF sy-subrc = 0.
|
|
l_row_int_start = ls_subtotal_rows-row_int_start.
|
|
l_row_int_end = l_row_int - 1.
|
|
|
|
l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start
|
|
i_row_int_end = l_row_int_end
|
|
i_column = l_col_alpha
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_formula = l_formula
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
ADD 1 TO l_row_int.
|
|
ELSE.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDDO.
|
|
ELSE.
|
|
ADD 1 TO l_row_int.
|
|
ENDIF.
|
|
ELSE.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDDO.
|
|
lo_row_dim = wo_worksheet->get_row_dimension( ip_row = l_row_int ).
|
|
lo_row_dim->set_outline_level( ip_outline_level = ws_layout-max_subtotal_level ) .
|
|
lo_row_dim->set_collapsed( ip_collapsed = <fs_sfcat>-is_collapsed ) .
|
|
* Now let's write the cell values
|
|
IF ws_layout-is_stripped = abap_true AND l_s_color = abap_true.
|
|
l_style = get_color_style( i_row = l_table_row
|
|
i_fieldname = <fs_sfcat>-columnname
|
|
i_style = <fs_sfcat>-style_stripped ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = <fs_fldval>
|
|
ip_style = l_style ).
|
|
CLEAR l_s_color.
|
|
ELSE.
|
|
l_style = get_color_style( i_row = l_table_row
|
|
i_fieldname = <fs_sfcat>-columnname
|
|
i_style = <fs_sfcat>-style_normal ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_value = <fs_fldval>
|
|
ip_style = l_style ).
|
|
l_s_color = abap_true.
|
|
ENDIF.
|
|
READ TABLE wt_filter TRANSPORTING NO FIELDS WITH TABLE KEY rownumber = l_table_row
|
|
columnname = <fs_sfcat>-columnname.
|
|
IF sy-subrc = 0.
|
|
wo_worksheet->get_cell( EXPORTING
|
|
ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
IMPORTING
|
|
ep_value = l_cell_value ).
|
|
wo_autofilter->set_value( i_column = l_col_int
|
|
i_value = l_cell_value ).
|
|
ENDIF.
|
|
ADD 1 TO l_row_int.
|
|
ENDLOOP.
|
|
* Let's check for subtotal lines
|
|
DO.
|
|
READ TABLE wt_subtotal_rows TRANSPORTING NO FIELDS WITH TABLE KEY row_int = l_row_int.
|
|
IF sy-subrc = 0.
|
|
IF <fs_sfcat>-is_subtotalled = abap_false AND
|
|
<fs_sfcat>-totals_function IS NOT INITIAL.
|
|
DO.
|
|
READ TABLE wt_subtotal_rows INTO ls_subtotal_rows WITH TABLE KEY row_int = l_row_int.
|
|
IF sy-subrc = 0.
|
|
l_row_int_start = ls_subtotal_rows-row_int_start.
|
|
l_row_int_end = l_row_int - 1.
|
|
|
|
l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start
|
|
i_row_int_end = l_row_int_end
|
|
i_column = l_col_alpha
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_formula = l_formula
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
ADD 1 TO l_row_int.
|
|
ELSE.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDDO.
|
|
ELSE.
|
|
ADD 1 TO l_row_int.
|
|
ENDIF.
|
|
ELSE.
|
|
EXIT.
|
|
ENDIF.
|
|
ENDDO.
|
|
* Now let's check for Grand total
|
|
IF <fs_sfcat>-is_subtotalled = abap_false AND
|
|
<fs_sfcat>-totals_function IS NOT INITIAL.
|
|
l_row_int_start = i_row_int + 1.
|
|
l_row_int_end = l_row_int - 1.
|
|
|
|
l_formula = create_formular_subtotal( i_row_int_start = l_row_int_start
|
|
i_row_int_end = l_row_int_end
|
|
i_column = l_col_alpha
|
|
i_totals_function = <fs_sfcat>-totals_function ).
|
|
wo_worksheet->set_cell( ip_column = l_col_alpha
|
|
ip_row = l_row_int
|
|
ip_formula = l_formula
|
|
ip_style = <fs_sfcat>-style_subtotal ).
|
|
ENDIF.
|
|
* Now let's check for optimized
|
|
IF <fs_sfcat>-is_optimized = abap_true.
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_auto_size( ip_auto_size = abap_true ) .
|
|
ENDIF.
|
|
* Now let's check for visible
|
|
IF <fs_sfcat>-is_hidden = abap_true.
|
|
lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ).
|
|
lo_col_dim->set_visible( ip_visible = abap_false ) .
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="OPEN_FILE" VERSION="1" LANGU="E" DESCRIPT="Open excel file" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>method open_file.
|
|
data: l_bytecount type i,
|
|
lt_file type solix_tab,
|
|
l_dir type string,
|
|
l_sep type c.
|
|
|
|
field-symbols: <fs_data> type any table.
|
|
|
|
assign wo_data->* to <fs_data>.
|
|
|
|
* catch zcx_excel .
|
|
*endtry.
|
|
if wo_excel is bound.
|
|
get_file( importing e_bytecount = l_bytecount
|
|
et_file = lt_file ) .
|
|
|
|
l_dir = create_path( ) .
|
|
|
|
cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount
|
|
filename = l_dir
|
|
filetype = 'BIN'
|
|
changing data_tab = lt_file ).
|
|
cl_gui_frontend_services=>execute(
|
|
exporting
|
|
document = l_dir
|
|
* application =
|
|
* parameter =
|
|
* default_directory =
|
|
* maximized =
|
|
* minimized =
|
|
* synchronous =
|
|
* operation = 'OPEN'
|
|
exceptions
|
|
cntl_error = 1
|
|
error_no_gui = 2
|
|
bad_parameter = 3
|
|
file_not_found = 4
|
|
path_not_found = 5
|
|
file_extension_unknown = 6
|
|
error_execute_failed = 7
|
|
synchronous_failed = 8
|
|
not_supported_by_gui = 9
|
|
).
|
|
if sy-subrc <> 0.
|
|
message id sy-msgid type sy-msgty number sy-msgno
|
|
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
endif.
|
|
|
|
endif.
|
|
|
|
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_AUTOFILTER_AREA" VERSION="1" LANGU="E" DESCRIPT="Create autofilter" EXPOSURE="0" STATE="1" EDITORDER="9 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120313" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>METHOD set_autofilter_area.
|
|
DATA: ls_area TYPE zexcel_s_autofilter_area,
|
|
l_lines TYPE i,
|
|
lt_values TYPE zexcel_t_autofilter_values,
|
|
ls_values TYPE zexcel_s_autofilter_values.
|
|
|
|
* Let's check for filter.
|
|
IF wo_autofilter IS BOUND.
|
|
ls_area-row_start = 1.
|
|
lt_values = wo_autofilter->get_values( ) .
|
|
SORT lt_values BY column ASCENDING.
|
|
DESCRIBE TABLE lt_values LINES l_lines.
|
|
READ TABLE lt_values INTO ls_values INDEX 1.
|
|
IF sy-subrc = 0.
|
|
ls_area-col_start = ls_values-column.
|
|
ENDIF.
|
|
READ TABLE lt_values INTO ls_values INDEX l_lines.
|
|
IF sy-subrc = 0.
|
|
ls_area-col_end = ls_values-column.
|
|
ENDIF.
|
|
wo_autofilter->set_filter_area( is_area = ls_area ) .
|
|
ENDIF.
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_CELL_FORMAT" VERSION="1" LANGU="E" DESCRIPT="SET CELL FORMAT" EXPOSURE="0" STATE="1" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_CELL_FORMAT" SCONAME="I_INTTYPE" VERSION="1" LANGU="E" DESCRIPT="ABAP data type (C,D,N,...)" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INTTYPE"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_CELL_FORMAT" SCONAME="I_DECIMALS" VERSION="1" LANGU="E" DESCRIPT="Byte Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="INT1"/>
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_CELL_FORMAT" SCONAME="R_FORMAT" VERSION="1" LANGU="E" DESCRIPT="Style identifier" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120127" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_NUMBER_FORMAT"/>
|
|
<source>method set_cell_format.
|
|
data: l_format type zexcel_number_format.
|
|
|
|
clear r_format.
|
|
case i_inttype.
|
|
when cl_abap_typedescr=>typekind_date.
|
|
r_format = wo_worksheet->get_default_excel_date_format( ).
|
|
when cl_abap_typedescr=>typekind_time.
|
|
r_format = zcl_excel_style_number_format=>c_format_date_time6.
|
|
when cl_abap_typedescr=>typekind_float or cl_abap_typedescr=>typekind_packed.
|
|
if i_decimals > 0 .
|
|
l_format = '#,##0.'.
|
|
do i_decimals times.
|
|
concatenate l_format '0' into l_format.
|
|
enddo.
|
|
r_format = l_format.
|
|
endif.
|
|
endcase.
|
|
endmethod.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="SET_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Set fieldcatalog from table" EXPOSURE="0" STATE="1" EDITORDER="23 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120112" CHANGEDBY="RTURNHEIM" CHANGEDON="20120313" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<source>METHOD set_fieldcatalog.
|
|
DATA: lr_data TYPE REF TO data,
|
|
lo_structdescr TYPE REF TO cl_abap_structdescr,
|
|
lo_elemdescr TYPE REF TO cl_abap_elemdescr,
|
|
lt_dfies TYPE ddfields,
|
|
ls_dfies TYPE dfies,
|
|
lv_sytabix TYPE sytabix,
|
|
lt_components TYPE abap_component_tab,
|
|
ls_component LIKE LINE OF lt_components.
|
|
|
|
DATA: ls_fcat TYPE zexcel_s_converter_fcat.
|
|
|
|
|
|
FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE.
|
|
|
|
ASSIGN wo_data->* TO <fs_tab> .
|
|
|
|
CREATE DATA lr_data LIKE LINE OF <fs_tab>.
|
|
|
|
lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
|
|
|
|
"for DDIC structure get the info directly
|
|
IF lo_structdescr->is_ddic_type( ) = abap_true.
|
|
lt_dfies = lo_structdescr->get_ddic_field_list( ).
|
|
|
|
LOOP AT lt_dfies INTO ls_dfies.
|
|
MOVE-CORRESPONDING ls_dfies TO ls_fcat.
|
|
ls_fcat-columnname = ls_dfies-fieldname.
|
|
INSERT ls_fcat INTO TABLE wt_fieldcatalog.
|
|
ENDLOOP.
|
|
ELSE.
|
|
"if structure is not DDIC check components
|
|
lt_components = lo_structdescr->get_components( ).
|
|
LOOP AT lt_components INTO ls_component.
|
|
lv_sytabix = sy-tabix.
|
|
CLEAR ls_fcat.
|
|
lo_elemdescr ?= ls_component-type.
|
|
"component is DDIC
|
|
IF lo_elemdescr->is_ddic_type( ) = abap_true.
|
|
ls_dfies = lo_elemdescr->get_ddic_field( ).
|
|
MOVE-CORRESPONDING ls_dfies TO ls_fcat.
|
|
ls_fcat-columnname = ls_component-name.
|
|
ELSE.
|
|
"component is not DDIC -> return minimum information required
|
|
ls_fcat-fieldname = ls_component-name.
|
|
ls_fcat-columnname = ls_component-name.
|
|
ls_fcat-scrtext_m = ls_component-name.
|
|
ENDIF.
|
|
ls_fcat-position = lv_sytabix.
|
|
INSERT ls_fcat INTO TABLE wt_fieldcatalog.
|
|
ENDLOOP.
|
|
ENDIF.
|
|
|
|
clean_fieldcatalog( ).
|
|
|
|
ENDMETHOD.</source>
|
|
</method>
|
|
<method CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WRITE_FILE" VERSION="1" LANGU="E" DESCRIPT="Write excel file" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120113" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
|
<parameter CLSNAME="ZCL_EXCEL_CONVERTER" CMPNAME="WRITE_FILE" SCONAME="I_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="RTURNHEIM" CREATEDON="20120113" CHANGEDBY="RTURNHEIM" CHANGEDON="20120114" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING" PAROPTIONL="X"/>
|
|
<source>method write_file.
|
|
data: l_bytecount type i,
|
|
lt_file type solix_tab,
|
|
l_dir type string.
|
|
|
|
field-symbols: <fs_data> type any table.
|
|
|
|
assign wo_data->* to <fs_data>.
|
|
|
|
* catch zcx_excel .
|
|
*endtry.
|
|
if wo_excel is bound.
|
|
get_file( importing e_bytecount = l_bytecount
|
|
et_file = lt_file ) .
|
|
if i_path is initial.
|
|
l_dir = create_path( ) .
|
|
else.
|
|
l_dir = i_path.
|
|
endif.
|
|
cl_gui_frontend_services=>gui_download( exporting bin_filesize = l_bytecount
|
|
filename = l_dir
|
|
filetype = 'BIN'
|
|
changing data_tab = lt_file ).
|
|
endif.
|
|
endmethod.</source>
|
|
</method>
|
|
</CLAS>
|