Fixed #125 for testing.

Created ABAPUnit test class for ZCL_EXCEL_COMMON class.

git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@228 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
Gregor Wolf 2011-12-06 22:16:21 +00:00
parent fbb1576cea
commit f81f987a36

View File

@ -1,448 +1,519 @@
<?xml version="1.0" encoding="utf-16"?> <?xml version="1.0" encoding="utf-16"?>
<CLAS CLSNAME="ZCL_EXCEL_COMMON" VERSION="1" LANGU="E" DESCRIPT="Static common methods" UUID="E750494D16947660E1000000C0A8FA28" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" AUTHOR="FEMIA" CREATEDON="20100710" CHANGEDBY="FEMIA" CHANGEDON="20110528" CHGDANYON="00000000" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="702" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 "> <CLAS CLSNAME="ZCL_EXCEL_COMMON" VERSION="1" LANGU="E" DESCRIPT="Static common methods" UUID="E750494D16947660E1000000C0A8FA28" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" AUTHOR="FEMIA" CREATEDON="20100710" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" CHGDANYON="00000000" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="702" CLSBCCAT="00" WITH_UNIT_TESTS="X" DURATION_TYPE="0 " RISK_LEVEL="0 ">
<publicSection>class ZCL_EXCEL_COMMON definition <publicSection>class ZCL_EXCEL_COMMON definition
public public
final final
create public . create public .
*&quot;* public components of class ZCL_EXCEL_COMMON public section.
*&quot;* do not include other source files here!!! *&quot;* public components of class ZCL_EXCEL_COMMON
public section. *&quot;* do not include other source files here!!!
constants C_EXCEL_BASELINE_DATE type D value &apos;19000101&apos;. &quot;#EC NOTEXT constants C_EXCEL_BASELINE_DATE type D value &apos;19000101&apos;. &quot;#EC NOTEXT
class-data C_EXCEL_NUMFMT_OFFSET type INT1 value 164. &quot;#EC NOTEXT . class-data C_EXCEL_NUMFMT_OFFSET type INT1 value 164. &quot;#EC NOTEXT .
constants C_EXCEL_SHEET_MAX_COL type INT4 value 16384. &quot;#EC NOTEXT constants C_EXCEL_SHEET_MAX_COL type INT4 value 16384. &quot;#EC NOTEXT
constants C_EXCEL_SHEET_MIN_COL type INT4 value 1. &quot;#EC NOTEXT constants C_EXCEL_SHEET_MIN_COL type INT4 value 1. &quot;#EC NOTEXT
class-data C_SPRAS_EN type SPRAS value &apos;E&apos;. &quot;#EC NOTEXT . class-data C_SPRAS_EN type SPRAS value &apos;E&apos;. &quot;#EC NOTEXT .
class-data O_CONV type ref to CL_ABAP_CONV_OUT_CE . class-data O_CONV type ref to CL_ABAP_CONV_OUT_CE .
class-methods CONVERT_COLUMN2ALPHA class-methods CONVERT_COLUMN2ALPHA
importing importing
!IP_COLUMN type ZEXCEL_CELL_COLUMN !IP_COLUMN type ZEXCEL_CELL_COLUMN
returning returning
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA . value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA .
class-methods CONVERT_COLUMN2INT class-methods CONVERT_COLUMN2INT
importing importing
!IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA !IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
returning returning
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN . value(EP_COLUMN) type ZEXCEL_CELL_COLUMN .
class-methods CONVERT_COLUMNROW2COLUMN_A_ROW class-methods CONVERT_COLUMNROW2COLUMN_A_ROW
importing importing
!I_COLUMNROW type STRING !I_COLUMNROW type STRING
exporting exporting
!E_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA !E_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
!E_ROW type ZEXCEL_CELL_ROW . !E_ROW type ZEXCEL_CELL_ROW .
class-methods DATE_TO_EXCEL_STRING class-methods DATE_TO_EXCEL_STRING
importing importing
!IP_VALUE type D !IP_VALUE type D
returning returning
value(EP_VALUE) type ZEXCEL_CELL_VALUE . value(EP_VALUE) type ZEXCEL_CELL_VALUE .
class-methods ENCRYPT_PASSWORD class-methods ENCRYPT_PASSWORD
importing importing
!I_PWD type ZEXCEL_AES_PASSWORD !I_PWD type ZEXCEL_AES_PASSWORD
returning returning
value(R_ENCRYPTED_PWD) type ZEXCEL_AES_PASSWORD . value(R_ENCRYPTED_PWD) type ZEXCEL_AES_PASSWORD .
class-methods ESCAPE_STRING class-methods ESCAPE_STRING
importing importing
!IP_VALUE type STRING !IP_VALUE type STRING
returning returning
value(EP_ESCAPED_VALUE) type STRING . value(EP_ESCAPED_VALUE) type STRING .
class-methods EXCEL_STRING_TO_DATE class-methods EXCEL_STRING_TO_DATE
importing importing
!IP_VALUE type ZEXCEL_CELL_VALUE !IP_VALUE type ZEXCEL_CELL_VALUE
returning returning
value(EP_VALUE) type D . value(EP_VALUE) type D .
class-methods EXCEL_STRING_TO_TIME class-methods EXCEL_STRING_TO_TIME
importing importing
!IP_VALUE type ZEXCEL_CELL_VALUE !IP_VALUE type ZEXCEL_CELL_VALUE
returning returning
value(EP_VALUE) type T . value(EP_VALUE) type T .
class-methods GET_FIELDCATALOG class-methods GET_FIELDCATALOG
importing importing
!IP_TABLE type STANDARD TABLE !IP_TABLE type STANDARD TABLE
returning returning
value(EP_FIELDCATALOG) type ZEXCEL_T_FIELDCATALOG . value(EP_FIELDCATALOG) type ZEXCEL_T_FIELDCATALOG .
class-methods NUMBER_TO_EXCEL_STRING class-methods NUMBER_TO_EXCEL_STRING
importing importing
value(IP_VALUE) type NUMERIC value(IP_VALUE) type NUMERIC
returning returning
value(EP_VALUE) type ZEXCEL_CELL_VALUE . value(EP_VALUE) type ZEXCEL_CELL_VALUE .
class-methods TIME_TO_EXCEL_STRING class-methods TIME_TO_EXCEL_STRING
importing importing
!IP_VALUE type T !IP_VALUE type T
returning returning
value(EP_VALUE) type ZEXCEL_CELL_VALUE .</publicSection> value(EP_VALUE) type ZEXCEL_CELL_VALUE .</publicSection>
<protectedSection>*&quot;* protected components of class ZCL_EXCEL_COMMON <protectedSection>*&quot;* protected components of class ZCL_EXCEL_COMMON
*&quot;* do not include other source files here!!! *&quot;* do not include other source files here!!!
protected section.</protectedSection> protected section.</protectedSection>
<privateSection>*&quot;* private components of class ZCL_EXCEL_COMMON <privateSection>*&quot;* private components of class ZCL_EXCEL_COMMON
*&quot;* do not include other source files here!!! *&quot;* do not include other source files here!!!
private section. private section.
class-data C_EXCEL_COL_MODULE type INT2 value 64. &quot;#EC NOTEXT . class-data C_EXCEL_COL_MODULE type INT2 value 64. &quot;#EC NOTEXT .
class-methods CHAR2HEX class-methods CHAR2HEX
importing importing
!I_CHAR type CHAR1 !I_CHAR type CHAR1
returning returning
value(R_HEX) type ZEXCEL_PWD_HASH . value(R_HEX) type ZEXCEL_PWD_HASH .
class-methods SHL01 class-methods SHL01
importing importing
!I_PWD_HASH type ZEXCEL_PWD_HASH !I_PWD_HASH type ZEXCEL_PWD_HASH
returning returning
value(R_PWD_HASH) type ZEXCEL_PWD_HASH . value(R_PWD_HASH) type ZEXCEL_PWD_HASH .
class-methods SHR14 class-methods SHR14
importing importing
!I_PWD_HASH type ZEXCEL_PWD_HASH !I_PWD_HASH type ZEXCEL_PWD_HASH
returning returning
value(R_PWD_HASH) type ZEXCEL_PWD_HASH .</privateSection> value(R_PWD_HASH) type ZEXCEL_PWD_HASH .</privateSection>
<localImplementation>*&quot;* local class implementation for public class <localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of *&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation> *&quot;* local helper classes</localImplementation>
<localTypes>*&quot;* use this source file for any type declarations (class <localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method *&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature</localTypes> *&quot;* implementation or private method&apos;s signature</localTypes>
<localMacros>*&quot;* use this source file for any macro definitions you need <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros> *&quot;* in the implementation part of the class</localMacros>
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_BASELINE_DATE" VERSION="1" LANGU="E" DESCRIPT="Excel baseline date" EXPOSURE="2" STATE="1" EDITORDER="1 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="2" ATTVALUE="&apos;19000101&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="D" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> <localTestClasses>*----------------------------------------------------------------------*
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_COL_MODULE" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="0" STATE="1" EDITORDER="2 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="1" ATTVALUE="64" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT2" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> * CLASS zcl_Excel_Common_Test DEFINITION
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_NUMFMT_OFFSET" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="3 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="1" ATTVALUE="164" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> *----------------------------------------------------------------------*
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_SHEET_MAX_COL" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="4 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="2" ATTVALUE="16384" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT4" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> *
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_SHEET_MIN_COL" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="5 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="2" ATTVALUE="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT4" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> *----------------------------------------------------------------------*
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_SPRAS_EN" VERSION="1" LANGU="E" DESCRIPT="Language Key" EXPOSURE="2" STATE="1" EDITORDER="6 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="1" ATTVALUE="&apos;E&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SPRAS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> CLASS zcl_excel_common_test DEFINITION FOR TESTING
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="O_CONV" VERSION="1" LANGU="E" DESCRIPT="Code Page and Endian Conversion (System Format -&gt; External)" EXPOSURE="2" STATE="1" EDITORDER="7 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ABAP_CONV_OUT_CE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/> DURATION SHORT
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" VERSION="1" LANGU="E" DESCRIPT="Character to Hexadecimal" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> RISK LEVEL HARMLESS
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" SCONAME="I_CHAR" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR1"/> .
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" SCONAME="R_HEX" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/> *?&lt;asx:abap xmlns:asx=&quot;http://www.sap.com/abapxml&quot; version=&quot;1.0&quot;&gt;
<source>method CHAR2HEX. *?&lt;asx:values&gt;
*?&lt;TESTCLASS_OPTIONS&gt;
IF o_conv IS NOT BOUND. *?&lt;TEST_CLASS&gt;zcl_Excel_Common_Test
o_conv = cl_abap_conv_out_ce=&gt;create( endian = &apos;L&apos; *?&lt;/TEST_CLASS&gt;
ignore_cerr = &apos;X&apos; *?&lt;TEST_MEMBER&gt;f_Cut
replacement = &apos;#&apos; ). *?&lt;/TEST_MEMBER&gt;
ENDIF. *?&lt;OBJECT_UNDER_TEST&gt;ZCL_EXCEL_COMMON
*?&lt;/OBJECT_UNDER_TEST&gt;
CALL METHOD o_conv-&gt;reset( ). *?&lt;OBJECT_IS_LOCAL/&gt;
CALL METHOD o_conv-&gt;write( data = i_char ). *?&lt;GENERATE_FIXTURE/&gt;
r_hex+1 = o_conv-&gt;get_buffer( ). &quot; x&apos;65&apos; must be x&apos;0065&apos; *?&lt;GENERATE_CLASS_FIXTURE/&gt;
*?&lt;GENERATE_INVOCATION/&gt;
endmethod.</source> *?&lt;GENERATE_ASSERT_EQUAL&gt;X
</method> *?&lt;/GENERATE_ASSERT_EQUAL&gt;
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" VERSION="1" LANGU="E" DESCRIPT="Convert column indicator to Alpha" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> *?&lt;/TESTCLASS_OPTIONS&gt;
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/> *?&lt;/asx:values&gt;
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" SCONAME="EP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/> *?&lt;/asx:abap&gt;
<source>method CONVERT_COLUMN2ALPHA. PRIVATE SECTION.
* ================
DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce, DATA:
lv_uccpi TYPE i, f_cut TYPE REF TO zcl_excel_common. &quot;class under test
lv_text TYPE sychar02,
lv_module TYPE int4, METHODS: convert_columnrow2column_a_row FOR TESTING.
lv_column TYPE zexcel_cell_column. ENDCLASS. &quot;zcl_Excel_Common_Test
lv_column = ip_column.
WHILE lv_column GT 0. *----------------------------------------------------------------------*
lv_module = ( lv_column - 1 ) MOD 26. * CLASS zcl_Excel_Common_Test IMPLEMENTATION
lv_uccpi = 65 + lv_module. *----------------------------------------------------------------------*
*
lv_column = ( lv_column - lv_module ) / 26. *----------------------------------------------------------------------*
CLASS zcl_excel_common_test IMPLEMENTATION.
lv_text = cl_abap_conv_in_ce=&gt;uccpi( lv_uccpi ). * ===========================================
CONCATENATE lv_text ep_column INTO ep_column.
ENDWHILE. METHOD convert_columnrow2column_a_row.
* ======================================
endmethod.</source> DATA: e_column TYPE zexcel_cell_column_alpha,
</method> e_row TYPE zexcel_cell_row.
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" VERSION="1" LANGU="E" DESCRIPT="Convert column indicator to Integer" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> CALL METHOD zcl_excel_common=&gt;convert_columnrow2column_a_row
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/> EXPORTING
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" SCONAME="EP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/> i_columnrow = &apos;AZ4&apos;
<source>METHOD convert_column2int. IMPORTING
e_column = e_column
DATA: lv_uccpi TYPE i, e_row = e_row.
lv_factor TYPE i,
lv_offset TYPE i, cl_abap_unit_assert=&gt;assert_equals(
lv_char TYPE c, act = e_column
lv_column TYPE ZEXCEL_CELL_COLUMN_ALPHA. exp = &apos;AZ&apos; &quot;&lt;--- please adapt expected value
msg = &apos;Column value is wrong&apos;
* Upper case ).
lv_column = ip_column. cl_abap_unit_assert=&gt;assert_equals(
TRANSLATE lv_column TO UPPER CASE. act = e_row
CONDENSE lv_column NO-GAPS. exp = &apos;4&apos; &quot;&lt;--- please adapt expected value
msg = &apos;Row value is wrong&apos;
* Get string lenght and align to right ).
lv_offset = 3 - STRLEN( lv_column ). ENDMETHOD. &quot;convert_Columnrow2column_A_Row
SHIFT lv_column RIGHT BY lv_offset PLACES.
* Claculate column position
DO 3 TIMES. ENDCLASS. &quot;zcl_Excel_Common_Test</localTestClasses>
lv_offset = sy-index - 1. <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_BASELINE_DATE" VERSION="1" LANGU="E" DESCRIPT="Excel baseline date" EXPOSURE="2" STATE="1" EDITORDER="1 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="2" ATTVALUE="&apos;19000101&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="D" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
lv_char = lv_column+lv_offset(1). <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_COL_MODULE" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="0" STATE="1" EDITORDER="2 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="1" ATTVALUE="64" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT2" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
if lv_char IS INITIAL. <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_NUMFMT_OFFSET" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="3 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="1" ATTVALUE="164" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT1" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
CONTINUE. <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_SHEET_MAX_COL" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="4 " AUTHOR="BCUSER" CREATEDON="20101223" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="2" ATTVALUE="16384" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT4" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
ENDIF. <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_EXCEL_SHEET_MIN_COL" VERSION="1" LANGU="E" DESCRIPT="2 byte integer (signed)" EXPOSURE="2" STATE="1" EDITORDER="5 " AUTHOR="BCUSER" CREATEDON="20101223" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="2" ATTVALUE="1" ATTEXPVIRT="0" TYPTYPE="1" TYPE="INT4" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
lv_uccpi = cl_abap_conv_out_ce=&gt;uccpi( lv_char ). <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="C_SPRAS_EN" VERSION="1" LANGU="E" DESCRIPT="Language Key" EXPOSURE="2" STATE="1" EDITORDER="6 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="1" ATTVALUE="&apos;E&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SPRAS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
lv_factor = 26 ** ( 3 - sy-index ). <attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="O_CONV" VERSION="1" LANGU="E" DESCRIPT="Code Page and Endian Conversion (System Format -&gt; External)" EXPOSURE="2" STATE="1" EDITORDER="7 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" ATTDECLTYP="1" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_ABAP_CONV_OUT_CE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
ep_column = ep_column + ( lv_uccpi MOD zcl_excel_common=&gt;c_excel_col_module ) * lv_factor. <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" VERSION="1" LANGU="E" DESCRIPT="Character to Hexadecimal" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
ENDDO. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" SCONAME="I_CHAR" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="CHAR1"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CHAR2HEX" SCONAME="R_HEX" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
ENDMETHOD.</source> <source>method CHAR2HEX.
</method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" VERSION="1" LANGU="E" DESCRIPT="Convert ColumnRow i.e. AB34 to AB and 34" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> IF o_conv IS NOT BOUND.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="I_COLUMNROW" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/> o_conv = cl_abap_conv_out_ce=&gt;create( endian = &apos;L&apos;
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="E_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/> ignore_cerr = &apos;X&apos;
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="E_ROW" VERSION="1" LANGU="E" DESCRIPT="Natural number" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/> replacement = &apos;#&apos; ).
<source>method CONVERT_COLUMNROW2COLUMN_A_ROW. ENDIF.
DATA: width TYPE i,
col_width TYPE i, CALL METHOD o_conv-&gt;reset( ).
row_str TYPE string. CALL METHOD o_conv-&gt;write( data = i_char ).
width = strlen( i_columnrow ). r_hex+1 = o_conv-&gt;get_buffer( ). &quot; x&apos;65&apos; must be x&apos;0065&apos;
col_width = 2.
e_column = i_columnrow. endmethod.</source>
WHILE e_column CA &apos;0123456789&apos;. </method>
col_width = col_width - 1. <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" VERSION="1" LANGU="E" DESCRIPT="Convert column indicator to Alpha" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
e_column = i_columnrow(col_width). <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
ENDWHILE. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2ALPHA" SCONAME="EP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
width = width - col_width. <source>method CONVERT_COLUMN2ALPHA.
row_str = i_columnrow+col_width(width).
e_row = row_str. DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce,
endmethod.</source> lv_uccpi TYPE i,
</method> lv_text TYPE sychar02,
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Convert date from SAP format to Excel" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> lv_module TYPE int4,
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="D"/> lv_column TYPE zexcel_cell_column.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<source>method DATE_TO_EXCEL_STRING. lv_column = ip_column.
DATA: lv_date_diff TYPE i. WHILE lv_column GT 0.
lv_module = ( lv_column - 1 ) MOD 26.
CHECK ip_value IS NOT INITIAL. lv_uccpi = 65 + lv_module.
lv_date_diff = ip_value - c_excel_baseline_date + 2.
ep_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = lv_date_diff ). lv_column = ( lv_column - lv_module ) / 26.
endmethod.</source>
</method> lv_text = cl_abap_conv_in_ce=&gt;uccpi( lv_uccpi ).
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" VERSION="1" LANGU="E" DESCRIPT="Encrypt password" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> CONCATENATE lv_text ep_column INTO ep_column.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" SCONAME="I_PWD" VERSION="1" LANGU="E" DESCRIPT="AES Password" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_AES_PASSWORD"/> ENDWHILE.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" SCONAME="R_ENCRYPTED_PWD" VERSION="1" LANGU="E" DESCRIPT="AES Password" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_AES_PASSWORD"/>
<source>method ENCRYPT_PASSWORD. endmethod.</source>
</method>
DATA lv_curr_offset TYPE i. <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" VERSION="1" LANGU="E" DESCRIPT="Convert column indicator to Integer" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
DATA lv_curr_char TYPE c LENGTH 1. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
DATA lv_curr_hex TYPE zexcel_pwd_hash. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMN2INT" SCONAME="EP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN"/>
DATA lv_pwd_len TYPE zexcel_pwd_hash. <source>method CONVERT_COLUMN2INT.
DATA lv_pwd_hash TYPE zexcel_pwd_hash.
DATA: lv_uccpi TYPE i,
CONSTANTS: lv_factor TYPE i,
lv_0x7fff TYPE zexcel_pwd_hash VALUE &apos;7FFF&apos;, lv_offset TYPE i,
lv_0x0001 TYPE zexcel_pwd_hash VALUE &apos;0001&apos;, lv_char TYPE c,
lv_0xce4b TYPE zexcel_pwd_hash VALUE &apos;CE4B&apos;. lv_column TYPE ZEXCEL_CELL_COLUMN_ALPHA.
DATA lv_pwd TYPE zexcel_aes_password. * Upper case
lv_column = ip_column.
lv_pwd = i_pwd(15). TRANSLATE lv_column TO UPPER CASE.
CONDENSE lv_column NO-GAPS.
lv_pwd_len = STRLEN( lv_pwd ).
lv_curr_offset = lv_pwd_len - 1. * Get string lenght and align to right
lv_offset = 3 - STRLEN( lv_column ).
WHILE lv_curr_offset GE 0.
SHIFT lv_column RIGHT BY lv_offset PLACES.
lv_curr_char = lv_pwd+lv_curr_offset(1).
lv_curr_hex = char2hex( lv_curr_char ). * Claculate column position
DO 3 TIMES.
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). lv_offset = sy-index - 1.
lv_char = lv_column+lv_offset(1).
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex. if lv_char IS INITIAL.
SUBTRACT 1 FROM lv_curr_offset. CONTINUE.
ENDWHILE. ENDIF.
lv_uccpi = cl_abap_conv_out_ce=&gt;uccpi( lv_char ).
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ). lv_factor = 26 ** ( 3 - sy-index ).
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b. ep_column = ep_column + ( lv_uccpi MOD zcl_excel_common=&gt;c_excel_col_module ) * lv_factor.
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len. ENDDO.
WRITE lv_pwd_hash TO r_encrypted_pwd. endmethod.</source>
</method>
endmethod.</source> <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" VERSION="1" LANGU="E" DESCRIPT="Convert ColumnRow i.e. AB34 to AB and 34" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
</method> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="I_COLUMNROW" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" VERSION="1" LANGU="E" DESCRIPT="Escape a string" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="E_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="CONVERT_COLUMNROW2COLUMN_A_ROW" SCONAME="E_ROW" VERSION="1" LANGU="E" DESCRIPT="Natural number" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="1" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" SCONAME="EP_ESCAPED_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/> <source>method CONVERT_COLUMNROW2COLUMN_A_ROW.
<source>method ESCAPE_STRING. DATA: width TYPE i,
DATA lv_value TYPE string. col_width TYPE i,
row_str TYPE string.
lv_value = ip_value. width = strlen( i_columnrow ).
col_width = width.
REPLACE ALL OCCURRENCES OF `&apos;` IN lv_value WITH `&apos;&apos;`. e_column = i_columnrow.
WHILE e_column CA &apos;0123456789&apos;.
IF lv_value CP &apos;* *&apos;. col_width = col_width - 1.
CONCATENATE `&apos;` lv_value `&apos;` INTO lv_value . e_column = i_columnrow(col_width).
ENDIF. ENDWHILE.
width = width - col_width.
ep_escaped_value = lv_value. row_str = i_columnrow+col_width(width).
e_row = row_str.
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" VERSION="1" LANGU="E" DESCRIPT="Convert date from Excel format to SAP" EXPOSURE="2" STATE="1" EDITORDER="8 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Convert date from SAP format to Excel" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="D"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Date" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="D"/> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="DATE_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<source>method EXCEL_STRING_TO_DATE. <source>method DATE_TO_EXCEL_STRING.
DATA: lv_date_int TYPE i. DATA: lv_date_diff TYPE i.
TRY . CHECK ip_value IS NOT INITIAL.
lv_date_int = ip_value. lv_date_diff = ip_value - c_excel_baseline_date + 2.
ep_value = lv_date_int + c_excel_baseline_date - 2. ep_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = lv_date_diff ).
CATCH cx_sy_conversion_error. endmethod.</source>
CLEAR ep_value. </method>
ENDTRY. <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" VERSION="1" LANGU="E" DESCRIPT="Encrypt password" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
endmethod.</source> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" SCONAME="I_PWD" VERSION="1" LANGU="E" DESCRIPT="AES Password" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_AES_PASSWORD"/>
</method> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ENCRYPT_PASSWORD" SCONAME="R_ENCRYPTED_PWD" VERSION="1" LANGU="E" DESCRIPT="AES Password" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_AES_PASSWORD"/>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" VERSION="1" LANGU="E" DESCRIPT="Convert time from Excel format to SAP" EXPOSURE="2" STATE="1" EDITORDER="9 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> <source>method ENCRYPT_PASSWORD.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Time" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T"/> DATA lv_curr_offset TYPE i.
<source>method EXCEL_STRING_TO_TIME. DATA lv_curr_char TYPE c LENGTH 1.
DATA: lv_seconds_in_day TYPE i, DATA lv_curr_hex TYPE zexcel_pwd_hash.
lv_day_fraction TYPE f, DATA lv_pwd_len TYPE zexcel_pwd_hash.
lc_seconds_in_day TYPE i VALUE 86400. DATA lv_pwd_hash TYPE zexcel_pwd_hash.
TRY. CONSTANTS:
lv_0x7fff TYPE zexcel_pwd_hash VALUE &apos;7FFF&apos;,
lv_day_fraction = ip_value. lv_0x0001 TYPE zexcel_pwd_hash VALUE &apos;0001&apos;,
lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day. lv_0xce4b TYPE zexcel_pwd_hash VALUE &apos;CE4B&apos;.
ep_value = lv_seconds_in_day. DATA lv_pwd TYPE zexcel_aes_password.
CATCH cx_sy_conversion_error. lv_pwd = i_pwd(15).
CLEAR ep_value.
ENDTRY. lv_pwd_len = STRLEN( lv_pwd ).
endmethod.</source> lv_curr_offset = lv_pwd_len - 1.
</method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Creates field catalog for BIND_TABLE based on internal table" EXPOSURE="2" STATE="1" EDITORDER="10 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> WHILE lv_curr_offset GE 0.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="EP_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Table binding field catalog" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_FIELDCATALOG"/> lv_curr_char = lv_pwd+lv_curr_offset(1).
<source>METHOD get_fieldcatalog. lv_curr_hex = char2hex( lv_curr_char ).
DATA: lr_data TYPE REF TO data, lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
lo_structdescr TYPE REF TO cl_abap_structdescr,
lo_elemdescr TYPE REF TO cl_abap_elemdescr, lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex.
lt_dfies TYPE ddfields, SUBTRACT 1 FROM lv_curr_offset.
ls_dfies TYPE dfies, ENDWHILE.
lv_sytabix TYPE sytabix,
ls_fieldcatalog TYPE zexcel_s_fieldcatalog, lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
lt_components TYPE abap_component_tab, lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b.
ls_component LIKE LINE OF lt_components. lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len.
CREATE DATA lr_data LIKE LINE OF ip_table. WRITE lv_pwd_hash TO r_encrypted_pwd.
lo_structdescr ?= cl_abap_structdescr=&gt;describe_by_data_ref( lr_data ). endmethod.</source>
</method>
&quot;for DDIC structure get the info directly <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" VERSION="1" LANGU="E" DESCRIPT="Escape a string" EXPOSURE="2" STATE="1" EDITORDER="7 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101223" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
IF lo_structdescr-&gt;is_ddic_type( ) = abap_true. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101223" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
lt_dfies = lo_structdescr-&gt;get_ddic_field_list( ). <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="ESCAPE_STRING" SCONAME="EP_ESCAPED_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101223" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
<source>method ESCAPE_STRING.
LOOP AT lt_dfies INTO ls_dfies. DATA lv_value TYPE string.
CLEAR ls_fieldcatalog.
MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog. lv_value = ip_value.
APPEND ls_fieldcatalog TO ep_fieldcatalog.
ENDLOOP. REPLACE ALL OCCURRENCES OF `&apos;` IN lv_value WITH `&apos;&apos;`.
ELSE.
&quot;if structure is not DDIC check components IF lv_value CP &apos;* *&apos;.
lt_components = lo_structdescr-&gt;get_components( ). CONCATENATE `&apos;` lv_value `&apos;` INTO lv_value .
LOOP AT lt_components INTO ls_component. ENDIF.
lv_sytabix = sy-tabix.
CLEAR ls_fieldcatalog. ep_escaped_value = lv_value.
lo_elemdescr ?= ls_component-type.
&quot;component is DDIC endmethod.</source>
IF lo_elemdescr-&gt;is_ddic_type( ) = abap_true. </method>
ls_dfies = lo_elemdescr-&gt;get_ddic_field( ). <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" VERSION="1" LANGU="E" DESCRIPT="Convert date from Excel format to SAP" EXPOSURE="2" STATE="1" EDITORDER="8 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
ls_fieldcatalog-fieldname = ls_component-name. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_DATE" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Date" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="D"/>
ELSE. <source>method EXCEL_STRING_TO_DATE.
&quot;component is not DDIC -&gt; return minimum information required DATA: lv_date_int TYPE i.
ls_fieldcatalog-fieldname = ls_component-name.
ls_fieldcatalog-dynpfld = abap_true. TRY .
ls_fieldcatalog-scrtext_m = ls_component-name. lv_date_int = ip_value.
ENDIF. ep_value = lv_date_int + c_excel_baseline_date - 2.
ls_fieldcatalog-position = lv_sytabix. CATCH cx_sy_conversion_error.
APPEND ls_fieldcatalog TO ep_fieldcatalog. CLEAR ep_value.
ENDLOOP. ENDTRY.
ENDIF. endmethod.</source>
</method>
ENDMETHOD.</source> <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" VERSION="1" LANGU="E" DESCRIPT="Convert time from Excel format to SAP" EXPOSURE="2" STATE="1" EDITORDER="9 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
</method> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Converts number to string representation in Excel format" EXPOSURE="2" STATE="1" EDITORDER="11 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="EXCEL_STRING_TO_TIME" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Time" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="NUMERIC"/> <source>method EXCEL_STRING_TO_TIME.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/> DATA: lv_seconds_in_day TYPE i,
<source>method NUMBER_TO_EXCEL_STRING. lv_day_fraction TYPE f,
DATA: lv_value_c TYPE c LENGTH 100. lc_seconds_in_day TYPE i VALUE 86400.
WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN. TRY.
REPLACE ALL OCCURRENCES OF &apos;,&apos; IN lv_value_c WITH &apos;.&apos;.
lv_day_fraction = ip_value.
ep_value = lv_value_c. lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day.
CONDENSE ep_value.
ep_value = lv_seconds_in_day.
IF ip_value &lt; 0.
CONCATENATE &apos;-&apos; ep_value INTO ep_value. CATCH cx_sy_conversion_error.
ELSEIF ip_value EQ 0. CLEAR ep_value.
ep_value = &apos;0&apos;. ENDTRY.
ENDIF. endmethod.</source>
endmethod.</source> </method>
</method> <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Creates field catalog for BIND_TABLE based on internal table" EXPOSURE="2" STATE="1" EDITORDER="10 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="12 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="IP_TABLE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STANDARD TABLE"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" SCONAME="I_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/> <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="GET_FIELDCATALOG" SCONAME="EP_FIELDCATALOG" VERSION="1" LANGU="E" DESCRIPT="Table binding field catalog" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_T_FIELDCATALOG"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" SCONAME="R_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/> <source>method GET_FIELDCATALOG.
<source>method SHL01.
DATA: lr_data TYPE REF TO data,
DATA: lo_structdescr TYPE REF TO cl_abap_structdescr,
lv_bit TYPE i, lo_elemdescr TYPE REF TO cl_abap_elemdescr,
lv_curr_pos TYPE i VALUE 2, lt_dfies TYPE ddfields,
lv_prev_pos TYPE i VALUE 1. ls_dfies TYPE dfies,
lv_sytabix TYPE sytabix,
DO 15 TIMES. ls_fieldcatalog TYPE zexcel_s_fieldcatalog,
GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit. lt_components TYPE abap_component_tab,
SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit. ls_component LIKE LINE OF lt_components.
ADD 1 TO lv_curr_pos.
ADD 1 TO lv_prev_pos. CREATE DATA lr_data LIKE LINE OF ip_table.
ENDDO.
SET BIT 16 OF r_pwd_hash TO 0. lo_structdescr ?= cl_abap_structdescr=&gt;describe_by_data_ref( lr_data ).
endmethod.</source> &quot;for DDIC structure get the info directly
</method> IF lo_structdescr-&gt;is_ddic_type( ) = abap_true.
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="13 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> lt_dfies = lo_structdescr-&gt;get_ddic_field_list( ).
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" SCONAME="I_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" SCONAME="R_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/> LOOP AT lt_dfies INTO ls_dfies.
<source>method SHR14. CLEAR ls_fieldcatalog.
MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog.
DATA: APPEND ls_fieldcatalog TO ep_fieldcatalog.
lv_bit TYPE i, ENDLOOP.
lv_curr_pos TYPE i, ELSE.
lv_next_pos TYPE i. &quot;if structure is not DDIC check components
lt_components = lo_structdescr-&gt;get_components( ).
r_pwd_hash = i_pwd_hash. LOOP AT lt_components INTO ls_component.
lv_sytabix = sy-tabix.
DO 14 TIMES. CLEAR ls_fieldcatalog.
lv_curr_pos = 15. lo_elemdescr ?= ls_component-type.
lv_next_pos = 16. &quot;component is DDIC
IF lo_elemdescr-&gt;is_ddic_type( ) = abap_true.
DO 15 TIMES. ls_dfies = lo_elemdescr-&gt;get_ddic_field( ).
GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit. MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog.
SET BIT lv_next_pos OF r_pwd_hash TO lv_bit. ls_fieldcatalog-fieldname = ls_component-name.
SUBTRACT 1 FROM lv_curr_pos. ELSE.
SUBTRACT 1 FROM lv_next_pos. &quot;component is not DDIC -&gt; return minimum information required
ENDDO. ls_fieldcatalog-fieldname = ls_component-name.
SET BIT 1 OF r_pwd_hash TO 0. ls_fieldcatalog-dynpfld = abap_true.
ENDDO. ls_fieldcatalog-scrtext_m = ls_component-name.
ENDIF.
endmethod.</source> ls_fieldcatalog-position = lv_sytabix.
</method> APPEND ls_fieldcatalog TO ep_fieldcatalog.
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Convert time from SAP format to Excel" EXPOSURE="2" STATE="1" EDITORDER="14 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0"> ENDLOOP.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="T"/> ENDIF.
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<source>method TIME_TO_EXCEL_STRING. endmethod.</source>
DATA: lv_seconds_in_day TYPE i, </method>
lv_day_fraction TYPE f, <method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Converts number to string representation in Excel format" EXPOSURE="2" STATE="1" EDITORDER="11 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
lc_time_baseline TYPE t VALUE &apos;000000&apos;, <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="0" TYPTYPE="1" TYPE="NUMERIC"/>
lc_seconds_in_day TYPE i VALUE 86400. <parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="NUMBER_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<source>method NUMBER_TO_EXCEL_STRING.
lv_seconds_in_day = ip_value - lc_time_baseline. DATA: lv_value_c TYPE c LENGTH 100.
lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day.
ep_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = lv_day_fraction ). WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN.
endmethod.</source> REPLACE ALL OCCURRENCES OF &apos;,&apos; IN lv_value_c WITH &apos;.&apos;.
</method>
</CLAS> ep_value = lv_value_c.
CONDENSE ep_value.
IF ip_value &lt; 0.
CONCATENATE &apos;-&apos; ep_value INTO ep_value.
ELSEIF ip_value EQ 0.
ep_value = &apos;0&apos;.
ENDIF.
endmethod.</source>
</method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="12 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" SCONAME="I_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHL01" SCONAME="R_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
<source>method SHL01.
DATA:
lv_bit TYPE i,
lv_curr_pos TYPE i VALUE 2,
lv_prev_pos TYPE i VALUE 1.
DO 15 TIMES.
GET BIT lv_curr_pos OF i_pwd_hash INTO lv_bit.
SET BIT lv_prev_pos OF r_pwd_hash TO lv_bit.
ADD 1 TO lv_curr_pos.
ADD 1 TO lv_prev_pos.
ENDDO.
SET BIT 16 OF r_pwd_hash TO 0.
endmethod.</source>
</method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="13 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" SCONAME="I_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="SHR14" SCONAME="R_PWD_HASH" VERSION="1" LANGU="E" DESCRIPT="Password hash" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_PWD_HASH"/>
<source>method SHR14.
DATA:
lv_bit TYPE i,
lv_curr_pos TYPE i,
lv_next_pos TYPE i.
r_pwd_hash = i_pwd_hash.
DO 14 TIMES.
lv_curr_pos = 15.
lv_next_pos = 16.
DO 15 TIMES.
GET BIT lv_curr_pos OF r_pwd_hash INTO lv_bit.
SET BIT lv_next_pos OF r_pwd_hash TO lv_bit.
SUBTRACT 1 FROM lv_curr_pos.
SUBTRACT 1 FROM lv_next_pos.
ENDDO.
SET BIT 1 OF r_pwd_hash TO 0.
ENDDO.
endmethod.</source>
</method>
<method CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" VERSION="1" LANGU="E" DESCRIPT="Convert time from SAP format to Excel" EXPOSURE="2" STATE="1" EDITORDER="14 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" SCONAME="IP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="T"/>
<parameter CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="TIME_TO_EXCEL_STRING" SCONAME="EP_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
<source>method TIME_TO_EXCEL_STRING.
DATA: lv_seconds_in_day TYPE i,
lv_day_fraction TYPE f,
lc_time_baseline TYPE t VALUE &apos;000000&apos;,
lc_seconds_in_day TYPE i VALUE 86400.
lv_seconds_in_day = ip_value - lc_time_baseline.
lv_day_fraction = lv_seconds_in_day / lc_seconds_in_day.
ep_value = zcl_excel_common=&gt;number_to_excel_string( ip_value = lv_day_fraction ).
endmethod.</source>
</method>
</CLAS>