SAPфорум.RU
https://sapboard.ru/forum/

Считывание даных из файла
https://sapboard.ru/forum/viewtopic.php?f=13&t=98696
Страница 1 из 1

Автор:  MaрьЯ [ Ср, май 13 2020, 08:18 ]
Заголовок сообщения:  Считывание даных из файла

Добрый день, подскажите, пожалуйста, как можно считать данные из файла, загруженного в SMW0.
Есть excel-файл, нужно считать данные, которые содержатся на странице книги.
Что-то вроде ФМ ALSM_EXCEL_TO_INTERNAL_TABLE
Заранее спасибо!

Автор:  John Doe [ Ср, май 13 2020, 12:08 ]
Заголовок сообщения:  Re: Считывание даных из файла

Simple option for Storing an Excel template in SAP and using in your ABAP program

Автор:  John Doe [ Ср, май 13 2020, 12:13 ]
Заголовок сообщения:  Re: Считывание даных из файла

Прошу прощения, пример неправильный. В нем только сам шаблон открывают, без работы с данными.

PS Лучше посмотреть в сторону использования ZWWW от Parazit

А так данные получить можно через ФМ WWWDATA_IMPORT, потом конвертировать через ФМ WSI_RAW_TO_STRING.

Автор:  MaрьЯ [ Пт, май 15 2020, 06:33 ]
Заголовок сообщения:  Re: Считывание даных из файла

John Doe написал:
Прошу прощения, пример неправильный. В нем только сам шаблон открывают, без работы с данными.

PS Лучше посмотреть в сторону использования ZWWW от Parazit

А так данные получить можно через ФМ WWWDATA_IMPORT, потом конвертировать через ФМ WSI_RAW_TO_STRING.


Спасибо, ZWWW для вывода днных, мне нужно считать содержимое файла, находящегося в SMW0, содержание самих ячеек.
При использовании WSI_RAW_TO_STRING у меня выходит особая ситуация CX_SY_CONVERSION_CODEPAGE, при выполнении
CALL METHOD convin->read
IMPORTING
data = output.

Автор:  John Doe [ Пт, май 15 2020, 10:54 ]
Заголовок сообщения:  Re: Считывание даных из файла

Если файл в формате XLSX, то с ним можно попробовать поработать как с XML через методы класса CL_XML_DOCUMENT.
Code:
DATA: mime      TYPE STANDARD TABLE OF w3mime WITH HEADER LINE.
DATA lv_bytelen TYPE i.
DATA lv_lines   TYPE i.
DATA lv_value_len TYPE wwwparams-value.
DATA: lo_document TYPE REF TO cl_xlsx_document.
DATA: lo_workbook       TYPE REF TO cl_xlsx_workbookpart,
      lo_wordsheetparts TYPE REF TO cl_openxml_partcollection,
      lo_wordsheetpart  TYPE REF TO cl_openxml_part,
      lo_sheet_content  TYPE xstring,
      lo_xml_document   TYPE REF TO cl_xml_document.

CONSTANTS lc_template_name TYPE w3objid VALUE 'ZJDTEST'.

START-OF-SELECTION.
  IMPORT mime FROM DATABASE wwwdata(mi) ID lc_template_name.
  DESCRIBE TABLE mime[] LINES lv_lines.

  CALL FUNCTION 'WWWPARAMS_READ'
    EXPORTING
      relid  = 'MI'
      objid  = lc_template_name
      name   = 'filesize'
    IMPORTING
      value  = lv_value_len
    EXCEPTIONS
      OTHERS = 1.

  lv_bytelen = lv_value_len.

  CALL METHOD cl_rswad_convert=>w3mime_to_xstring(
    EXPORTING
      i_bytelen = lv_bytelen
      i_t_table = mime[]
    IMPORTING
      e_xstring = DATA(lv_xstring) ).


  lo_document = cl_xlsx_document=>load_document( lv_xstring ).
  lo_workbook = lo_document->get_workbookpart( ).
  lo_wordsheetparts = lo_workbook->get_worksheetparts( ).
  lo_wordsheetpart = lo_wordsheetparts->get_part( 0 ).
  lo_sheet_content = lo_wordsheetpart->get_data( ).

  CREATE OBJECT lo_xml_document.
  lo_xml_document->parse_xstring( lo_sheet_content ).
  lo_xml_document->display( ).

Автор:  baboon [ Чт, май 21 2020, 14:35 ]
Заголовок сообщения:  Re: Считывание даных из файла

Посмотрите в гугле класс cl_fdt_xl_spreadsheet.
P.S. это только для XLSX.

Автор:  Parazit [ Чт, май 21 2020, 14:51 ]
Заголовок сообщения:  Re: Считывание даных из файла

Что за файл Excel у вас хранится в SMW0? Для чего он?

p.s.
Использовать Excel для обмена и хранения информации это принципиально неверное решение, которое принимают на многих проектах, тем самым обрекая себя на множество ненужных проблем.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/