Pregunta

Cuando se utiliza JCo (3.x) para leer IDOC enviados desde un servidor SAP, lo que deben tomarse medidas para indicar que el mensaje ha sido recibido correctamente (es decir, los cambios)?

En Java imagino algo como:

public class MyHandler implements JCoIDocHandler {
  public void handleRequest(JCoServerContext serverCtx, IDocDocumentList documentList) {
    IDocDocumentIterator iterator = documentList.iterator();
    while (iterator.hasNext()) {
             IDocDocument doc = iterator.next();
             // some processing
    }
    // here I would like to say COMMIT
    // i.e., I confirm all the documents have been read
    // and our side takes ownership
  }   
}

Este tipo de comprometerse parece necesario si queremos asegurarse de que ningún mensaje (IDOC) se pierde, incluso si una bala golpea la CPU durante algunos llaman .hasNext(). O estoy equivocado?

¿Fue útil?

Solución

En estos casos SAP asume que envíe de vuelta con la IDOC tipo de 'ALEAUD'. En este caso el sistema emisor puede cambiar IDOC estados a 'documento creado en el sistema de recepción' (41). Para más detalles se ven en "El avance Guía a inplementing SAP R / 3 de Application Link Anabling (ALE)" documento

Otros consejos

Desde el punto de vista técnico (y no desde la perspectiva del flujo de trabajo de datos profesionales con los registros de estado IDOC) y confirmando la comisión de TID de un RFC transaccional (TRFC) es la tarea del cliente RFC. Con la recepción de los IDOC su programa JCo es el servidor RFC en este escenario y que debe reaccionar en esas cometer, eventos de rollback y confirmar que el cliente RFC envía a usted. Esto se hace mediante la implementación de la interfaz de JCoServerTIDHandler.

Se obtendrá un comprometerse y más tarde también un confirmTID caso, si regrese de su handleRequest invocación sin excepción, de lo contrario se obtener un rollback y también un confirmTID eventos para reaccionar en consecuencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top