Как создать и зарегистрировать в среде SAP прослушиватель IDoc? ⇐ JAVA
-
Anonymous
Как создать и зарегистрировать в среде SAP прослушиватель IDoc?
Нам нужно реализовать клиент SAP на Java для прослушивания IDoc. Мы используем
17 3.1.3 3.1.7 ${project.build.directory}/lib ... com.sap.conn.idoc com.sap.conn.idoc.sapidoc3 ${com.sap.conn.idoc.version com.sap.conn.jco com.sap.conn.jco.sapjco3 ${com.sap.conn.jco.version com.sap.conn.jco sapjco3 ${com.sap.conn.jco.version внешняя библиотека dll com.sap.conn.jco libsapjco3 ${com.sap.conn.jco.version внешняя библиотека так конфигурация клиента:
Свойства свойства = новые свойства(); Properties.setProperty(DestinationDataProvider.JCO_ASHOST, хост); Properties.setProperty(DestinationDataProvider.JCO_SYSNR, systemNumber); Properties.setProperty(DestinationDataProvider.JCO_CLIENT, клиент); Properties.setProperty(DestinationDataProvider.JCO_USER, имя пользователя); Properties.setProperty(DestinationDataProvider.JCO_PASSWD, пароль); Properties.setProperty(DestinationDataProvider.JCO_LANG, язык); Properties.setProperty(DestinationDataProvider.JCO_GWHOST, хост); Properties.setProperty(DestinationDataProvider.JCO_GWSERV, GatewayService); Properties.setProperty(DestinationDataProvider.JCO_GROUP, группа); Properties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,peakLimit); Используя свойство напоминания, мы создаем DestinationDataProvider, регистрируя его в среде Environment.registerDestinationDataProvider(destinationDataProvider)
тогда мы сможем без проблем создать JCoDestination, JCoRepository или IDocRepository.
JCoDestination jCoDestination = JCoDestinationManager.getDestination("MULE_IDOC_TEST"); JCoRepository jCoRepository = jCoDestination.getRepository(); IDocRepository iDocRepository = JCoIDoc.getIDocRepository(jCoDestination); Наконец, мне нужен прослушиватель IDoc. Я описал класс для одного:
import com.sap.conn.idoc.IDocDocument; импортировать com.sap.conn.idoc.IDocDocumentIterator; импортировать com.sap.conn.idoc.IDocDocumentList; импортировать com.sap.conn.idoc.jco.JCoIDocHandler; импортировать com.sap.conn.jco.server.JCoServerContext; импортировать lombok.extern.slf4j.Slf4j; @Slf4j(topic = "Журнал прослушивания IDoc JCo") публичный класс JCoIDocListener реализует JCoIDocHandler { @Override public void handleRequest(JCoServerContext jCoServerContext, IDocDocumentList iDocDocumentList) { log.info("идокс что-то"); Итератор IDocDocumentIterator = iDocDocumentList.iterator(); в то время как (итератор.hasNext()) { IDocDocument idoc = iterator.next(); log.info("idoc: {}", idoc.toString()); } log.info("сервер: {}", jCoServerContext.getServer()); } } но я понятия не имею, как зарегистрировать его в среде клиента SAP.
Вопрос 1
Можете ли вы помочь мне зарегистрировать объект на основе JCoIDocListener в клиенте SAP Среда?
Другой способ.
Я описал еще один слушатель типа
import com.sap.conn.idoc.jco.JCoIDoc; импортировать com.sap.conn.jco.AbapClassException; импортировать com.sap.conn.jco.AbapException; импортировать com.sap.conn.jco.JCoFunction; импортировать com.sap.conn.jco.server.JCoServerContext; импортировать com.sap.conn.jco.server.JCoServerFunctionHandler; импортировать lombok.extern.slf4j.Slf4j; @Slf4j(topic = «Регистратор прослушивания сервера JCo IDoc») публичный класс JCoIDocServerListener реализует JCoServerFunctionHandler { @Override public void handleRequest (JCoServerContext jCoServerContext, JCoFunction jCoFunction) выдает AbapException, AbapClassException { log.info("что-то получил"); } } Но проблема в том, что я понятия не имею, как зарегистрировать его в среде (кроме того, это похоже на серверную часть).
Вопрос 2
Следует ли мне изменить конфигурацию клиента DestinationDataProvider для использования JCoIDocServerListener, если да, то как? (я думаю, следует указать некоторые свойства сервера) Как зарегистрировать JCoIDocServerListener.class?
Нам нужно реализовать клиент SAP на Java для прослушивания IDoc. Мы используем
17 3.1.3 3.1.7 ${project.build.directory}/lib ... com.sap.conn.idoc com.sap.conn.idoc.sapidoc3 ${com.sap.conn.idoc.version com.sap.conn.jco com.sap.conn.jco.sapjco3 ${com.sap.conn.jco.version com.sap.conn.jco sapjco3 ${com.sap.conn.jco.version внешняя библиотека dll com.sap.conn.jco libsapjco3 ${com.sap.conn.jco.version внешняя библиотека так конфигурация клиента:
Свойства свойства = новые свойства(); Properties.setProperty(DestinationDataProvider.JCO_ASHOST, хост); Properties.setProperty(DestinationDataProvider.JCO_SYSNR, systemNumber); Properties.setProperty(DestinationDataProvider.JCO_CLIENT, клиент); Properties.setProperty(DestinationDataProvider.JCO_USER, имя пользователя); Properties.setProperty(DestinationDataProvider.JCO_PASSWD, пароль); Properties.setProperty(DestinationDataProvider.JCO_LANG, язык); Properties.setProperty(DestinationDataProvider.JCO_GWHOST, хост); Properties.setProperty(DestinationDataProvider.JCO_GWSERV, GatewayService); Properties.setProperty(DestinationDataProvider.JCO_GROUP, группа); Properties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,peakLimit); Используя свойство напоминания, мы создаем DestinationDataProvider, регистрируя его в среде Environment.registerDestinationDataProvider(destinationDataProvider)
тогда мы сможем без проблем создать JCoDestination, JCoRepository или IDocRepository.
JCoDestination jCoDestination = JCoDestinationManager.getDestination("MULE_IDOC_TEST"); JCoRepository jCoRepository = jCoDestination.getRepository(); IDocRepository iDocRepository = JCoIDoc.getIDocRepository(jCoDestination); Наконец, мне нужен прослушиватель IDoc. Я описал класс для одного:
import com.sap.conn.idoc.IDocDocument; импортировать com.sap.conn.idoc.IDocDocumentIterator; импортировать com.sap.conn.idoc.IDocDocumentList; импортировать com.sap.conn.idoc.jco.JCoIDocHandler; импортировать com.sap.conn.jco.server.JCoServerContext; импортировать lombok.extern.slf4j.Slf4j; @Slf4j(topic = "Журнал прослушивания IDoc JCo") публичный класс JCoIDocListener реализует JCoIDocHandler { @Override public void handleRequest(JCoServerContext jCoServerContext, IDocDocumentList iDocDocumentList) { log.info("идокс что-то"); Итератор IDocDocumentIterator = iDocDocumentList.iterator(); в то время как (итератор.hasNext()) { IDocDocument idoc = iterator.next(); log.info("idoc: {}", idoc.toString()); } log.info("сервер: {}", jCoServerContext.getServer()); } } но я понятия не имею, как зарегистрировать его в среде клиента SAP.
Вопрос 1
Можете ли вы помочь мне зарегистрировать объект на основе JCoIDocListener в клиенте SAP Среда?
Другой способ.
Я описал еще один слушатель типа
import com.sap.conn.idoc.jco.JCoIDoc; импортировать com.sap.conn.jco.AbapClassException; импортировать com.sap.conn.jco.AbapException; импортировать com.sap.conn.jco.JCoFunction; импортировать com.sap.conn.jco.server.JCoServerContext; импортировать com.sap.conn.jco.server.JCoServerFunctionHandler; импортировать lombok.extern.slf4j.Slf4j; @Slf4j(topic = «Регистратор прослушивания сервера JCo IDoc») публичный класс JCoIDocServerListener реализует JCoServerFunctionHandler { @Override public void handleRequest (JCoServerContext jCoServerContext, JCoFunction jCoFunction) выдает AbapException, AbapClassException { log.info("что-то получил"); } } Но проблема в том, что я понятия не имею, как зарегистрировать его в среде (кроме того, это похоже на серверную часть).
Вопрос 2
Следует ли мне изменить конфигурацию клиента DestinationDataProvider для использования JCoIDocServerListener, если да, то как? (я думаю, следует указать некоторые свойства сервера) Как зарегистрировать JCoIDocServerListener.class?
Мобильная версия