SAPфорум.RU
https://sapboard.ru/forum/

странный глюк RFC
https://sapboard.ru/forum/viewtopic.php?f=70&t=75641
Страница 1 из 1

Автор:  cherms [ Вт, мар 20 2012, 12:07 ]
Заголовок сообщения:  странный глюк RFC

Загрузка RFC to JDBC

Сделал ФМ, экспортировал в PI, создал объекты.
запускаю в r/3 посредством CALL FUNCTION [...] IN BACKGROUND TASK DESTINATION [....]

commit work после вызова стоит.

2-3 раза проходит нормально, потом через раз, (в sm58 красное - "Commit fault: com.sap.aii.adapter.rfc.afcommunicat: ion.RfcAFWException: se")
Затем вообще не грузиться.

после очистки кеша
http://XXXXXXX:50000/CPACache/refresh?mode=full
http://XXXXXX:50000/CPACache/refresh?mode=Delta
несколько раз отрабатывает, потом начинаются такие же проблемы

Автор:  Ich Will [ Вт, мар 20 2012, 16:41 ]
Заголовок сообщения:  Re: странный глюк RFC

пробовали поставить в вызове функции AS SEPARATE UNIT ?

Автор:  erinsasha [ Ср, мар 21 2012, 00:22 ]
Заголовок сообщения:  Re: странный глюк RFC

Никогда не видел такой ошибки... tRFC вызовы работали корректно в обоих направлениях
В Java Trace в XI что-нибудь видно?
единственное, что после изменения сигнатуры ФМ, очень рекомендовано делать стоп-старт каналов ...иначе XI будет некорректно парсить вызовы на основе устаревших определений

...вообще непонятно зачем использовать RFC, когда есть Abap Proxy

Автор:  cherms [ Ср, мар 21 2012, 07:07 ]
Заголовок сообщения:  Re: странный глюк RFC

AS SEPARATE UNIT - ситуацию не меняет.
сервер перегружали тоже не помогло

Автор:  erinsasha [ Ср, мар 21 2012, 08:29 ]
Заголовок сообщения:  Re: странный глюк RFC

И все таки, в Java Trace какая ошибка? ...здесь описание ошибки от адаптера обрывается RfcAFWException: se

Автор:  cherms [ Ср, мар 21 2012, 10:48 ]
Заголовок сообщения:  Re: странный глюк RFC

cimclass=SAP_ITSAMXIAEEngineStatusProvider,version=3.0,SAP_ITSAMJ2eeCluster.Name=***,SAP_ITSAMJ2eeCluster.CreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.SystemCreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.SystemName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.CreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.Name=SAP_ITSAMXIAEEngineStatusProvider,type=SAP_ITSAMJ2eeCluster.SAP_ITSAMXIAEEngineStatusProvider not in repository

Автор:  erinsasha [ Ср, мар 21 2012, 11:01 ]
Заголовок сообщения:  Re: странный глюк RFC

cherms написал(а):
cimclass=SAP_ITSAMXIAEEngineStatusProvider,version=3.0,SAP_ITSAMJ2eeCluster.Name=***,SAP_ITSAMJ2eeCluster.CreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.SystemCreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.SystemName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.CreationClassName=SAP_ITSAMXIAEEngineStatusProvider,SAP_ITSAMXIAEEngineStatusProvider.Name=SAP_ITSAMXIAEEngineStatusProvider,type=SAP_ITSAMJ2eeCluster.SAP_ITSAMXIAEEngineStatusProvider not in repository


Походу не ту ошибку из трейса вытянул, больше похоже (из-за cimclass), что тут про SLD пишут. В правильной записи об ошибке почти 100% будет написано и "Commit fault: com.sap.aii.adapter.rfc.afcommunicat: ion.RfcAFWException: se".
Конечно в этом убогом трейсе что-то искать неблагородное занятие. Даже прекрасно работающая система туда пишет немереное количество различных ошибок.

Автор:  pitroff [ Ср, мар 21 2012, 17:07 ]
Заголовок сообщения:  Re: странный глюк RFC

А монитор канала связи что-нибудь говорит?

http://host:j2eeport/mdt/channelmonitorservlet -> <RFC Sender channel>

Автор:  cherms [ Чт, мар 22 2012, 11:42 ]
Заголовок сообщения:  Re: странный глюк RFC

Проблема решилась путем создания нового RFC соединения!

видимо данный PROGRAM ID использовался где то еще.



теперь образовалась еще одна непонятка

при передаче данных в оракл в режиме UPDATE_INSERT корректно обрабатывается изменение только по одной записи
если передавать сразу таблицу в результате перезаписывает все данные одной первой строкой

используется маппинг с ключом

можно ли маппингом сделать корректный UPDATE по всей таблице? или нужно дергать ФМ на стороне r/3 для передачи каждой отдельной записи ?

Автор:  chumpa [ Чт, мар 22 2012, 13:04 ]
Заголовок сообщения:  Re: странный глюк RFC

по ораклу, ключ неправильно формируется видимо.

Автор:  cherms [ Чт, мар 22 2012, 13:12 ]
Заголовок сообщения:  Re: странный глюк RFC

access
номер материала
текст
key
номер материала

что тут может быть не правильного то?



он вернет

номер 1
текст 1

номер 2
текст 2

номер1

и проапдейт все по первой записи!

Автор:  chumpa [ Чт, мар 22 2012, 14:20 ]
Заголовок сообщения:  Re: странный глюк RFC

cherms написал(а):
что тут может быть не правильного то?


ничо не понял в тексте, тренируйтесь апдейтить в RWB>TestMessage, где-то в пейлоаде не то. Ну или пишите другой XMLSQL, в котором можно руками писать SQL DML (не путать с Native SQL).

Автор:  pitroff [ Чт, мар 22 2012, 16:46 ]
Заголовок сообщения:  Re: странный глюк RFC

cherms написал(а):
при передаче данных в оракл в режиме UPDATE_INSERT корректно обрабатывается изменение только по одной записи
если передавать сразу таблицу в результате перезаписывает все данные одной первой строкой


А там и будет update только по одной записи:
http://help.sap.com/saphelp_nwpi71/help ... ontent.htm
Enter the new column values in the <access> element. Enter exactly one <access>element.
В тэге access - новые значения, в тэгах keyX - условие.

Может помочь хранимая процедура и вызов через EXECUTE
http://help.sap.com/saphelp_nwpi71/help ... ameset.htm
Но тоже - невозможно передать всю таблицу (разве что CLOB - но это дополнительная работа в мэппинге).

UPD: А, нашел, SQL_DML, все-таки:
http://help.sap.com/saphelp_nwpi71/help ... ameset.htm

Создаете следующую структуру:

<root>
<stmt>
<Customers action="SQL_DML">
<access> UPDATE Customers SET CompanyName=’$NAME$’, Address=’$ADDRESS$' WHERE CustomerID='$KEYFIELD$’
</access>
<key>
<NAME>Firma</NAME>
<ADDRESS>Strasse 3 </ADDRESS>
<KEYFIELD>FI</KEYFIELD>
</key>
<key>
<NAME>Firma2</NAME>
<ADDRESS>Strasse 5 </ADDRESS>
<KEYFIELD>CO</KEYFIELD>
</key>
</Customers>
</stmt>
</root>

В качестве значений всех полей в SQL-выражении ставите заместители типа $заместитель$, а затем перечисляете все изменения в тэге Key - их может быть много.
XI/PI будет идти в цикле по всем key и выполнять access для каждого набора значений.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/