Найти в Дзене
floridaString

Определение размера файла на application server SAP NetWeaver

Есть несколько способов определения размеров файлов, так или иначе сводятся к 4 способам. Полный листинг на github. (самый медленный и неэкономный по памяти). Для определения размера файла можно прочитать весь файл и посчитать его размер через xstrlen. ABAP help к функции доступен по ссылке. (также медленный, но экономный по памяти). Читаем файл по строкам, но фиксируем только длину строки через дополнение ACTUAL SIZE к READ DATASET. (экономный по памяти). (через команду операционной системы; если базис/регламент позволяет). Имеется транзакция SM49 (настройка команд на уровне операционной системы); предопределенные команды операционной системы можно запускать через функциональный модуль SXPG_COMMAND_EXECUTE. Как правило, в SAP NetWeaver есть предопределенная команда WWI_GET_DIR или DIR (нужно смотреть SM49). Команда выводит список файлов из директории, но указав доп.параметры (указаны в таблице) можно получить и размер. Опции могут отличаться в зависимости от операционной системы, но,
Оглавление

Есть несколько способов определения размеров файлов, так или иначе сводятся к 4 способам. Полный листинг на github.

Способ1 Через команду xstrlen.

(самый медленный и неэкономный по памяти). Для определения размера файла можно прочитать весь файл и посчитать его размер через xstrlen. ABAP help к функции доступен по ссылке.

Определение размера файла через команду xstrlen
Определение размера файла через команду xstrlen

Способ2 через дополнение ACTUAL SIZE к READ DATASET.

(также медленный, но экономный по памяти).

Читаем файл по строкам, но фиксируем только длину строки через дополнение ACTUAL SIZE к READ DATASET.

Размер файла через дополнение ACTUAL SIZE к READ DATASET
Размер файла через дополнение ACTUAL SIZE к READ DATASET

Способ3. Через вызов команды операционной системы, ФМ SXPG_COMMAND_EXECUTE

(экономный по памяти). (через команду операционной системы; если базис/регламент позволяет).

Имеется транзакция SM49 (настройка команд на уровне операционной системы); предопределенные команды операционной системы можно запускать через функциональный модуль SXPG_COMMAND_EXECUTE.

Как правило, в SAP NetWeaver есть предопределенная команда WWI_GET_DIR или DIR (нужно смотреть SM49).

Команды в SM49
Команды в SM49

Команда выводит список файлов из директории, но указав доп.параметры (указаны в таблице) можно получить и размер. Опции могут отличаться в зависимости от операционной системы, но, как правило, любая операционная система такую информацию может предоставить.

Пример вызова Для UNIX/Linux A4H
Пример вызова Для UNIX/Linux A4H
Команда DIR
Команда DIR
Результат вызова ФМа (ответ операционной системы)
Результат вызова ФМа (ответ операционной системы)

Код доступен на github тут.

Способ4. С помощью ФМа EPS_GET_FILE_ATTRIBUTES, который вызывает C-функцию C_FILE_ATTRIBUTE

В силу того, что вызывается C-функция, является самым быстрым способом. Однако имеет некоторые ограничения: имя файла (параметр IV_LONG_FILE_NAME) имеет длину 200символов, а название директории (папки) имеет длину 512символов (параметр IV_LONG_DIR_NAME).

Определение размера файла через С-функцию
Определение размера файла через С-функцию

Полный код на github.