Как записать текст в локальный файл - PullRequest
4 голосов
/ 19 января 2012

Я пытаюсь записать текст в локальный файл (т.е. на моем ноутбуке), используя следующий код:

data: fname(60), text type string value 'la la la'.
fname = 'myfile.txt'.
OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default.
TRANSFER text TO fname.
CLOSE DATASET fname.
write 'done'.

Программа работает нормально и после выполнения появляется сообщение «выполнено». Однако я не могу найти текстовый файл «myfile.txt» на моем ПК (его нет в рабочем каталоге SAP).

Дополнительная информация

Я получил эту работу, используя функциональный модуль GUI_DOWNLOAD, однако я должен использовать операторы OPEN DATASET и TRANSFER , поскольку я пишу это в фоновой программе ( быть вызванным BSP с использованием SUBMIT).

Ответы [ 3 ]

6 голосов
/ 19 января 2012

Невозможно выполнить запись клиенту во время фоновой обработки.
Природа фоновой обработки заключается в том, что ни один клиентский компьютер не должен быть подключен к WAS.

Если создание файлаотнимает много времени, вы можете инициировать создание файла в WAS, а затем предложить список файлов для загрузки где-нибудь в вашем приложении BSP.

Обновление:
Если вы просто укажетеимя файла файл помещается в каталог, указанный параметром профиля DIR_HOME.Вы можете проверить / отредактировать параметры профиля в RZ11 или просмотреть каталоги в AL11.

Для получения общей информации о работе с файлами в ABAP вы можете обратиться к http://wiki.sdn.sap.com/wiki/display/ABAP/Working+with+files

второе обновление:
Как правило, загрузка данных осуществляется с помощью настроек.правильные поля заголовка http и вставка двоичных данных в ответ http.
Вы должны взглянуть на cl_bsp_utility=>download.
Это устанавливает правильные заголовки содержимого в вашем ответе.Вы должны указать свои данные (как XSTRING) и указать, какие Content-Type и Content-Disposition вы хотите.
Content-Type является типом файла MIME.Таким образом, для файла Excel, который может иметь значение application/vnd.ms-excel или вы можете использовать что-то общее, например application/octetstream.
Content-Disposition, можно указать браузеру имя файла по умолчанию для использования.Пример значения может быть attachment; filename=filexyz.xls.

Имейте в виду, что браузеры могут вести себя немного по-другому, основываясь на комбинации Content-Type и Content-Disposition (т. Е. Предлагая диалог «Сохранить как ...» вместо показа его в строке).

5 голосов
/ 19 января 2012

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

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

  2. Вы можете запустить FTP-сервер на целевом компьютере и загрузить туда файлы ftp.SAP имеет функциональные модули для решения этой проблемы.Посмотрите на группу функций SFTP.

  3. Если на обеих машинах установлена ​​какая-либо версия UNIX, вы даже можете SCP файлы на целевой машине (так как большинство Unix-систем будут включатьssh и, следовательно, scp).Вам нужно будет создать внешнюю команду в SM49, а затем настроить аутентификацию с открытым ключом с сервера на целевой компьютер, что немного сложнее, если у вас нет прав администратора на сервере SAP, но есть способы обойти это.тоже.

0 голосов
/ 19 января 2012

Как пишет Turismo: в фоновой обработке нельзя писать на ПК.Для записи на ПК требуется подключенный SAPGui (= клиент).

OPEN DATASET и TRANSFER записывает данные на сервер.

...