2017-03-20 3 views
2

Ich versuche, den Inhalt einer IDoc-XML-Datei in eine IDocDocumentList zu konvertieren.SAP JCO-XML zu IDocDocumentList-Konvertierung

Der folgende Code auf der Dokumentation stark basiert, trotzdem funktioniert es nicht:

public void xmlToIDoc(String inputXml) 
{ 
    // see provided configuration file BCE.jcoDestination 
    JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION); 

    IDocRepository iDocRepository = JCoIDoc.getIDocRepository(destination); // !!!! throws exception 

    // parse message 
    IDocFactory iDocFactory = JCoIDoc.getIDocFactory(); 
    IDocXMLProcessor processor = iDocFactory.getIDocXMLProcessor(); 
    IDocDocumentList iDocList = processor.parse(iDocRepository, inputXml); 

    return iDocList; 
} 

Die Fehlermeldung lautet:

com.sap.conn.jco.JCoException: (106) JCO_ERROR_RESOURCE: Destination BCE does not exist 

Ich muss zugeben, dass mir es ist nicht wirklich klar, warum erfordert dies ein Ziel und ein Repository. Ich meine, es ist nur ein XML, um die Konvertierung zu dokumentieren, oder?

Noch wichtiger, ich habe den Eindruck, dass der Grund, warum dies fehlschlägt, ist, dass ich keine aktive Verbindung zum SAP-Server habe. Kann das jemand bestätigen?

Wenn das in der Tat der Fall ist, gibt es einen anderen Weg , um dies ohne eine aktive Serververbindung zu arbeiten?

Vielen Dank im Voraus

+1

Ich arbeite nicht mit JCo, aber der .Net Connector funktioniert in ähnlicher Weise. Und es benötigt eine funktionierende Verbindung (einschließlich korrekter Anmeldung) zum SAP-System, um die Metadaten für Schnittstellen von Funktionsbausteinen oder Wörterbuchobjekte abzurufen. Die Fehlermeldung besagt, dass ein Ziel "BCE" nicht existiert, was bedeutet, dass Sie irgendwann nach einem Ziel namens BCE fragen und JCo kann es nicht finden (wahrscheinlich nicht konfiguriert). Auch bei einem ordnungsgemäß konfigurierten Ziel benötigt die Bibliothek wahrscheinlich noch tatsächlichen Zugriff auf das SAP-System. Ich vermute hier, aber wahrscheinlich Idoc Metadaten für die Konvertierung abzurufen. –

+0

Vielen Dank für Ihre Antwort Dirk. Das erklärt einiges. – bvdb

Antwort

2

Ihre Konstante DESTINATION den Wert "BCE" enthält. Ich nehme an, dass Sie die Standardkonfiguration von JCo verwenden, was bedeutet, dass Sie eine Datei mit dem Namen BCE.jcoDestination bereitstellen müssen, die die Anmeldeeigenschaften für Ihr ABAP-System enthält.

Ihre anderen Fragen sollten bereits beantwortet worden sein here.

Und nebenbei besteht der Hauptzweck von JCo und der JIDocLib Add-on-Bibliothek in der Kommunikation mit einem ABAP-System über das proprietäre RFC-Protokoll von SAP. Wenn Sie also keine "aktive Verbindung zu einem SAP-Server" haben, warum möchten Sie diese SAP-Bibliotheken überhaupt nutzen?

+0

Warum? - Die Möglichkeit, Code ohne Verbindung auszuführen, ist nützlich für Testzwecke und für die Simulation. – bvdb

+0

Ohne Verbindung zum ABAP-System wäre dies kein Test. Ein Test muss immer das gesamte Szenario abdecken. Eine Simulation könnte sich irgendwie vorstellen, wenn Sie ein SAP-Gateway und einen registrierten 'JCoServer' für das Verhalten ähnlich einem ABAP-System ausführen, aber dies wäre ein enormer Aufwand und Sie werden niemals in der Lage sein, ein ABAP-System vollständig zu simulieren. IMHO wird sich der Aufwand für die Erstellung einer solchen Simulation nicht auszahlen und wäre nur von sehr begrenztem Wert. – Trixx

+0

jemals von Komponententests gehört? Sie haben recht, wenn es um Integrationstests geht, aber Komponententests decken keine Szenarien ab, sondern decken einzelne Fälle ab, idealerweise ohne externe Referenzen wie Datenbanken oder ERP-Systeme. Sie können wahrscheinlich eine Menge der Jco-Komponenten für Komponententests vortäuschen. –