mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 16:56:11 +08:00
Merge branch 'main' into hvam/font2907
This commit is contained in:
commit
ee587fe5a4
|
@ -54,6 +54,7 @@
|
||||||
{"object": "ZCL_EXCEL_WRITER_2007", "class": "ltc_column_formula", "method": "one_column_formula", "note": "?? CALL TRANSFORMATION xml_header = 'no'"},
|
{"object": "ZCL_EXCEL_WRITER_2007", "class": "ltc_column_formula", "method": "one_column_formula", "note": "?? CALL TRANSFORMATION xml_header = 'no'"},
|
||||||
{"object": "ZCL_EXCEL_WRITER_2007", "class": "ltc_column_formula", "method": "two_column_formulas", "note": "??"},
|
{"object": "ZCL_EXCEL_WRITER_2007", "class": "ltc_column_formula", "method": "two_column_formulas", "note": "??"},
|
||||||
|
|
||||||
|
{"object": "ZCL_EXCEL_COMMON", "class": "ltc_utclong_to_excel_string", "method": "simple", "note": "?? missing method CL_ABAP_TSTMP=>UTCLONG2TSTMP_SHORT, I'm too lazy to add it today"},
|
||||||
{"object": "ZCL_EXCEL_COMMON", "class": "lcl_excel_common_test", "method": "convert_column2int_oob_empty", "note": "?? sy value defaults"}
|
{"object": "ZCL_EXCEL_COMMON", "class": "lcl_excel_common_test", "method": "convert_column2int_oob_empty", "note": "?? sy value defaults"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@abaplint/cli": "^2.112.10",
|
"@abaplint/cli": "^2.112.10",
|
||||||
"@abaplint/transpiler-cli": "^2.10.7",
|
"@abaplint/transpiler-cli": "^2.10.9",
|
||||||
"@abaplint/runtime": "^2.10.7"
|
"@abaplint/runtime": "^2.10.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,11 @@ CLASS zcl_excel_common DEFINITION
|
||||||
!ip_value TYPE t
|
!ip_value TYPE t
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ep_value) TYPE zexcel_cell_value .
|
VALUE(ep_value) TYPE zexcel_cell_value .
|
||||||
|
CLASS-METHODS utclong_to_excel_string
|
||||||
|
IMPORTING
|
||||||
|
!ip_utclong TYPE any
|
||||||
|
RETURNING
|
||||||
|
VALUE(ep_value) TYPE zexcel_cell_value .
|
||||||
TYPES: t_char10 TYPE c LENGTH 10.
|
TYPES: t_char10 TYPE c LENGTH 10.
|
||||||
TYPES: t_char255 TYPE c LENGTH 255.
|
TYPES: t_char255 TYPE c LENGTH 255.
|
||||||
CLASS-METHODS split_file
|
CLASS-METHODS split_file
|
||||||
|
@ -1725,4 +1730,19 @@ CLASS zcl_excel_common IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD utclong_to_excel_string.
|
||||||
|
DATA lv_timestamp TYPE timestamp.
|
||||||
|
DATA lv_date TYPE d.
|
||||||
|
DATA lv_time TYPE t.
|
||||||
|
|
||||||
|
" The data type UTCLONG and the method UTCLONG2TSTMP_SHORT are not available before ABAP 7.54
|
||||||
|
" -> Need of a dynamic call to avoid compilation error before ABAP 7.54
|
||||||
|
|
||||||
|
CALL METHOD cl_abap_tstmp=>('UTCLONG2TSTMP_SHORT')
|
||||||
|
EXPORTING utclong = ip_utclong
|
||||||
|
RECEIVING timestamp = lv_timestamp.
|
||||||
|
CONVERT TIME STAMP lv_timestamp TIME ZONE 'UTC ' INTO DATE lv_date TIME lv_time.
|
||||||
|
ep_value = |{ date_to_excel_string( lv_date ) + time_to_excel_string( lv_time ) }|.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -136,6 +136,17 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltc_utclong_to_excel_string DEFINITION
|
||||||
|
FOR TESTING
|
||||||
|
RISK LEVEL HARMLESS
|
||||||
|
DURATION SHORT.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS simple FOR TESTING.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS lcl_Excel_Common_Test IMPLEMENTATION
|
* CLASS lcl_Excel_Common_Test IMPLEMENTATION
|
||||||
|
@ -1812,3 +1823,33 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltc_utclong_to_excel_string IMPLEMENTATION.
|
||||||
|
METHOD simple.
|
||||||
|
FIELD-SYMBOLS <lv_typekind_utclong> TYPE abap_typekind.
|
||||||
|
FIELD-SYMBOLS <lv_utclong> TYPE simple.
|
||||||
|
DATA lo_rtti_utclong TYPE REF TO cl_abap_datadescr.
|
||||||
|
DATA lv_variable_utclong TYPE REF TO data.
|
||||||
|
DATA lv_excel_string TYPE zexcel_cell_value.
|
||||||
|
|
||||||
|
" Skip this test before ABAP 7.54 (UTCLONG does not exist).
|
||||||
|
" Need of dynamic referencing and dynamic call to avoid compilation error before ABAP 7.54.
|
||||||
|
|
||||||
|
ASSIGN ('CL_ABAP_TYPEDESCR=>TYPEKIND_UTCLONG') TO <lv_typekind_utclong>.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL METHOD cl_abap_elemdescr=>('GET_UTCLONG')
|
||||||
|
RECEIVING p_result = lo_rtti_utclong.
|
||||||
|
CREATE DATA lv_variable_utclong TYPE HANDLE lo_rtti_utclong.
|
||||||
|
ASSIGN lv_variable_utclong->* TO <lv_utclong>.
|
||||||
|
|
||||||
|
<lv_utclong> = '2024-08-04 19:47:00.9999999'.
|
||||||
|
lv_excel_string = zcl_excel_common=>utclong_to_excel_string( <lv_utclong> ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals( exp = '45508.82430555555556'
|
||||||
|
act = lv_excel_string ).
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
||||||
|
|
|
@ -708,6 +708,10 @@ CLASS zcl_excel_worksheet DEFINITION
|
||||||
*"* private components of class ZCL_EXCEL_WORKSHEET
|
*"* private components of class ZCL_EXCEL_WORKSHEET
|
||||||
*"* do not include other source files here!!!
|
*"* do not include other source files here!!!
|
||||||
TYPES ty_table_settings TYPE STANDARD TABLE OF zexcel_s_table_settings WITH DEFAULT KEY.
|
TYPES ty_table_settings TYPE STANDARD TABLE OF zexcel_s_table_settings WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
CLASS-DATA typekind_utclong TYPE abap_typekind.
|
||||||
|
CLASS-DATA variable_utclong TYPE REF TO data.
|
||||||
|
|
||||||
DATA active_cell TYPE zexcel_s_cell_data .
|
DATA active_cell TYPE zexcel_s_cell_data .
|
||||||
DATA charts TYPE REF TO zcl_excel_drawings .
|
DATA charts TYPE REF TO zcl_excel_drawings .
|
||||||
DATA columns TYPE REF TO zcl_excel_columns .
|
DATA columns TYPE REF TO zcl_excel_columns .
|
||||||
|
@ -2023,12 +2027,21 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD class_constructor.
|
METHOD class_constructor.
|
||||||
|
FIELD-SYMBOLS <lv_typekind> TYPE abap_typekind.
|
||||||
|
DATA lo_rtti TYPE REF TO cl_abap_datadescr.
|
||||||
|
|
||||||
c_messages-formula_id_only_is_possible = |{ 'If Formula ID is used, value and formula must be empty'(008) }|.
|
c_messages-formula_id_only_is_possible = |{ 'If Formula ID is used, value and formula must be empty'(008) }|.
|
||||||
c_messages-column_formula_id_not_found = |{ 'The Column Formula does not exist'(009) }|.
|
c_messages-column_formula_id_not_found = |{ 'The Column Formula does not exist'(009) }|.
|
||||||
c_messages-formula_not_in_this_table = |{ 'The cell uses a Column Formula which should be part of the same table'(010) }|.
|
c_messages-formula_not_in_this_table = |{ 'The cell uses a Column Formula which should be part of the same table'(010) }|.
|
||||||
c_messages-formula_in_other_column = |{ 'The cell uses a Column Formula which is in a different column'(011) }|.
|
c_messages-formula_in_other_column = |{ 'The cell uses a Column Formula which is in a different column'(011) }|.
|
||||||
|
|
||||||
|
ASSIGN ('CL_ABAP_TYPEDESCR=>TYPEKIND_UTCLONG') TO <lv_typekind>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
typekind_utclong = <lv_typekind>.
|
||||||
|
CALL METHOD cl_abap_elemdescr=>('GET_UTCLONG') RECEIVING p_result = lo_rtti.
|
||||||
|
CREATE DATA variable_utclong TYPE HANDLE lo_rtti.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -3847,6 +3860,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
||||||
<fs_typekind_int8> TYPE abap_typekind.
|
<fs_typekind_int8> TYPE abap_typekind.
|
||||||
FIELD-SYMBOLS: <fs_column_formula> TYPE mty_s_column_formula.
|
FIELD-SYMBOLS: <fs_column_formula> TYPE mty_s_column_formula.
|
||||||
FIELD-SYMBOLS: <ls_fieldcat> TYPE zexcel_s_fieldcatalog.
|
FIELD-SYMBOLS: <ls_fieldcat> TYPE zexcel_s_fieldcatalog.
|
||||||
|
FIELD-SYMBOLS <lv_utclong> TYPE simple.
|
||||||
|
|
||||||
IF ip_value IS NOT SUPPLIED
|
IF ip_value IS NOT SUPPLIED
|
||||||
AND ip_formula IS NOT SUPPLIED
|
AND ip_formula IS NOT SUPPLIED
|
||||||
|
@ -3990,6 +4004,13 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
||||||
* ENDIF.
|
* ENDIF.
|
||||||
* End of change issue #152 - don't touch exisiting style if only value is passed
|
* End of change issue #152 - don't touch exisiting style if only value is passed
|
||||||
|
|
||||||
|
WHEN typekind_utclong.
|
||||||
|
ASSIGN variable_utclong->* TO <lv_utclong>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
<lv_utclong> = <fs_value>.
|
||||||
|
lv_value = zcl_excel_common=>utclong_to_excel_string( <lv_utclong> ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
zcx_excel=>raise_text( 'Invalid data type of input value' ).
|
zcx_excel=>raise_text( 'Invalid data type of input value' ).
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
@ -4095,6 +4116,21 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
||||||
ip_row = lv_row
|
ip_row = lv_row
|
||||||
ip_number_format_format_code = lo_format_code_datetime ).
|
ip_number_format_format_code = lo_format_code_datetime ).
|
||||||
|
|
||||||
|
WHEN typekind_utclong.
|
||||||
|
TRY.
|
||||||
|
stylemapping = me->excel->get_style_to_guid( <fs_sheet_content>-cell_style ).
|
||||||
|
CATCH zcx_excel .
|
||||||
|
ENDTRY.
|
||||||
|
IF stylemapping-complete_stylex-number_format-format_code IS INITIAL OR
|
||||||
|
stylemapping-complete_style-number_format-format_code IS INITIAL.
|
||||||
|
lo_format_code_datetime = zcl_excel_style_number_format=>c_format_date_datetime.
|
||||||
|
ELSE.
|
||||||
|
lo_format_code_datetime = stylemapping-complete_style-number_format-format_code.
|
||||||
|
ENDIF.
|
||||||
|
me->change_cell_style( ip_column = lv_column
|
||||||
|
ip_row = lv_row
|
||||||
|
ip_number_format_format_code = lo_format_code_datetime ).
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
* End of change issue #152 - don't touch exisiting style if only value is passed
|
* End of change issue #152 - don't touch exisiting style if only value is passed
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user