Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: jacknk88 от Октябрь 28, 2013, 09:36:39 am
-
здраствуйте.
кто-нибудь знает как можно создать файл в фоновом режиме ? ФМ GUI_DOWNLOAD предназначен только для диалогового режима. в se37 много разных ФМ есть с *DOWNLOAD* но какой из них подходит не знаю. Мне нужно простой текстовый файл на сервере создать фоново.
или нужно через dataset работать...что-то вроде этого
data: file TYPE string,
begin of ls_address,
line(400) type c,
end of ls_address,
lt_address LIKE ls_address OCCURS 0.
ls_address = 'test 0'.
APPEND ls_address TO lt_address.
ls_address = 'test 1'.
APPEND ls_address TO lt_address.
ls_address = 'test 2'.
APPEND ls_address TO lt_address.
ls_address = 'example 0'.
APPEND ls_address TO lt_address.
ls_address = 'example 1'.
APPEND ls_address TO lt_address.
ls_address = 'example 2'.
APPEND ls_address TO lt_address.
DATA mess TYPE string.
file = 'C:\Users\USER\Desktop\' && sy-datum && sy-UZEIT && '.txt'.
OPEN DATASET file FOR APPENDING
IN TEXT MODE ENCODING DEFAULT MESSAGE mess.
IF sy-subrc ne 0.
MESSAGE mess TYPE 'I'.
ENDIF.
LOOP at lt_address INTO ls_address.
* Transfer the Recored to application server
TRANSFER ls_address TO file.
ENDLOOP.
CLOSE DATASET file.
-
или нужно через dataset работать...что-то вроде этого
Ну вы сами уже ответили на свой вопрос. По поводу кодировок при использовании dataset можно почитать: http://sapforum.biz/index.php?topic=2053.0
-
дело в том что мне нужно сначала создать этот файл, а open dataset только открывает вроде и не создает....по крайней мере, у меня не получилсоь создать
-
дело в том что мне нужно сначала создать этот файл, а open dataset только открывает вроде и не создает....по крайней мере, у меня не получилсоь создать
а нет...должен создать
Opens the file for writing. If the file already exists, its contents are deleted unless it is already open. If it is open, the positioning is set back to the start of the file. If the file does not exist, it is created.
только вместо FOR APPENDING надо использовать FOR OUTPUT...но и так не выходит
-
только вместо FOR APPENDING надо использовать FOR OUTPUT...но и так не выходит
У вас проблема с полномочиями скорее всего. Поэтому файл и не создается, т.е. пользователь от которого идет создание файла для этой файловой системы не авторизован. Решайте вопрос с базисом.
-
У вас проблема с полномочиями скорее всего. Поэтому файл и не создается, т.е. пользователь от которого идет создание файла для этой файловой системы не авторизован. Решайте вопрос с базисом.
так значит при использовании ФМ GUI_DOWNLOAD и OPEN DATASET разные полномочия проверяются...потому что с ФМ все работает в диалоговом решиме
у меня еще вопрос возник: на каких серверах OPEN DATASET позволяет записать файл...на любых на которые у пользователя есть полномочия?
еще интересно вот что...я после создания файла считываю данные с него и все получается, но файлика на сервере нет вообще
data: file TYPE string.
TYPES: begin of t_address,
line(40) type c,
end of t_address.
data: lt_address TYPE STANDARD TABLE OF t_address,
ls_address LIKE LINE OF lt_address.
ls_address = 'test 0'.
APPEND ls_address TO lt_address.
ls_address = 'test 1'.
APPEND ls_address TO lt_address.
ls_address = 'test 2'.
APPEND ls_address TO lt_address.
ls_address = 'example 0'.
APPEND ls_address TO lt_address.
ls_address = 'example 1'.
APPEND ls_address TO lt_address.
ls_address = 'example 2'.
APPEND ls_address TO lt_address.
file = 'Z:\' && sy-datum && sy-UZEIT && '.txt'.
DATA mess TYPE string.
OPEN DATASET file FOR OUTPUT
IN TEXT MODE
ENCODING DEFAULT
MESSAGE mess.
IF sy-subrc ne 0.
* MESSAGE mess TYPE 'I'.
mess = sy-subrc.
ENDIF.
LOOP at lt_address INTO ls_address.
* Transfer the Recored to application server
TRANSFER ls_address TO file.
ENDLOOP.
CLOSE DATASET file.
WRITE: / mess.
OPEN DATASET file FOR INPUT IN TEXT MODE
ENCODING DEFAULT.
WHILE sy-subrc = 0.
READ DATASET file INTO mess.
WRITE / mess.
ENDWHILE.
CLOSE DATASET file.
и в результате на экран выходит вот что
test 0
test 1
test 2
example 0
example 1
example 2
-
так значит при использовании ФМ GUI_DOWNLOAD и OPEN DATASET разные полномочия проверяются...потому что с ФМ все работает в диалоговом решиме
Даже не знаю откуда начинать то... с того что при записи с локальной станции проверяются доступы локальной станции, а при записи из фона полномочия сервера приложений. В общем похоже вы не очень представляете как работает вот этот вот 3 в бывшем названии системы SAP R/3.
-
В общем похоже вы не очень представляете как работает вот этот вот 3 в бывшем названии системы SAP R/3.
это точно))....я ж всего годик батрачу с sap-ом))
видимо все таки проблема с полномочиями
спасибо!
-
это точно))....я ж всего годик батрачу с sap-ом))
видимо все таки проблема с полномочиями
спасибо!
Ну смотри когда работа идет в фоне, то задача выполняется на сервере приложений и соответственно он должен иметь доступ к этому пути, начиная от имени диска Z: в твоем случае. Правда там может оказаться, что сервер приложение под юниксом, поэтому дисков с буквенными именами он не знает, там по факт удаленный каталог должен быть тем или иным способом примонтирован в дерево каталогов сервера приложений. В общем это с базисом надо решать проблему.