По адресу Dalestech можно получить пакет классов Utility Classes. Среди множества классов есть скласс zcl_dt_conversions, который позволяет выполнять преобразование содержимого таблиц с данными в текст формата CSV.
Пример использования инструмента.
METHOD save_to_csv.
* IMPORTING im_file_name TYPE string
* EXCEPTIONS empty_file_name
* empty_result_tbl
* convert_error
* file_error.
DATA it_data TYPE REF TO data.
FIELD-SYMBOLS:
<lfs_it_data> TYPE ANY TABLE.
DATA lv_tbl_size TYPE i.
" Проконтролировать путь к файлу.
IF im_file_name IS INITIAL.
RAISE empty_file_name.
ENDIF.
" Проконтролировать, что данные в таблице размеров есть.
IF LINES( sizes_tbl ) = 0.
RAISE empty_result_tbl.
ENDIF.
" определение объекта данных типа таблица для формирования
" содержимого таблицы в CSV формате.
DATA:
lt_csv_data TYPE zdtt_string.
TRY.
CALL METHOD zcl_dt_conversions=>convertitabtocsv
EXPORTING
inoncsv = sizes_tbl
addcolumnheadings = zcl_dt_constants=>false
usedddescriptions = zcl_dt_constants=>false
IMPORTING
icsv = lt_csv_data.
CATCH zcx_dtconversions.
RAISE convert_error.
ENDTRY.
" Добавить строку осмысленного заголовка.
DATA csv_title TYPE string.
CONCATENATE '"Размер таблицы, записи' pa_name INTO csv_title SEPARATED BY space.
CONCATENATE csv_title '", "Размер таблицы, байты"'
INTO csv_title.
INSERT csv_title INTO lt_csv_data INDEX 1.
" Объекты данных для организации сохранения в файле.
DATA:
ext_file TYPE REF TO zcl_dt_file,
msg TYPE REF TO zcl_dt_runtimemessage.
" Если есть данные для сохранения, то сохранить их.
IF LINES( lt_csv_data ) > 0.
TRY.
CALL METHOD zcl_dt_file=>createbycompletepathandfile
EXPORTING
filepathandfilename = im_file_name
RECEIVING
objfile = ext_file.
CALL METHOD ext_file->download
EXPORTING
idatatodownload = lt_csv_data
RECEIVING
objmessage = msg.
CATCH zcx_dtfile.
RAISE file_error.
ENDTRY.
ENDIF.
ENDMETHOD.
Пример использования инструмента.
METHOD save_to_csv.
* IMPORTING im_file_name TYPE string
* EXCEPTIONS empty_file_name
* empty_result_tbl
* convert_error
* file_error.
DATA it_data TYPE REF TO data.
FIELD-SYMBOLS:
<lfs_it_data> TYPE ANY TABLE.
DATA lv_tbl_size TYPE i.
" Проконтролировать путь к файлу.
IF im_file_name IS INITIAL.
RAISE empty_file_name.
ENDIF.
" Проконтролировать, что данные в таблице размеров есть.
IF LINES( sizes_tbl ) = 0.
RAISE empty_result_tbl.
ENDIF.
" определение объекта данных типа таблица для формирования
" содержимого таблицы в CSV формате.
DATA:
lt_csv_data TYPE zdtt_string.
TRY.
CALL METHOD zcl_dt_conversions=>convertitabtocsv
EXPORTING
inoncsv = sizes_tbl
addcolumnheadings = zcl_dt_constants=>false
usedddescriptions = zcl_dt_constants=>false
IMPORTING
icsv = lt_csv_data.
CATCH zcx_dtconversions.
RAISE convert_error.
ENDTRY.
" Добавить строку осмысленного заголовка.
DATA csv_title TYPE string.
CONCATENATE '"Размер таблицы, записи' pa_name INTO csv_title SEPARATED BY space.
CONCATENATE csv_title '", "Размер таблицы, байты"'
INTO csv_title.
INSERT csv_title INTO lt_csv_data INDEX 1.
" Объекты данных для организации сохранения в файле.
DATA:
ext_file TYPE REF TO zcl_dt_file,
msg TYPE REF TO zcl_dt_runtimemessage.
" Если есть данные для сохранения, то сохранить их.
IF LINES( lt_csv_data ) > 0.
TRY.
CALL METHOD zcl_dt_file=>createbycompletepathandfile
EXPORTING
filepathandfilename = im_file_name
RECEIVING
objfile = ext_file.
CALL METHOD ext_file->download
EXPORTING
idatatodownload = lt_csv_data
RECEIVING
objmessage = msg.
CATCH zcx_dtfile.
RAISE file_error.
ENDTRY.
ENDIF.
ENDMETHOD.
Комментариев нет:
Отправить комментарий