Как сервер SAP tRFC может сообщить клиенту через JCo, что функция была выполнена?

Документ SAP "Transactional RFC Technical Description" (версия 4.0, см. http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/ee6bca90-0201-0010-5792-d9693e2eac83?QuickLink=index&overridelayout=true) говорит в разделе Transactional RFC на странице 6: «Наконец, сервер сообщает клиенту, что функция была выполнена, и клиент подтверждает это».

Как сервер может сообщить об этом клиенту, когда сервер общается с клиентом через JCo (Java Connector)?


person Hendrik Jan van Randen    schedule 07.05.2010    source источник


Ответы (2)


Версия 4.0 довольно старая - обязательно используйте последнюю версию документации.

Насколько я могу судить, нет возможности передать результат вызова tRFC обратно на сервер. Вызовы tRFC могут быть помещены в (локальную или удаленную) очередь и выполнены позже. См. http://help.sap.com/saphelp_nw04/helpdata/en/f0/02a63b9bb3e035e10000000a114084/frameset.htm для получения информации о том, как отслеживать вызовы tRFC.

person vwegert    schedule 08.05.2010

Ответ очень прост: не создавать исключения! Предполагая, что сторона JCo является здесь сервером, все, что вам нужно сделать, это успешно вернуться из метода, реализующего функциональный модуль. Затем JCo автоматически вернет подтверждение, требуемое протоколом tRFC, клиенту (= в данном случае системе R / 3).

Система R / 3 после получения ACK от JCo инициирует событие подтверждения, которое JCo получает и передает в соответствующее событие вашего JCoServerTIDHandler. Здесь вы можете затем очистить TID из своей БД с сохранением статуса.

Если ваш метод функционального модуля возвращается с ошибкой, JCo сообщит об этом соответственно, а серверная часть вызовет событие Rollback.

В следующей статье более подробно объясняется, как следует реализовать tRFC между внешней программой и системой SAP. Он основан на библиотеке NetWeaver RFC (C / C ++), но вы можете легко перевести ее на JCo и Java: https://wiki.scn.sap.com/wiki/x/FD67Gg

person Lanzelot    schedule 05.03.2018