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

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


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

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


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

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