Merge branch 'main' into hvam/font2907

This commit is contained in:
Lars Hvam 2023-11-05 08:04:35 +01:00 committed by GitHub
commit 6c999a7a63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 250 additions and 25 deletions

View File

@ -48,7 +48,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
@ -77,7 +77,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
@ -133,6 +133,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
@ -498,8 +499,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 ).
@ -944,6 +945,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.
@ -1007,7 +1017,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.
@ -1691,4 +1705,5 @@ CLASS zcl_excel_common IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.

View File

@ -45,6 +45,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.
@ -467,6 +470,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.
* ========================

View File

@ -2859,6 +2859,21 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ).
ENDIF.
lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name_ns( name = 'oddHeader' uri = namespace-main ).
IF lo_ixml_hf_value_elem IS NOT INITIAL.
ls_odd_header-left_value = lo_ixml_hf_value_elem->get_value( ).
ENDIF.
lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name_ns( name = 'evenFooter' uri = namespace-main ).
IF lo_ixml_hf_value_elem IS NOT INITIAL.
ls_even_footer-left_value = lo_ixml_hf_value_elem->get_value( ).
ENDIF.
lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name_ns( name = 'evenHeader' uri = namespace-main ).
IF lo_ixml_hf_value_elem IS NOT INITIAL.
ls_even_header-left_value = lo_ixml_hf_value_elem->get_value( ).
ENDIF.
* 2do§1 Header/footer
" TODO.. get the rest.

View File

@ -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
@ -673,6 +675,7 @@ CLASS zcl_excel_worksheet DEFINITION
IMPORTING
!it_field_catalog TYPE zexcel_t_fieldcatalog OPTIONAL
!iv_begin_row TYPE int4 DEFAULT 2
!iv_end_row TYPE int4 DEFAULT 0
EXPORTING
!et_data TYPE STANDARD TABLE
!er_data TYPE REF TO data
@ -796,15 +799,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
@ -974,7 +977,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,
@ -1000,7 +1004,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.
@ -1099,6 +1104,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.
@ -1150,18 +1156,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.
@ -1170,11 +1184,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.
@ -2263,6 +2279,10 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
LOOP AT me->sheet_content ASSIGNING <ls_sheet_content> FROM lv_index.
AT NEW cell_row.
IF iv_end_row <> 0
AND <ls_sheet_content>-cell_row > iv_end_row.
EXIT.
ENDIF.
" New line
APPEND INITIAL LINE TO <lt_data> ASSIGNING <ls_data>.
lv_index = sy-tabix.
@ -3900,12 +3920,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

View File

@ -117,7 +117,132 @@
<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>
<LANGU>4</LANGU>
<LANGU>5</LANGU>
<LANGU>6</LANGU>
<LANGU>8</LANGU>
<LANGU>B</LANGU>
<LANGU>C</LANGU>
<LANGU>F</LANGU>
<LANGU>G</LANGU>
<LANGU>H</LANGU>
<LANGU>K</LANGU>
<LANGU>L</LANGU>
<LANGU>N</LANGU>
<LANGU>O</LANGU>
<LANGU>Q</LANGU>
<LANGU>R</LANGU>
<LANGU>S</LANGU>
<LANGU>T</LANGU>
<LANGU>U</LANGU>
<LANGU>V</LANGU>
<LANGU>W</LANGU>
<LANGU>c</LANGU>
<LANGU>d</LANGU>
</I18N_LANGS>
<DD02_TEXTS>
<item>
<DDLANGUAGE>1</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>4</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>5</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>6</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>8</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>B</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>C</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>F</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>G</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>H</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>K</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>L</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>N</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>O</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>Q</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>R</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>S</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>T</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>U</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>V</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>W</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>c</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
<item>
<DDLANGUAGE>d</DDLANGUAGE>
<DDTEXT>Fieldcatalog for Table Binding</DDTEXT>
</item>
</DD02_TEXTS>
</asx:values>
</asx:abap>
</abapGit>