mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 11:06:15 +08:00
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:
parent
fbb1576cea
commit
f81f987a36
|
@ -1,448 +1,519 @@
|
|||
<?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 ">
|
||||
<publicSection>class ZCL_EXCEL_COMMON definition
|
||||
public
|
||||
final
|
||||
create public .
|
||||
|
||||
*"* public components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
public section.
|
||||
|
||||
constants C_EXCEL_BASELINE_DATE type D value '19000101'. "#EC NOTEXT
|
||||
class-data C_EXCEL_NUMFMT_OFFSET type INT1 value 164. "#EC NOTEXT .
|
||||
constants C_EXCEL_SHEET_MAX_COL type INT4 value 16384. "#EC NOTEXT
|
||||
constants C_EXCEL_SHEET_MIN_COL type INT4 value 1. "#EC NOTEXT
|
||||
class-data C_SPRAS_EN type SPRAS value 'E'. "#EC NOTEXT .
|
||||
class-data O_CONV type ref to CL_ABAP_CONV_OUT_CE .
|
||||
|
||||
class-methods CONVERT_COLUMN2ALPHA
|
||||
importing
|
||||
!IP_COLUMN type ZEXCEL_CELL_COLUMN
|
||||
returning
|
||||
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA .
|
||||
class-methods CONVERT_COLUMN2INT
|
||||
importing
|
||||
!IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
||||
returning
|
||||
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN .
|
||||
class-methods CONVERT_COLUMNROW2COLUMN_A_ROW
|
||||
importing
|
||||
!I_COLUMNROW type STRING
|
||||
exporting
|
||||
!E_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
||||
!E_ROW type ZEXCEL_CELL_ROW .
|
||||
class-methods DATE_TO_EXCEL_STRING
|
||||
importing
|
||||
!IP_VALUE type D
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .
|
||||
class-methods ENCRYPT_PASSWORD
|
||||
importing
|
||||
!I_PWD type ZEXCEL_AES_PASSWORD
|
||||
returning
|
||||
value(R_ENCRYPTED_PWD) type ZEXCEL_AES_PASSWORD .
|
||||
class-methods ESCAPE_STRING
|
||||
importing
|
||||
!IP_VALUE type STRING
|
||||
returning
|
||||
value(EP_ESCAPED_VALUE) type STRING .
|
||||
class-methods EXCEL_STRING_TO_DATE
|
||||
importing
|
||||
!IP_VALUE type ZEXCEL_CELL_VALUE
|
||||
returning
|
||||
value(EP_VALUE) type D .
|
||||
class-methods EXCEL_STRING_TO_TIME
|
||||
importing
|
||||
!IP_VALUE type ZEXCEL_CELL_VALUE
|
||||
returning
|
||||
value(EP_VALUE) type T .
|
||||
class-methods GET_FIELDCATALOG
|
||||
importing
|
||||
!IP_TABLE type STANDARD TABLE
|
||||
returning
|
||||
value(EP_FIELDCATALOG) type ZEXCEL_T_FIELDCATALOG .
|
||||
class-methods NUMBER_TO_EXCEL_STRING
|
||||
importing
|
||||
value(IP_VALUE) type NUMERIC
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .
|
||||
class-methods TIME_TO_EXCEL_STRING
|
||||
importing
|
||||
!IP_VALUE type T
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .</publicSection>
|
||||
<protectedSection>*"* protected components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
protected section.</protectedSection>
|
||||
<privateSection>*"* private components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
private section.
|
||||
|
||||
class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT .
|
||||
|
||||
class-methods CHAR2HEX
|
||||
importing
|
||||
!I_CHAR type CHAR1
|
||||
returning
|
||||
value(R_HEX) type ZEXCEL_PWD_HASH .
|
||||
class-methods SHL01
|
||||
importing
|
||||
!I_PWD_HASH type ZEXCEL_PWD_HASH
|
||||
returning
|
||||
value(R_PWD_HASH) type ZEXCEL_PWD_HASH .
|
||||
class-methods SHR14
|
||||
importing
|
||||
!I_PWD_HASH type ZEXCEL_PWD_HASH
|
||||
returning
|
||||
value(R_PWD_HASH) type ZEXCEL_PWD_HASH .</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</localTypes>
|
||||
<localMacros>*"* use this source file for any macro definitions you need
|
||||
*"* 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="'19000101'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="D" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
|
||||
<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 "/>
|
||||
<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="'E'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SPRAS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="O_CONV" VERSION="1" LANGU="E" DESCRIPT="Code Page and Endian Conversion (System Format -> 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 "/>
|
||||
<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">
|
||||
<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"/>
|
||||
<source>method CHAR2HEX.
|
||||
|
||||
IF o_conv IS NOT BOUND.
|
||||
o_conv = cl_abap_conv_out_ce=>create( endian = 'L'
|
||||
ignore_cerr = 'X'
|
||||
replacement = '#' ).
|
||||
ENDIF.
|
||||
|
||||
CALL METHOD o_conv->reset( ).
|
||||
CALL METHOD o_conv->write( data = i_char ).
|
||||
r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065'
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method CONVERT_COLUMN2ALPHA.
|
||||
|
||||
DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce,
|
||||
lv_uccpi TYPE i,
|
||||
lv_text TYPE sychar02,
|
||||
lv_module TYPE int4,
|
||||
lv_column TYPE zexcel_cell_column.
|
||||
|
||||
lv_column = ip_column.
|
||||
WHILE lv_column GT 0.
|
||||
lv_module = ( lv_column - 1 ) MOD 26.
|
||||
lv_uccpi = 65 + lv_module.
|
||||
|
||||
lv_column = ( lv_column - lv_module ) / 26.
|
||||
|
||||
lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ).
|
||||
CONCATENATE lv_text ep_column INTO ep_column.
|
||||
ENDWHILE.
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>METHOD convert_column2int.
|
||||
|
||||
DATA: lv_uccpi TYPE i,
|
||||
lv_factor TYPE i,
|
||||
lv_offset TYPE i,
|
||||
lv_char TYPE c,
|
||||
lv_column TYPE ZEXCEL_CELL_COLUMN_ALPHA.
|
||||
|
||||
* Upper case
|
||||
lv_column = ip_column.
|
||||
TRANSLATE lv_column TO UPPER CASE.
|
||||
CONDENSE lv_column NO-GAPS.
|
||||
|
||||
* Get string lenght and align to right
|
||||
lv_offset = 3 - STRLEN( lv_column ).
|
||||
|
||||
SHIFT lv_column RIGHT BY lv_offset PLACES.
|
||||
|
||||
* Claculate column position
|
||||
DO 3 TIMES.
|
||||
lv_offset = sy-index - 1.
|
||||
lv_char = lv_column+lv_offset(1).
|
||||
if lv_char IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ).
|
||||
lv_factor = 26 ** ( 3 - sy-index ).
|
||||
ep_column = ep_column + ( lv_uccpi MOD zcl_excel_common=>c_excel_col_module ) * lv_factor.
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method CONVERT_COLUMNROW2COLUMN_A_ROW.
|
||||
DATA: width TYPE i,
|
||||
col_width TYPE i,
|
||||
row_str TYPE string.
|
||||
width = strlen( i_columnrow ).
|
||||
col_width = 2.
|
||||
e_column = i_columnrow.
|
||||
WHILE e_column CA '0123456789'.
|
||||
col_width = col_width - 1.
|
||||
e_column = i_columnrow(col_width).
|
||||
ENDWHILE.
|
||||
width = width - col_width.
|
||||
row_str = i_columnrow+col_width(width).
|
||||
e_row = row_str.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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.
|
||||
DATA: lv_date_diff TYPE i.
|
||||
|
||||
CHECK ip_value IS NOT INITIAL.
|
||||
lv_date_diff = ip_value - c_excel_baseline_date + 2.
|
||||
ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ).
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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.
|
||||
|
||||
DATA lv_curr_offset TYPE i.
|
||||
DATA lv_curr_char TYPE c LENGTH 1.
|
||||
DATA lv_curr_hex TYPE zexcel_pwd_hash.
|
||||
DATA lv_pwd_len TYPE zexcel_pwd_hash.
|
||||
DATA lv_pwd_hash TYPE zexcel_pwd_hash.
|
||||
|
||||
CONSTANTS:
|
||||
lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF',
|
||||
lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001',
|
||||
lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'.
|
||||
|
||||
DATA lv_pwd TYPE zexcel_aes_password.
|
||||
|
||||
lv_pwd = i_pwd(15).
|
||||
|
||||
lv_pwd_len = STRLEN( lv_pwd ).
|
||||
lv_curr_offset = lv_pwd_len - 1.
|
||||
|
||||
WHILE lv_curr_offset GE 0.
|
||||
|
||||
lv_curr_char = lv_pwd+lv_curr_offset(1).
|
||||
lv_curr_hex = char2hex( lv_curr_char ).
|
||||
|
||||
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
|
||||
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex.
|
||||
SUBTRACT 1 FROM lv_curr_offset.
|
||||
ENDWHILE.
|
||||
|
||||
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b.
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len.
|
||||
|
||||
WRITE lv_pwd_hash TO r_encrypted_pwd.
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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="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="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 ESCAPE_STRING.
|
||||
DATA lv_value TYPE string.
|
||||
|
||||
lv_value = ip_value.
|
||||
|
||||
REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`.
|
||||
|
||||
IF lv_value CP '* *'.
|
||||
CONCATENATE `'` lv_value `'` INTO lv_value .
|
||||
ENDIF.
|
||||
|
||||
ep_escaped_value = lv_value.
|
||||
|
||||
endmethod.</source>
|
||||
</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">
|
||||
<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="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"/>
|
||||
<source>method EXCEL_STRING_TO_DATE.
|
||||
DATA: lv_date_int TYPE i.
|
||||
|
||||
TRY .
|
||||
lv_date_int = ip_value.
|
||||
ep_value = lv_date_int + c_excel_baseline_date - 2.
|
||||
CATCH cx_sy_conversion_error.
|
||||
CLEAR ep_value.
|
||||
ENDTRY.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<source>method EXCEL_STRING_TO_TIME.
|
||||
DATA: lv_seconds_in_day TYPE i,
|
||||
lv_day_fraction TYPE f,
|
||||
lc_seconds_in_day TYPE i VALUE 86400.
|
||||
|
||||
TRY.
|
||||
|
||||
lv_day_fraction = ip_value.
|
||||
lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day.
|
||||
|
||||
ep_value = lv_seconds_in_day.
|
||||
|
||||
CATCH cx_sy_conversion_error.
|
||||
CLEAR ep_value.
|
||||
ENDTRY.
|
||||
endmethod.</source>
|
||||
</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">
|
||||
<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"/>
|
||||
<source>METHOD get_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,
|
||||
ls_fieldcatalog TYPE zexcel_s_fieldcatalog,
|
||||
lt_components TYPE abap_component_tab,
|
||||
ls_component LIKE LINE OF lt_components.
|
||||
|
||||
CREATE DATA lr_data LIKE LINE OF ip_table.
|
||||
|
||||
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.
|
||||
CLEAR ls_fieldcatalog.
|
||||
MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog.
|
||||
APPEND ls_fieldcatalog TO ep_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_fieldcatalog.
|
||||
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_fieldcatalog.
|
||||
ls_fieldcatalog-fieldname = ls_component-name.
|
||||
ELSE.
|
||||
"component is not DDIC -> return minimum information required
|
||||
ls_fieldcatalog-fieldname = ls_component-name.
|
||||
ls_fieldcatalog-dynpfld = abap_true.
|
||||
ls_fieldcatalog-scrtext_m = ls_component-name.
|
||||
ENDIF.
|
||||
ls_fieldcatalog-position = lv_sytabix.
|
||||
APPEND ls_fieldcatalog TO ep_fieldcatalog.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<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="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"/>
|
||||
<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"/>
|
||||
<source>method NUMBER_TO_EXCEL_STRING.
|
||||
DATA: lv_value_c TYPE c LENGTH 100.
|
||||
|
||||
WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN.
|
||||
REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'.
|
||||
|
||||
ep_value = lv_value_c.
|
||||
CONDENSE ep_value.
|
||||
|
||||
IF ip_value < 0.
|
||||
CONCATENATE '-' ep_value INTO ep_value.
|
||||
ELSEIF ip_value EQ 0.
|
||||
ep_value = '0'.
|
||||
ENDIF.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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="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="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 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="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" 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="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"/>
|
||||
<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="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" 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="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" 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="FEMIA" CREATEDON="20110528" CHANGEDBY="FEMIA" CHANGEDON="20110528" 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 '000000',
|
||||
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=>number_to_excel_string( ip_value = lv_day_fraction ).
|
||||
endmethod.</source>
|
||||
</method>
|
||||
</CLAS>
|
||||
<?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="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
|
||||
public
|
||||
final
|
||||
create public .
|
||||
|
||||
public section.
|
||||
*"* public components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
|
||||
constants C_EXCEL_BASELINE_DATE type D value '19000101'. "#EC NOTEXT
|
||||
class-data C_EXCEL_NUMFMT_OFFSET type INT1 value 164. "#EC NOTEXT .
|
||||
constants C_EXCEL_SHEET_MAX_COL type INT4 value 16384. "#EC NOTEXT
|
||||
constants C_EXCEL_SHEET_MIN_COL type INT4 value 1. "#EC NOTEXT
|
||||
class-data C_SPRAS_EN type SPRAS value 'E'. "#EC NOTEXT .
|
||||
class-data O_CONV type ref to CL_ABAP_CONV_OUT_CE .
|
||||
|
||||
class-methods CONVERT_COLUMN2ALPHA
|
||||
importing
|
||||
!IP_COLUMN type ZEXCEL_CELL_COLUMN
|
||||
returning
|
||||
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN_ALPHA .
|
||||
class-methods CONVERT_COLUMN2INT
|
||||
importing
|
||||
!IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
||||
returning
|
||||
value(EP_COLUMN) type ZEXCEL_CELL_COLUMN .
|
||||
class-methods CONVERT_COLUMNROW2COLUMN_A_ROW
|
||||
importing
|
||||
!I_COLUMNROW type STRING
|
||||
exporting
|
||||
!E_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
||||
!E_ROW type ZEXCEL_CELL_ROW .
|
||||
class-methods DATE_TO_EXCEL_STRING
|
||||
importing
|
||||
!IP_VALUE type D
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .
|
||||
class-methods ENCRYPT_PASSWORD
|
||||
importing
|
||||
!I_PWD type ZEXCEL_AES_PASSWORD
|
||||
returning
|
||||
value(R_ENCRYPTED_PWD) type ZEXCEL_AES_PASSWORD .
|
||||
class-methods ESCAPE_STRING
|
||||
importing
|
||||
!IP_VALUE type STRING
|
||||
returning
|
||||
value(EP_ESCAPED_VALUE) type STRING .
|
||||
class-methods EXCEL_STRING_TO_DATE
|
||||
importing
|
||||
!IP_VALUE type ZEXCEL_CELL_VALUE
|
||||
returning
|
||||
value(EP_VALUE) type D .
|
||||
class-methods EXCEL_STRING_TO_TIME
|
||||
importing
|
||||
!IP_VALUE type ZEXCEL_CELL_VALUE
|
||||
returning
|
||||
value(EP_VALUE) type T .
|
||||
class-methods GET_FIELDCATALOG
|
||||
importing
|
||||
!IP_TABLE type STANDARD TABLE
|
||||
returning
|
||||
value(EP_FIELDCATALOG) type ZEXCEL_T_FIELDCATALOG .
|
||||
class-methods NUMBER_TO_EXCEL_STRING
|
||||
importing
|
||||
value(IP_VALUE) type NUMERIC
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .
|
||||
class-methods TIME_TO_EXCEL_STRING
|
||||
importing
|
||||
!IP_VALUE type T
|
||||
returning
|
||||
value(EP_VALUE) type ZEXCEL_CELL_VALUE .</publicSection>
|
||||
<protectedSection>*"* protected components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
protected section.</protectedSection>
|
||||
<privateSection>*"* private components of class ZCL_EXCEL_COMMON
|
||||
*"* do not include other source files here!!!
|
||||
private section.
|
||||
|
||||
class-data C_EXCEL_COL_MODULE type INT2 value 64. "#EC NOTEXT .
|
||||
|
||||
class-methods CHAR2HEX
|
||||
importing
|
||||
!I_CHAR type CHAR1
|
||||
returning
|
||||
value(R_HEX) type ZEXCEL_PWD_HASH .
|
||||
class-methods SHL01
|
||||
importing
|
||||
!I_PWD_HASH type ZEXCEL_PWD_HASH
|
||||
returning
|
||||
value(R_PWD_HASH) type ZEXCEL_PWD_HASH .
|
||||
class-methods SHR14
|
||||
importing
|
||||
!I_PWD_HASH type ZEXCEL_PWD_HASH
|
||||
returning
|
||||
value(R_PWD_HASH) type ZEXCEL_PWD_HASH .</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</localTypes>
|
||||
<localMacros>*"* use this source file for any macro definitions you need
|
||||
*"* in the implementation part of the class</localMacros>
|
||||
<localTestClasses>*----------------------------------------------------------------------*
|
||||
* CLASS zcl_Excel_Common_Test DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS zcl_excel_common_test DEFINITION FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS
|
||||
.
|
||||
*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
*?<asx:values>
|
||||
*?<TESTCLASS_OPTIONS>
|
||||
*?<TEST_CLASS>zcl_Excel_Common_Test
|
||||
*?</TEST_CLASS>
|
||||
*?<TEST_MEMBER>f_Cut
|
||||
*?</TEST_MEMBER>
|
||||
*?<OBJECT_UNDER_TEST>ZCL_EXCEL_COMMON
|
||||
*?</OBJECT_UNDER_TEST>
|
||||
*?<OBJECT_IS_LOCAL/>
|
||||
*?<GENERATE_FIXTURE/>
|
||||
*?<GENERATE_CLASS_FIXTURE/>
|
||||
*?<GENERATE_INVOCATION/>
|
||||
*?<GENERATE_ASSERT_EQUAL>X
|
||||
*?</GENERATE_ASSERT_EQUAL>
|
||||
*?</TESTCLASS_OPTIONS>
|
||||
*?</asx:values>
|
||||
*?</asx:abap>
|
||||
PRIVATE SECTION.
|
||||
* ================
|
||||
DATA:
|
||||
f_cut TYPE REF TO zcl_excel_common. "class under test
|
||||
|
||||
METHODS: convert_columnrow2column_a_row FOR TESTING.
|
||||
ENDCLASS. "zcl_Excel_Common_Test
|
||||
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS zcl_Excel_Common_Test IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS zcl_excel_common_test IMPLEMENTATION.
|
||||
* ===========================================
|
||||
|
||||
METHOD convert_columnrow2column_a_row.
|
||||
* ======================================
|
||||
DATA: e_column TYPE zexcel_cell_column_alpha,
|
||||
e_row TYPE zexcel_cell_row.
|
||||
CALL METHOD zcl_excel_common=>convert_columnrow2column_a_row
|
||||
EXPORTING
|
||||
i_columnrow = 'AZ4'
|
||||
IMPORTING
|
||||
e_column = e_column
|
||||
e_row = e_row.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = e_column
|
||||
exp = 'AZ' "<--- please adapt expected value
|
||||
msg = 'Column value is wrong'
|
||||
).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = e_row
|
||||
exp = '4' "<--- please adapt expected value
|
||||
msg = 'Row value is wrong'
|
||||
).
|
||||
ENDMETHOD. "convert_Columnrow2column_A_Row
|
||||
|
||||
|
||||
|
||||
|
||||
ENDCLASS. "zcl_Excel_Common_Test</localTestClasses>
|
||||
<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="'19000101'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="D" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
|
||||
<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 "/>
|
||||
<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 "/>
|
||||
<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 "/>
|
||||
<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 "/>
|
||||
<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="'E'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="SPRAS" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="702" TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_COMMON" CMPNAME="O_CONV" VERSION="1" LANGU="E" DESCRIPT="Code Page and Endian Conversion (System Format -> 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 "/>
|
||||
<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">
|
||||
<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"/>
|
||||
<source>method CHAR2HEX.
|
||||
|
||||
IF o_conv IS NOT BOUND.
|
||||
o_conv = cl_abap_conv_out_ce=>create( endian = 'L'
|
||||
ignore_cerr = 'X'
|
||||
replacement = '#' ).
|
||||
ENDIF.
|
||||
|
||||
CALL METHOD o_conv->reset( ).
|
||||
CALL METHOD o_conv->write( data = i_char ).
|
||||
r_hex+1 = o_conv->get_buffer( ). " x'65' must be x'0065'
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method CONVERT_COLUMN2ALPHA.
|
||||
|
||||
DATA: lo_conv TYPE REF TO cl_abap_conv_in_ce,
|
||||
lv_uccpi TYPE i,
|
||||
lv_text TYPE sychar02,
|
||||
lv_module TYPE int4,
|
||||
lv_column TYPE zexcel_cell_column.
|
||||
|
||||
lv_column = ip_column.
|
||||
WHILE lv_column GT 0.
|
||||
lv_module = ( lv_column - 1 ) MOD 26.
|
||||
lv_uccpi = 65 + lv_module.
|
||||
|
||||
lv_column = ( lv_column - lv_module ) / 26.
|
||||
|
||||
lv_text = cl_abap_conv_in_ce=>uccpi( lv_uccpi ).
|
||||
CONCATENATE lv_text ep_column INTO ep_column.
|
||||
ENDWHILE.
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method CONVERT_COLUMN2INT.
|
||||
|
||||
DATA: lv_uccpi TYPE i,
|
||||
lv_factor TYPE i,
|
||||
lv_offset TYPE i,
|
||||
lv_char TYPE c,
|
||||
lv_column TYPE ZEXCEL_CELL_COLUMN_ALPHA.
|
||||
|
||||
* Upper case
|
||||
lv_column = ip_column.
|
||||
TRANSLATE lv_column TO UPPER CASE.
|
||||
CONDENSE lv_column NO-GAPS.
|
||||
|
||||
* Get string lenght and align to right
|
||||
lv_offset = 3 - STRLEN( lv_column ).
|
||||
|
||||
SHIFT lv_column RIGHT BY lv_offset PLACES.
|
||||
|
||||
* Claculate column position
|
||||
DO 3 TIMES.
|
||||
lv_offset = sy-index - 1.
|
||||
lv_char = lv_column+lv_offset(1).
|
||||
if lv_char IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
lv_uccpi = cl_abap_conv_out_ce=>uccpi( lv_char ).
|
||||
lv_factor = 26 ** ( 3 - sy-index ).
|
||||
ep_column = ep_column + ( lv_uccpi MOD zcl_excel_common=>c_excel_col_module ) * lv_factor.
|
||||
ENDDO.
|
||||
|
||||
endmethod.</source>
|
||||
</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="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="702" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<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"/>
|
||||
<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="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"/>
|
||||
<source>method CONVERT_COLUMNROW2COLUMN_A_ROW.
|
||||
DATA: width TYPE i,
|
||||
col_width TYPE i,
|
||||
row_str TYPE string.
|
||||
width = strlen( i_columnrow ).
|
||||
col_width = width.
|
||||
e_column = i_columnrow.
|
||||
WHILE e_column CA '0123456789'.
|
||||
col_width = col_width - 1.
|
||||
e_column = i_columnrow(col_width).
|
||||
ENDWHILE.
|
||||
width = width - col_width.
|
||||
row_str = i_columnrow+col_width(width).
|
||||
e_row = row_str.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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="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="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 DATE_TO_EXCEL_STRING.
|
||||
DATA: lv_date_diff TYPE i.
|
||||
|
||||
CHECK ip_value IS NOT INITIAL.
|
||||
lv_date_diff = ip_value - c_excel_baseline_date + 2.
|
||||
ep_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_date_diff ).
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method ENCRYPT_PASSWORD.
|
||||
|
||||
DATA lv_curr_offset TYPE i.
|
||||
DATA lv_curr_char TYPE c LENGTH 1.
|
||||
DATA lv_curr_hex TYPE zexcel_pwd_hash.
|
||||
DATA lv_pwd_len TYPE zexcel_pwd_hash.
|
||||
DATA lv_pwd_hash TYPE zexcel_pwd_hash.
|
||||
|
||||
CONSTANTS:
|
||||
lv_0x7fff TYPE zexcel_pwd_hash VALUE '7FFF',
|
||||
lv_0x0001 TYPE zexcel_pwd_hash VALUE '0001',
|
||||
lv_0xce4b TYPE zexcel_pwd_hash VALUE 'CE4B'.
|
||||
|
||||
DATA lv_pwd TYPE zexcel_aes_password.
|
||||
|
||||
lv_pwd = i_pwd(15).
|
||||
|
||||
lv_pwd_len = STRLEN( lv_pwd ).
|
||||
lv_curr_offset = lv_pwd_len - 1.
|
||||
|
||||
WHILE lv_curr_offset GE 0.
|
||||
|
||||
lv_curr_char = lv_pwd+lv_curr_offset(1).
|
||||
lv_curr_hex = char2hex( lv_curr_char ).
|
||||
|
||||
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
|
||||
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_curr_hex.
|
||||
SUBTRACT 1 FROM lv_curr_offset.
|
||||
ENDWHILE.
|
||||
|
||||
lv_pwd_hash = ( shr14( lv_pwd_hash ) BIT-AND lv_0x0001 ) BIT-OR ( shl01( lv_pwd_hash ) BIT-AND lv_0x7fff ).
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_0xce4b.
|
||||
lv_pwd_hash = lv_pwd_hash BIT-XOR lv_pwd_len.
|
||||
|
||||
WRITE lv_pwd_hash TO r_encrypted_pwd.
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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.
|
||||
DATA lv_value TYPE string.
|
||||
|
||||
lv_value = ip_value.
|
||||
|
||||
REPLACE ALL OCCURRENCES OF `'` IN lv_value WITH `''`.
|
||||
|
||||
IF lv_value CP '* *'.
|
||||
CONCATENATE `'` lv_value `'` INTO lv_value .
|
||||
ENDIF.
|
||||
|
||||
ep_escaped_value = lv_value.
|
||||
|
||||
endmethod.</source>
|
||||
</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="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="BCUSER" CREATEDON="20101212" CHANGEDBY="DEVELOPER" CHANGEDON="20111206" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_VALUE"/>
|
||||
<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"/>
|
||||
<source>method EXCEL_STRING_TO_DATE.
|
||||
DATA: lv_date_int TYPE i.
|
||||
|
||||
TRY .
|
||||
lv_date_int = ip_value.
|
||||
ep_value = lv_date_int + c_excel_baseline_date - 2.
|
||||
CATCH cx_sy_conversion_error.
|
||||
CLEAR ep_value.
|
||||
ENDTRY.
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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"/>
|
||||
<source>method EXCEL_STRING_TO_TIME.
|
||||
DATA: lv_seconds_in_day TYPE i,
|
||||
lv_day_fraction TYPE f,
|
||||
lc_seconds_in_day TYPE i VALUE 86400.
|
||||
|
||||
TRY.
|
||||
|
||||
lv_day_fraction = ip_value.
|
||||
lv_seconds_in_day = lv_day_fraction * lc_seconds_in_day.
|
||||
|
||||
ep_value = lv_seconds_in_day.
|
||||
|
||||
CATCH cx_sy_conversion_error.
|
||||
CLEAR ep_value.
|
||||
ENDTRY.
|
||||
endmethod.</source>
|
||||
</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">
|
||||
<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="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"/>
|
||||
<source>method GET_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,
|
||||
ls_fieldcatalog TYPE zexcel_s_fieldcatalog,
|
||||
lt_components TYPE abap_component_tab,
|
||||
ls_component LIKE LINE OF lt_components.
|
||||
|
||||
CREATE DATA lr_data LIKE LINE OF ip_table.
|
||||
|
||||
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.
|
||||
CLEAR ls_fieldcatalog.
|
||||
MOVE-CORRESPONDING ls_dfies TO ls_fieldcatalog.
|
||||
APPEND ls_fieldcatalog TO ep_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_fieldcatalog.
|
||||
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_fieldcatalog.
|
||||
ls_fieldcatalog-fieldname = ls_component-name.
|
||||
ELSE.
|
||||
"component is not DDIC -> return minimum information required
|
||||
ls_fieldcatalog-fieldname = ls_component-name.
|
||||
ls_fieldcatalog-dynpfld = abap_true.
|
||||
ls_fieldcatalog-scrtext_m = ls_component-name.
|
||||
ENDIF.
|
||||
ls_fieldcatalog-position = lv_sytabix.
|
||||
APPEND ls_fieldcatalog TO ep_fieldcatalog.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
endmethod.</source>
|
||||
</method>
|
||||
<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">
|
||||
<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"/>
|
||||
<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.
|
||||
DATA: lv_value_c TYPE c LENGTH 100.
|
||||
|
||||
WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN.
|
||||
REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'.
|
||||
|
||||
ep_value = lv_value_c.
|
||||
CONDENSE ep_value.
|
||||
|
||||
IF ip_value < 0.
|
||||
CONCATENATE '-' ep_value INTO ep_value.
|
||||
ELSEIF ip_value EQ 0.
|
||||
ep_value = '0'.
|
||||
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 '000000',
|
||||
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=>number_to_excel_string( ip_value = lv_day_fraction ).
|
||||
endmethod.</source>
|
||||
</method>
|
||||
</CLAS>
|
||||
|
|
Loading…
Reference in New Issue
Block a user