mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-06 00:56:20 +08:00
Merge branch 'main' into timestamp-support
This commit is contained in:
commit
e9cf33a9e4
|
@ -49,7 +49,7 @@ CLASS zcl_excel_common DEFINITION
|
|||
zcx_excel.
|
||||
CLASS-METHODS convert_columnrow2column_a_row
|
||||
IMPORTING
|
||||
!i_columnrow TYPE clike
|
||||
!i_columnrow TYPE clike
|
||||
EXPORTING
|
||||
!e_column TYPE zexcel_cell_column_alpha
|
||||
!e_column_int TYPE zexcel_cell_column
|
||||
|
@ -78,7 +78,7 @@ CLASS zcl_excel_common DEFINITION
|
|||
!e_row TYPE zexcel_cell_row .
|
||||
CLASS-METHODS clone_ixml_with_namespaces
|
||||
IMPORTING
|
||||
element TYPE REF TO if_ixml_element
|
||||
element TYPE REF TO if_ixml_element
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO if_ixml_element.
|
||||
CLASS-METHODS date_to_excel_string
|
||||
|
@ -141,6 +141,7 @@ CLASS zcl_excel_common DEFINITION
|
|||
CLASS-METHODS number_to_excel_string
|
||||
IMPORTING
|
||||
VALUE(ip_value) TYPE numeric
|
||||
ip_currency TYPE waers_curc OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ep_value) TYPE zexcel_cell_value .
|
||||
CLASS-METHODS recursive_class_to_struct
|
||||
|
@ -506,8 +507,8 @@ CLASS zcl_excel_common IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD convert_column_a_row2columnrow.
|
||||
DATA: lv_row_alpha TYPE string,
|
||||
lv_column_alpha TYPE zexcel_cell_column_alpha.
|
||||
DATA: lv_row_alpha TYPE string,
|
||||
lv_column_alpha TYPE zexcel_cell_column_alpha.
|
||||
|
||||
lv_row_alpha = i_row.
|
||||
lv_column_alpha = zcl_excel_common=>convert_column2alpha( i_column ).
|
||||
|
@ -959,6 +960,15 @@ CLASS zcl_excel_common IMPLEMENTATION.
|
|||
<fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ).
|
||||
<fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ).
|
||||
<fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ).
|
||||
<fcat>-currency_column = ls_salv_t_column_ref-r_column->get_currency_column( ).
|
||||
" If currency column not in structure then clear the field again
|
||||
IF <fcat>-currency_column IS NOT INITIAL.
|
||||
READ TABLE lt_salv_t_column_ref WITH KEY columnname = <fcat>-currency_column TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
CLEAR <fcat>-currency_column.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF ip_conv_exit_length = abap_false.
|
||||
<fcat>-abap_type = lo_salv_column_table->get_ddic_inttype( ).
|
||||
ENDIF.
|
||||
|
@ -1022,7 +1032,11 @@ CLASS zcl_excel_common IMPLEMENTATION.
|
|||
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.
|
||||
IF ip_currency IS INITIAL.
|
||||
WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN.
|
||||
ELSE.
|
||||
WRITE ip_value TO lv_value_c EXPONENT 0 NO-GROUPING NO-SIGN CURRENCY ip_currency.
|
||||
ENDIF.
|
||||
REPLACE ALL OCCURRENCES OF ',' IN lv_value_c WITH '.'.
|
||||
|
||||
ep_value = lv_value_c.
|
||||
|
@ -1706,4 +1720,5 @@ CLASS zcl_excel_common IMPLEMENTATION.
|
|||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -48,6 +48,9 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING
|
|||
METHODS date_to_excel_string4 FOR TESTING RAISING cx_static_check.
|
||||
METHODS date_to_excel_string5 FOR TESTING RAISING cx_static_check.
|
||||
METHODS date_to_excel_string6 FOR TESTING RAISING cx_static_check.
|
||||
METHODS amount_to_excel_string1 FOR TESTING RAISING cx_static_check.
|
||||
METHODS amount_to_excel_string2 FOR TESTING RAISING cx_static_check.
|
||||
METHODS amount_to_excel_string3 FOR TESTING RAISING cx_static_check.
|
||||
METHODS: encrypt_password FOR TESTING.
|
||||
METHODS: excel_string_to_date FOR TESTING.
|
||||
METHODS excel_string_to_time1 FOR TESTING RAISING cx_static_check.
|
||||
|
@ -491,6 +494,47 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD amount_to_excel_string1.
|
||||
DATA ep_value TYPE zexcel_cell_value.
|
||||
|
||||
ep_value = zcl_excel_common=>number_to_excel_string( ip_value = '1003.99'
|
||||
ip_currency = 'EUR' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ep_value
|
||||
exp = '1003.99'
|
||||
msg = 'Wrong currency amount conversion'
|
||||
level = if_aunit_constants=>critical ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD amount_to_excel_string2.
|
||||
DATA ep_value TYPE zexcel_cell_value.
|
||||
|
||||
ep_value = zcl_excel_common=>number_to_excel_string( ip_value = '-1003.99'
|
||||
ip_currency = 'HUF' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ep_value
|
||||
exp = '-100399'
|
||||
msg = 'Wrong currency amount conversion'
|
||||
level = if_aunit_constants=>critical ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD amount_to_excel_string3.
|
||||
DATA ep_value TYPE zexcel_cell_value.
|
||||
|
||||
ep_value = zcl_excel_common=>number_to_excel_string( ip_value = '0'
|
||||
ip_currency = 'HUF' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ep_value
|
||||
exp = '0'
|
||||
msg = 'Wrong currency amount conversion'
|
||||
level = if_aunit_constants=>critical ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD encrypt_password.
|
||||
* ========================
|
||||
|
|
|
@ -172,6 +172,7 @@ CLASS zcl_excel_worksheet DEFINITION
|
|||
VALUE(iv_default_descr) TYPE c OPTIONAL
|
||||
!iv_no_line_if_empty TYPE abap_bool DEFAULT abap_false
|
||||
!ip_conv_exit_length TYPE abap_bool DEFAULT abap_false
|
||||
!ip_conv_curr_amt_ext TYPE abap_bool DEFAULT abap_false
|
||||
EXPORTING
|
||||
!es_table_settings TYPE zexcel_s_table_settings
|
||||
RAISING
|
||||
|
@ -499,6 +500,7 @@ CLASS zcl_excel_worksheet DEFINITION
|
|||
!ip_hyperlink TYPE REF TO zcl_excel_hyperlink OPTIONAL
|
||||
!ip_data_type TYPE zexcel_cell_data_type OPTIONAL
|
||||
!ip_abap_type TYPE abap_typekind OPTIONAL
|
||||
!ip_currency TYPE waers_curc OPTIONAL
|
||||
!it_rtf TYPE zexcel_t_rtf OPTIONAL
|
||||
!ip_column_formula_id TYPE mty_s_column_formula-id OPTIONAL
|
||||
!ip_conv_exit_length TYPE abap_bool DEFAULT abap_false
|
||||
|
@ -808,15 +810,15 @@ CLASS zcl_excel_worksheet DEFINITION
|
|||
iv_default_descr TYPE c
|
||||
it_field_catalog TYPE zexcel_t_fieldcatalog
|
||||
RETURNING
|
||||
VALUE(result) TYPE zexcel_t_fieldcatalog.
|
||||
VALUE(result) TYPE zexcel_t_fieldcatalog.
|
||||
METHODS normalize_columnrow_parameter
|
||||
IMPORTING
|
||||
ip_columnrow TYPE csequence OPTIONAL
|
||||
ip_column TYPE simple OPTIONAL
|
||||
ip_row TYPE zexcel_cell_row OPTIONAL
|
||||
ip_columnrow TYPE csequence OPTIONAL
|
||||
ip_column TYPE simple OPTIONAL
|
||||
ip_row TYPE zexcel_cell_row OPTIONAL
|
||||
EXPORTING
|
||||
ep_column TYPE zexcel_cell_column
|
||||
ep_row TYPE zexcel_cell_row
|
||||
ep_column TYPE zexcel_cell_column
|
||||
ep_row TYPE zexcel_cell_row
|
||||
RAISING
|
||||
zcx_excel.
|
||||
METHODS normalize_range_parameter
|
||||
|
@ -986,7 +988,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
|
||||
CONSTANTS:
|
||||
lc_top_left_column TYPE zexcel_cell_column_alpha VALUE 'A',
|
||||
lc_top_left_row TYPE zexcel_cell_row VALUE 1.
|
||||
lc_top_left_row TYPE zexcel_cell_row VALUE 1,
|
||||
lc_no_currency TYPE waers_curc VALUE IS INITIAL.
|
||||
|
||||
DATA:
|
||||
lv_row_int TYPE zexcel_cell_row,
|
||||
|
@ -1012,7 +1015,8 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
<ls_field_catalog> TYPE zexcel_s_fieldcatalog,
|
||||
<ls_field_catalog_custom> TYPE zexcel_s_fieldcatalog,
|
||||
<fs_table_line> TYPE any,
|
||||
<fs_fldval> TYPE any.
|
||||
<fs_fldval> TYPE any,
|
||||
<fs_fldval_currency> TYPE waers.
|
||||
|
||||
ls_settings = is_table_settings.
|
||||
|
||||
|
@ -1111,6 +1115,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
LOOP AT ip_table ASSIGNING <fs_table_line>.
|
||||
|
||||
ASSIGN COMPONENT <ls_field_catalog>-fieldname OF STRUCTURE <fs_table_line> TO <fs_fldval>.
|
||||
|
||||
" issue #290 Add formula support in table
|
||||
IF <ls_field_catalog>-formula EQ abap_true.
|
||||
IF <ls_field_catalog>-style IS NOT INITIAL.
|
||||
|
@ -1162,18 +1167,26 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
ip_column_formula_id = ls_column_formula-id ).
|
||||
ENDIF.
|
||||
ELSE.
|
||||
IF <ls_field_catalog>-currency_column IS INITIAL OR ip_conv_curr_amt_ext = abap_false.
|
||||
ASSIGN lc_no_currency TO <fs_fldval_currency>.
|
||||
ELSE.
|
||||
ASSIGN COMPONENT <ls_field_catalog>-currency_column OF STRUCTURE <fs_table_line> TO <fs_fldval_currency>.
|
||||
ENDIF.
|
||||
|
||||
IF <ls_field_catalog>-style IS NOT INITIAL.
|
||||
IF <ls_field_catalog>-abap_type IS NOT INITIAL.
|
||||
me->set_cell( ip_column = lv_column_alpha
|
||||
ip_row = lv_row_int
|
||||
ip_value = <fs_fldval>
|
||||
ip_abap_type = <ls_field_catalog>-abap_type
|
||||
ip_style = <ls_field_catalog>-style
|
||||
ip_conv_exit_length = ip_conv_exit_length ).
|
||||
me->set_cell( ip_column = lv_column_alpha
|
||||
ip_row = lv_row_int
|
||||
ip_value = <fs_fldval>
|
||||
ip_abap_type = <ls_field_catalog>-abap_type
|
||||
ip_currency = <fs_fldval_currency>
|
||||
ip_style = <ls_field_catalog>-style
|
||||
ip_conv_exit_length = ip_conv_exit_length ).
|
||||
ELSE.
|
||||
me->set_cell( ip_column = lv_column_alpha
|
||||
ip_row = lv_row_int
|
||||
ip_value = <fs_fldval>
|
||||
ip_currency = <fs_fldval_currency>
|
||||
ip_style = <ls_field_catalog>-style
|
||||
ip_conv_exit_length = ip_conv_exit_length ).
|
||||
ENDIF.
|
||||
|
@ -1182,11 +1195,13 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
me->set_cell( ip_column = lv_column_alpha
|
||||
ip_row = lv_row_int
|
||||
ip_abap_type = <ls_field_catalog>-abap_type
|
||||
ip_currency = <fs_fldval_currency>
|
||||
ip_value = <fs_fldval>
|
||||
ip_conv_exit_length = ip_conv_exit_length ).
|
||||
ELSE.
|
||||
me->set_cell( ip_column = lv_column_alpha
|
||||
ip_row = lv_row_int
|
||||
ip_currency = <fs_fldval_currency>
|
||||
ip_value = <fs_fldval>
|
||||
ip_conv_exit_length = ip_conv_exit_length ).
|
||||
ENDIF.
|
||||
|
@ -3948,12 +3963,18 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
|||
cl_abap_typedescr=>typekind_decfloat OR
|
||||
cl_abap_typedescr=>typekind_decfloat16 OR
|
||||
cl_abap_typedescr=>typekind_decfloat34.
|
||||
lo_addit = cl_abap_elemdescr=>get_f( ).
|
||||
CREATE DATA lo_value_new TYPE HANDLE lo_addit.
|
||||
ASSIGN lo_value_new->* TO <fs_numeric>.
|
||||
IF sy-subrc = 0.
|
||||
<fs_numeric> = <fs_value>.
|
||||
lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ).
|
||||
IF lv_value_type = cl_abap_typedescr=>typekind_packed
|
||||
AND ip_currency IS NOT INITIAL.
|
||||
lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_value>
|
||||
ip_currency = ip_currency ).
|
||||
ELSE.
|
||||
lo_addit = cl_abap_elemdescr=>get_f( ).
|
||||
CREATE DATA lo_value_new TYPE HANDLE lo_addit.
|
||||
ASSIGN lo_value_new->* TO <fs_numeric>.
|
||||
IF sy-subrc = 0.
|
||||
<fs_numeric> = <fs_value>.
|
||||
lv_value = zcl_excel_common=>number_to_excel_string( ip_value = <fs_numeric> ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
WHEN cl_abap_typedescr=>typekind_char OR cl_abap_typedescr=>typekind_string OR cl_abap_typedescr=>typekind_num OR
|
||||
|
|
|
@ -117,6 +117,12 @@
|
|||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<COMPTYPE>E</COMPTYPE>
|
||||
</DD03P>
|
||||
<DD03P>
|
||||
<FIELDNAME>CURRENCY_COLUMN</FIELDNAME>
|
||||
<ROLLNAME>REFFIELD</ROLLNAME>
|
||||
<ADMINFIELD>0</ADMINFIELD>
|
||||
<COMPTYPE>E</COMPTYPE>
|
||||
</DD03P>
|
||||
</DD03P_TABLE>
|
||||
<I18N_LANGS>
|
||||
<LANGU>1</LANGU>
|
||||
|
|
Loading…
Reference in New Issue
Block a user