Domanda

Quando si utilizza JCo (3.x) per leggere IDOCs inviati da un server SAP, quali azioni devono essere intraprese per indicare il messaggio è stato ricevuto correttamente (cioè commettere)?

In Java Mi immagino qualcosa come:

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
  }   
}

Questo tipo di commettere sembra necessario se vogliamo fare in modo alcun messaggio (IDOC) si perde, anche se un proiettile colpisce la CPU durante alcuni chiamano .hasNext(). O mi sbaglio?

È stato utile?

Soluzione

In questi casi SAP presuppone che si invia IDOC indietro con il tipo di 'ALEAUD'. In questo caso il sistema mittente può cambiare IDocs status di 'documento creato nel sistema di ricezione' (41). Per maggiori dettagli guardare in "L'anticipo Guide to inplementing SAP R / 3 di Application Link Anabling (ALE)" documento

Altri suggerimenti

Dal punto di vista tecnico (e non dal punto di vista del flusso di lavoro dei dati di business con i record di stato IDoc) commettere e confermando TID di una RFC transazionale (TRFC) è il compito del cliente RFC. Con la ricezione di IDocs vostro programma JCo è il server RFC in questo scenario e si dovrebbe reagire a quelle di commit, rollback e confermare gli eventi che il cliente RFC manda a voi. Questo viene fatto l'attuazione del JCoServerTIDHandler interfaccia.

Si otterrà un commit e più tardi anche un confirmTID evento, se si torna dal tuo handleRequest invocazione, senza eccezione, altrimenti si ottenere un rollback e anche un confirmTID evento per reagire di conseguenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top