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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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