CSV Initial External Date (#1190)

* CSV Initial External Date

Added code to set an initial external date other than the value returned by function module 'CONVERT_DATE_TO_EXTERNAL'.

* Default value as public constant

---------

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com>
This commit is contained in:
Aditya Waghmare 2024-02-15 19:50:09 +05:30 committed by GitHub
parent 39f92725a0
commit 35425c3220
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 57 additions and 18 deletions

View File

@ -9,6 +9,9 @@ CLASS zcl_excel_writer_csv DEFINITION
INTERFACES zif_excel_writer . INTERFACES zif_excel_writer .
"! Default value for initial dates e.g. user's format (DD.MM.YYYY, MM.DD.YYYY, etc.)
CONSTANTS c_default TYPE c LENGTH 10 VALUE 'DEFAULT' ##NO_TEXT.
CLASS-METHODS set_delimiter CLASS-METHODS set_delimiter
IMPORTING IMPORTING
VALUE(ip_value) TYPE c DEFAULT ';' . VALUE(ip_value) TYPE c DEFAULT ';' .
@ -24,7 +27,10 @@ CLASS zcl_excel_writer_csv DEFINITION
CLASS-METHODS set_active_sheet_index_by_name CLASS-METHODS set_active_sheet_index_by_name
IMPORTING IMPORTING
!i_worksheet_name TYPE zexcel_worksheets_name . !i_worksheet_name TYPE zexcel_worksheets_name .
*"* protected components of class ZCL_EXCEL_WRITER_2007 CLASS-METHODS set_initial_ext_date
IMPORTING
!ip_value TYPE char10 DEFAULT c_default .
*"* protected components of class ZCL_EXCEL_WRITER_CSV
*"* do not include other source files here!!! *"* do not include other source files here!!!
PROTECTED SECTION. PROTECTED SECTION.
*"* private components of class ZCL_EXCEL_WRITER_CSV *"* private components of class ZCL_EXCEL_WRITER_CSV
@ -38,6 +44,7 @@ CLASS zcl_excel_writer_csv DEFINITION
eol TYPE c LENGTH 2 VALUE cl_abap_char_utilities=>cr_lf ##NO_TEXT. eol TYPE c LENGTH 2 VALUE cl_abap_char_utilities=>cr_lf ##NO_TEXT.
CLASS-DATA worksheet_name TYPE zexcel_worksheets_name . CLASS-DATA worksheet_name TYPE zexcel_worksheets_name .
CLASS-DATA worksheet_index TYPE zexcel_active_worksheet . CLASS-DATA worksheet_index TYPE zexcel_active_worksheet .
CLASS-DATA initial_ext_date TYPE char10 VALUE c_default.
METHODS create METHODS create
RETURNING RETURNING
@ -53,7 +60,7 @@ ENDCLASS.
CLASS zcl_excel_writer_csv IMPLEMENTATION. CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION.
METHOD create. METHOD create.
@ -220,24 +227,28 @@ CLASS zcl_excel_writer_csv IMPLEMENTATION.
CASE <fs_sheet_content>-data_type. CASE <fs_sheet_content>-data_type.
WHEN 'd' OR 'D'. WHEN 'd' OR 'D'.
lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ). IF <fs_sheet_content>-cell_value IS INITIAL AND initial_ext_date <> c_default.
TRY. lc_value = initial_ext_date.
lv_date = lc_value. ELSE.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL' lc_value = zcl_excel_common=>excel_string_to_date( ip_value = <fs_sheet_content>-cell_value ).
EXPORTING TRY.
date_internal = lv_date lv_date = lc_value.
IMPORTING CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
date_external = lv_tmp EXPORTING
EXCEPTIONS date_internal = lv_date
date_internal_is_invalid = 1 IMPORTING
OTHERS = 2. date_external = lv_tmp
IF sy-subrc = 0. EXCEPTIONS
lc_value = lv_tmp. date_internal_is_invalid = 1
ENDIF. OTHERS = 2.
IF sy-subrc = 0.
lc_value = lv_tmp.
ENDIF.
CATCH cx_sy_conversion_no_number. CATCH cx_sy_conversion_no_number.
ENDTRY. ENDTRY.
ENDIF.
WHEN 't' OR 'T'. WHEN 't' OR 'T'.
lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ). lc_value = zcl_excel_common=>excel_string_to_time( ip_value = <fs_sheet_content>-cell_value ).
@ -302,6 +313,11 @@ CLASS zcl_excel_writer_csv IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_initial_ext_date.
initial_ext_date = ip_value.
ENDMETHOD.
METHOD zif_excel_writer~write_file. METHOD zif_excel_writer~write_file.
me->excel = io_excel. me->excel = io_excel.
ep_file = me->create( ). ep_file = me->create( ).

View File

@ -32,6 +32,11 @@
<LANGU>I</LANGU> <LANGU>I</LANGU>
<DESCRIPT>Create CSV ; Delimited format</DESCRIPT> <DESCRIPT>Create CSV ; Delimited format</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>C_DEFAULT</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Constant for string &apos;DEFAULT&apos;</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>DELIMITER</CMPNAME> <CMPNAME>DELIMITER</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -72,6 +77,11 @@
<LANGU>I</LANGU> <LANGU>I</LANGU>
<DESCRIPT>Excel creator</DESCRIPT> <DESCRIPT>Excel creator</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>INITIAL_EXT_DATE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Initial External Date</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>SET_ACTIVE_SHEET_INDEX</CMPNAME> <CMPNAME>SET_ACTIVE_SHEET_INDEX</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -122,6 +132,11 @@
<LANGU>I</LANGU> <LANGU>I</LANGU>
<DESCRIPT>Set End Of Line character</DESCRIPT> <DESCRIPT>Set End Of Line character</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>SET_INITIAL_EXT_DATE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Set Initial External Date (replacing default &apos;00.00.0000&apos;)</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>WORKSHEET_INDEX</CMPNAME> <CMPNAME>WORKSHEET_INDEX</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -143,6 +158,14 @@
<DESCRIPT>Worksheets name</DESCRIPT> <DESCRIPT>Worksheets name</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
<DESCRIPTIONS_SUB>
<SEOSUBCOTX>
<CMPNAME>SET_INITIAL_EXT_DATE</CMPNAME>
<SCONAME>IP_VALUE</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Input Value</DESCRIPT>
</SEOSUBCOTX>
</DESCRIPTIONS_SUB>
</asx:values> </asx:values>
</asx:abap> </asx:abap>
</abapGit> </abapGit>