Текущее время: Ср, май 14 2025, 12:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Проблемы с кодировкой в SAP DCOM Connector
СообщениеДобавлено: Вт, июл 26 2005, 13:17 
Гость
Помогите решить следующую проблему.

Есть RFC модуль, который вызывает отчет через submit.
Этот ФМ вызывается через SAP DCOM Connector. Внутри отчета генерятся(message) сообщения об ошибках(тип E и тип S). Так вот тексты этих сообщений передаются SAP DCOM Connector в виде иероглифов - все это видно и в trace log'ах DCOM Connector'а. В настройках системы все установки языка верные, в настройках DCOM Connector'а Language = RU.
Также замечена одна особенность: если напрямую генерить эти сообщения с помощью message без submit'а, то все сообщения передаются в нормальной кодировке. При выполнении ФМ с submit'ом в диалоговом режиме в системе все сообщения выводятся на экран нормально.

Попутно созрел вопрос. При RFC-вызове модулей из C их можно отладить, если передать RfcOpenEx параметр RFC_DEBUG=1. А вот возможно ли такое для приложений на основе SAP DCOM Connector?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Вт, июл 26 2005, 15:41 
Гость
Насчет отладки я уже сам разобрался есть пример в папке SAP DCOM Connector (C:\Program Files\SAPpc\SAPGUI\rfcsdk\ccwww\ccsample.htm). В этот примере есть галочка Debug. :)

Насчет кодировки сообщений из submit по-преднему вопрос открытый... :(


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 26 2005, 16:29 
Гость
Удалось выяснить что если написать следущий отчет и выполнить его через submit в ФМ,а ФМ вызвать через SAP DCOM Connector, то сообщение об ошибке будет в нормальной кодировке.

REPORT YTST3 MESSAGE-ID Z00.
DATA str(60).

PARAMETERS AA.

AT SELECTION-SCREEN.
str = 'Тестовое сообщение об ошибке 1234'.
translate str from code page '1500' to code page '1504'.
MESSAGE E000 with str.


Это говорит о том, что сообщения, которые возникают в GUI, передаются SAP DCOM Connector'у во внутренней кодировке сервера, а именно в 1500, хотя перекодировка для всех остальных данных выполняется. Интересно, где можно задать кодировку для сообщений об ошибках?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 27 2005, 03:44 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Попробуй RfcSetSystemCodePage('1500')


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 27 2005, 09:39 
Гость
К сожалению, данная фича не помогла.
Кстати, мне так и не удалось получить сообщение об ошибке или любое другое сообщение на уровне rfc-клиента написанного на C. Исключения можно отлавливать, а вот как отлавливать сообщения об ошибках, сгенеренные с помощью message?


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

Зарегистрирован:
Пт, май 27 2005, 14:20
Сообщения: 310
Пол: Мужской
Так и есть, на стороне сервера и имеет смысл перекодировать тексты.
Автоматически на .Net Connector'е у меня ничего из кириллицы не перекодировалось. Для этого использовал класс CL_ABAP_CONV_OBJ

p.s. Если вдруг найдете какую нибудь полезную настройку по этой теме, поделитесь плиз опытом


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 27 2005, 14:35 
Гость
Вот кусок из trace-лога:

>>>> [2] <unknown> : EXT U751 >>> FLUSH(WRITE) (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}
>>>> [2] <unknown> : EXT U751 >>> FLUSH(WRITE) (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}
L-GetCodePage (DEFAULT-CP) rc = 0: 1504
======> іагЯЯюТюЩ ЯюШбЪ ЭХ аРЧаХиХЭ.
>>>> [2] <unknown> : EXT U751 >>> READ (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}
>>>> [2] <unknown> : EXT U751 >>> FREE-Message (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}
000000 | 20202020 20B3E0E3 DFDFFED2 FED920DF | ......... .|
000010 | FED8E1DA 20DDD520 E0D0D7E0 D5E8D5DD |.... .. ........|
000020 | 2E202020 20202020 20202020 20202020 |. |
000030 | 20202020 20202020 20202020 20202020 | |
000040 | 20202020 20202020 20202020 20202020 | |
000050 | 20202020 20000000 00000000 00000000 | ...........|
Error RFCIO_ERROR_MESSAGE in abrfcio.c : 1365
---> RFC MESSAGE/ERROR : 104
* RFC_ERROR_SYSTEM_FAILURE
* іагЯЯюТюЩ ЯюШбЪ ЭХ аРЧаХиХЭ.
>>>> rfccoctx:985 closing RFC connection (context 016B6708)
>>>> [2] <unknown> : EXT U751 >>> CLOSE abrfcio.c 1389 (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}
Received free message 27

Error rcv_message> No exception to handle an message defined
Error text:
Error ID :
>>>> [2] <unknown> : EXT U751 >>> FREE abrfcio.c 3253 (26582468)
-{4A8EB0A1-4D42-44C0-8F2D-1B359DAE74CC}

**** Trace file opened at 20050727 132222 Russian Dayligh, SAP-REL 620,0,480 RFC-VER 3 525755 MT-SL
>>>> rfccopar:100 End Function ( Parameter FILESIZE: Type 8 Length 4 Variant 16387 Req. Vartype 16387 ).
>>>> rfccopar:100 End Function ( Parameter HTML: Type 5 Length 255 Variant 16393 Req. Vartype 9 ).
>>>> rfccopar:100 End Function ( Parameter PAR: Type 5 Length 286 Variant 9 Req. Vartype 9 ).
>>>> rfccopar:100 End Function ( Parameter PDF: Type 5 Length 134 Variant 16393 Req. Vartype 9 ).
>>>> rfccopar:100 End Function ( Parameter RETURN: Type 5 Length 548 Variant 16393 Req. Vartype 9 ).
>>>> rfccoctx:1077 SetAbort (context 016B6708)
**** sapmtx.h:1273 Error code 0x80004004 (). [COM_HRESULT]
>>>> rfccoctx:720 return to dispenser (context 016B6708)
>>>> rfccosrc:184 Dispenser: returning resource 016B6718 ...
>>>> rfccosrc:195 Dispenser: resource 016B670C broken ...
>>>> rfccoctx:1029 releasing resource (context 016B6708)

Отсюда видно, что дефолтная страница 1504 - все ок, но при этом сообщение(FREE-Message) в кодировке 1500. Все остальные текстовые данные передаваемые через параметры выдаются в нормальной кодировке 1504. Кто виноват интересно: сервер или коннектор?

Кстати вопрос задал на SDN, пока вразумительных ответов не получил.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 27 2005, 14:40 
Гость
Видимо баги DCOM Connector'а перенеслись в .Net Connector :o
Кстати у меня ерунда, только при генерации сообщения об ошибки с помошью message внутри отчета, вызываемого через submit в RFC-модуле, хотя если генерить сообщение об ошибке непосредственно внутри ФМ, тогда с кодировкой все ок. Поэтому мне непонятно почему именно в таком случае кодировка "сбивается". :shock:


Пометить тему как нерешенную
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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