пятница, 21 декабря 2012 г.

Использование Dalestech Utility Classes

По адресу 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.

Комментариев нет:

Отправить комментарий