Считывание файлов с фронтенда

Загрузку файлов с фронтенда рекомендуется делать с помощью статического метода: cl_gui_frontend_services=>gui_upload. Данный метод имеет множество параметров, описание которых я приведу далее.

FILENAME — собственно имя файла из которого хотим считать информацию.

FILETYPE — Тип файла, может принимать значения BIN, ASC, DAT. BIN — используется при считывании файла в байтовую последовательность. ASC — считывание как из текстового файла, DAT — тоже самое что и ASC, но при этом параметры has_field_separator, dat_mode  выставляются в ‘X’.

HAS_FIELD_SEPARATOR — Параметр отвечает за разделение между строками текстового файла. Например если файл имеет следующую структуру и значение параметра ‘X’:

1 2 3 (tab) 4 5 6
1 2 3 4 5 6

то дойдя до символа табуляции (cl_abap_char_utilities=>horizontal_tab) программа решит что это конец строки и начнет считывать следующую строку. Если параметр пустой строка будет считана полностью пока не встретит разделителя строки (cl_abap_char_utilities=>cr_lf), либо пока размер строки не превысит максимальный размер строки в таблице в которую происходит считывание — параметр DATA_TAB. Актуально для режимов ASC и DAT.

HEADER_LENGTH — используется при бинарном считывании файла, указывает количество байтов заголовка файла, для его пропуска. Сам заголовок будет находится в параметре HEADER. Актуально для режима BIN.

READ_BY_LINE — параметр ‘X’ указывает на то что считывание происходит построчно, т.е. не в структуру. Таблица в которую считываем файл должна состоять из одного компонента (например char255). Актуально для режимов ASC и DAT.

CODEPAGE — параметр указывает на то какую кодовую страницу необходимо использовать при считывании файла, если параметр пустой кодовая страница берется по умолчанию та в которой вошел пользователь — CL_GUI_FRONTEND_SERVICES=>GET_SAPLOGON_ENCODING. Например для считывания файла в кодировке UTF-8 (Без BOM) необходимо использовать кодовую страницу ‘4110’. Актуально для режимов ASC и DAT.

DAT_MODE — отвечает за считывание из файла компонентов структуры с типом D. В случае когда один компонентов имеет тип D необходимо выставлять параметр в ‘X’. Актуально для режимов ASC и DAT.

IGNORE_CERR — В случае когда ‘X’ ошибки связанные с конвертацией кодировки игнорируются. Актуально для режимов ASC и DAT.

REPLACEMENT — Символ в который преобразуются символы которые не получилось преобразовать при перекодировании. Актуально для режимов ASC и DAT.

VIRUS_SCAN_PROFILE — Указывает на профиль сканирования на вирусы, подробнее о сканировании на вирусы см в соответствующем разделе справки SAP.

FILELENGTH — Передает размер файла в байтах.

HEADER — см. параметр HEADER_LENGTH выше.

DATA_TAB — собственно таблица в которую будут попадать считываемые данные из файла. Структура таблицы определяется в зависимости от структуры файла или задачи.

Помните! Данный метод нельзя использовать в фоновом режиме. Ну и напоследок пример с которым все это дело проверялось:

Содержимое файла:
А16.12.1986
В16.12.1986

Пример считывания файла в RAW, последовательность байтов:

  • Pingback: Взаимодействие с фронтендом | ABAP Blog()

  • Влад

    Плохо, что в SAP нет возможности читать файлы частями…
    Например, читать длинный файл в цикле кусками по 1024 байта (1. первый кусок 0..1023; 2. с 1024 по 2047; etc.).
    Есть ли какое-то решение?

    • Astrafox

      Увы стандартных решений я не знаю, есть вариант расширения GUI клиента или вызова WinAPI, но это думаю того не стоит.

  • Astrafox

    Скорее всего появится, когда в SAP расширят модель работы с потоками на уровне файлов.