Текущее время: Вс, июл 20 2025, 02:10

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Приведение шестнадцатиричного типа к символьному.
СообщениеДобавлено: Пт, авг 11 2006, 14:59 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Заранее извиняюсь за детский вопрос, но сижу за книжкой по абапу уже третий день:)
Нужно вывести в файл на локальной машине шестнадцатиричную строку. Я insert-ом вношу её во внутреннюю таблицу, которая тоже состоит из шестнадцатиричных строк и потом при вызове функции 'WS_DOWNLOAD' происходит ошибка при обращиении из неё к strlen, которая не принимает строки тип hex.
Теперь я сделал внутреннюю таблицу со строками типа с, я не знаю как преобразовать шестнадцатиричную исходную строку к символьной строке.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 11 2006, 15:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
http://sapboard.ru/forum/viewtopic.php?t=1841

http://sapboard.ru/forum/viewtopic.php?t=9992

http://sapboard.ru/forum/viewtopic.php?t=4433

http://sapboard.ru/forum/viewtopic.php?t=1977


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 15:11 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Что-то я там не нашёл что мне нужно. Я хочу прочесть файл внешний с локального компа в шестнадцатиричном коде, так как он виден через FAR.При считывании его с помощью функции WS_DOUNLOAD в строку типа х, результаты не совпадают(например, вместо D3 получаю BF).А хотелось бы получать всё же D3. И потом корректно записать в другой файл шестнадцатеричное значение, чтобы оно не преобразовывалось.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 15:24 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Читаете в двоичном режиме?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 15:32 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Читаю вот так:
CALL FUNCTION 'WS_UPLOAD'
EXPORTING FILENAME = in_file
TABLES
DATA_TAB = buff_table
EXCEPTIONS
file_open_error = 1 others = 2.
CASE sy-subrc.
WHEN 1.
WRITE: 'Error when file opened'.
EXIT.
WHEN 2.
WRITE: 'Error during data transfer'.
EXIT.
ENDCASE.
в buff_table строки типа х
Я новичок в абап, поэтому как читать тут в двоичном виде не знаю


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 15:45 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Есть там поле FILETYPE, ему надо передать BIN
Тип вот этого:
Code:
*Download file to presentation server
CALL FUNCTION 'GUI_DOWNLOAD'
       EXPORTING
            bin_filesize            = lf_length
            filetype                = 'BIN'
            filename                = lf_file
       TABLES
            data_tab                = lt_input
       EXCEPTIONS
            FILE_WRITE_ERROR        = 1
            NO_BATCH                = 2
            GUI_REFUSE_FILETRANSFER = 3
            INVALID_TYPE            = 4
            NO_AUTHORITY            = 5
            UNKNOWN_ERROR           = 6
            HEADER_NOT_ALLOWED      = 7
            SEPARATOR_NOT_ALLOWED   = 8
            FILESIZE_NOT_ALLOWED    = 9
            HEADER_TOO_LONG         = 10
            DP_ERROR_CREATE         = 11
            DP_ERROR_SEND           = 12
            DP_ERROR_WRITE          = 13
            UNKNOWN_DP_ERROR        = 14
            ACCESS_DENIED           = 15
            DP_OUT_OF_MEMORY        = 16
            DISK_FULL               = 17
            DP_TIMEOUT              = 18
            FILE_NOT_FOUND          = 19
            DATAPROVIDER_EXCEPTION  = 20
            CONTROL_FLUSH_ERROR     = 21.
IF SY-subrc <> 0.
  RAISE CAN_NOT_SAVE_PC_FILE.
ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 15:56 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
lf_lenght чему равняться должно
и, если есть возможность, то аналогичную распечатку GUI_UPLOAD хотелось бы увидеть:)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 16 2006, 16:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
это длина сохраняемого файла, без нее не выйдет. GUI_UPLOAD посмотрете в se37, она вам к стати и вернет длину считанного файла. В ней все аналогично!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 17 2006, 11:56 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Спасибо:)Наконец-то разобрался:)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 17 2006, 16:15 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Теперь возникла проблема при обращении к функции WS_UPLOAD при передаче имени файла в функцию WS_UPLOAD из параметра.
ДинамОшибка CALL_FUNCTION_CONFLICT_TYPE
ОсобСит. CX_SY_DYN_CALL_ILLEGAL_TYPE

