2012-01-19 1 views
4

Im пытается написать текст в локальный файл, используя следующий код:ABAP: Howto Ввод текста в локальный файл

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).

Дополнительная информация Я получил эту работу с помощью FM GUI_DOWNLOAD, однако я должен использовать ОТКРЫТЫЙ DataSet, метод TRANSFER как Im писать это в фоновом режиме программы (будет называться по БСП с использованием ВВЕСТИ).

ответ

6

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

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

Update:
Если просто указать имя файла файл был помещен в каталог, указанный параметром профиля 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 (т. Е. Вместо диалогового окна «Сохранить как ...»).

+0

Большое спасибо за ваш ответ. Создание файла на сервере и предложение опции загрузки кажется лучшей идеей. Программа, если я пишу программу для сохранения «afile.txt» на сервере, я не могу найти ее на сервере. Знаете ли вы местоположение по умолчанию, где сохраняются файлы из программ, или как найти местоположение? –

+0

@ B. Боулз обновил свой ответ. – Turismo

+0

Большое спасибо за эту информацию. Я занимаюсь этим часами и не могу понять, как загрузить файл с сервера в мою папку. Я нашел текстовый файл «myfile.txt», используя AL11. Таким образом, его путь «./myfile.txt». Я пробовал использовать FM как «ARCHIVFILE_SERVER_TO_SERVER», но это только для копирования в AS. Я также пробовал использовать методы «cl_gui_frontend_services» без радости. Вы сделали это раньше и имеете пример кода. Я бы подумал, что загрузка файла через BSP была проще, чем это получается! Спасибо за вашу помощь! –

4

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

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

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

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

0

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

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

Смежные вопросы