А вот кусок кода, где она происходит.

PARAMETERS in_file(128) DEFAULT 'C:\zinput.txt'.
PARAMETERS out_file(128) DEFAULT 'C:\zoutput0.txt' LOWER CASE.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',
r2 RADIOBUTTON GROUP rad1.
DATA: i TYPE i VALUE 0, n TYPE i VALUE 0.
DATA: flength TYPE i.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = in_file
filetype = 'BIN'
IMPORTING
filelength = flength
TABLES
DATA_TAB = buff_table
EXCEPTIONS
file_open_error = 1 others = 2.
CASE sy-subrc.
WHEN 1.
WRITE: 'Error when file opened'.
EXIT.
WHEN 2.
WRITE: 'Error during data transfer'.
EXIT.
ENDCASE.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Чт, авг 17 2006, 17:18 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Версия Erp2004
A_l_e_x написал(а):
PARAMETERS in_file(128) DEFAULT 'C:\zinput.txt'.
PARAMETERS out_file(128) DEFAULT 'C:\zoutput0.txt' LOWER CASE.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',
r2 RADIOBUTTON GROUP rad1.
DATA: i TYPE i VALUE 0, n TYPE i VALUE 0.
DATA: flength TYPE i.

CALL FUNCTION 'GUI_UPLOAD'
...
ENDCASE.

Code:
FUNCTION          GUI_UPLOAD.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(FILENAME) TYPE  STRING
*"     REFERENCE(FILETYPE) TYPE  CHAR10 DEFAULT 'ASC'
*"     REFERENCE(HAS_FIELD_SEPARATOR) TYPE  CHAR01 DEFAULT SPACE
*"     REFERENCE(HEADER_LENGTH) TYPE  I DEFAULT 0
*"     REFERENCE(READ_BY_LINE) TYPE  CHAR01 DEFAULT 'X'
*"     REFERENCE(DAT_MODE) TYPE  CHAR01 DEFAULT SPACE
*"     REFERENCE(CODEPAGE) TYPE  ABAP_ENCODING DEFAULT SPACE
*"     REFERENCE(IGNORE_CERR) TYPE  ABAP_BOOL DEFAULT ABAP_TRUE
*"     REFERENCE(REPLACEMENT) TYPE  ABAP_REPL DEFAULT '#'
*"     REFERENCE(CHECK_BOM) TYPE  CHAR01 DEFAULT SPACE
*"     REFERENCE(VIRUS_SCAN_PROFILE) TYPE  VSCAN_PROFILE OPTIONAL
*"  EXPORTING
*"     VALUE(FILELENGTH) TYPE  I
*"     VALUE(HEADER) TYPE  XSTRING
*"  TABLES
*"      DATA_TAB
*"  EXCEPTIONS
*"      FILE_OPEN_ERROR
*"      FILE_READ_ERROR
*"      NO_BATCH
*"      GUI_REFUSE_FILETRANSFER
*"      INVALID_TYPE
*"      NO_AUTHORITY
*"      UNKNOWN_ERROR
*"      BAD_DATA_FORMAT
*"      HEADER_NOT_ALLOWED
*"      SEPARATOR_NOT_ALLOWED
*"      HEADER_TOO_LONG
*"      UNKNOWN_DP_ERROR
*"      ACCESS_DENIED
*"      DP_OUT_OF_MEMORY
*"      DISK_FULL
*"      DP_TIMEOUT
*"----------------------------------------------------------------------

Осталось найти десять отличий.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 18 2006, 09:29 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Спасибо. И одного оказалось достаточно:)))


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 18 2006, 12:06 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
Подскажите пожалуйста как получить доступ к элеметам полей типа string(xstring) или где об этом можно прочесть.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 18 2006, 13:41 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
A_l_e_x написал(а):
Подскажите пожалуйста как получить доступ к элеметам полей типа string(xstring) или где об этом можно прочесть.

Эти типы не имеет элементов - это просто очень длинные строки символов(переменной длины). Читать - F1.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 18 2006, 14:20 
Начинающий
Начинающий

Зарегистрирован:
Пт, авг 11 2006, 14:43
Сообщения: 20
В F1 написано что это строка байтов.
И нет прямых способов получить значение n-го байта, не прибегая к копированию такой строки в строку типа с?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB