2015-10-05 22 views
11

Ich habe eine Java Anwendung, die SAP JCo 3 Bibliotheken verwendet. Einer der Anwendungsfälle besteht darin, eine IDoc-Datei von der SAP-Instanz (R/3, ERP 6.0 EhP 7) zu empfangen und in XML zu konvertieren. Das Problem ist, dass während der Konvertierung (ausgeführt von der IDoc-Bibliothek) die richtigen Leerzeichen am Ende der Felder getrimmt werden. Offenbar, um die Nachrichtengröße zu reduzieren. Bisher habe ich keine Konfiguration gefunden, die von der Java-Seite aus möglich ist.SAP R/3 entfernt nachfolgende Leerzeichen aus IDoc-XML-Dateien

die Suche im Netz, fand ich folgende Vorschläge aus der SAP-Seite:

  • whiteSpace=preserve aus den XSD Editor
  • Einstellung xml.fieldContentFormatting=nothing im Sender File/FTP Adapter

jedoch Einstellung Ich konnte diese Tools weder finden noch entsprechend konfigurieren.

Ich würde jede Einsicht in diese beiden Ansätze oder jede andere Lösung schätzen.

+1

Wie wirken sich die zu schneidenden Felder aus? Was funktioniert nicht mehr? –

+1

IDoc-Daten sollten unverändert in XML konvertiert werden, um die Leerstellen für die spätere Verarbeitung zu erhalten. Um Konsistenz zwischen der ursprünglichen IDoc-Feldlänge und der tatsächlichen XML-Feldlänge zu erhalten. – CountD

Antwort

0

Sie können überprüfen, wo die Gesamtlänge des Feldes der jeweiligen Segmentlänge entspricht. Sie können RFC IDOCTYPE_READ_COMPLETE verwenden. Geben Sie in diesem IDOC-ID-Typ beispielsweise MATMAs01 an. In der Tabelle PT_SEGMENTS können Sie die Segmentlänge ermitteln.

Sie können diese Segmentlänge übergeben, um die vollständige Feldlänge zu erhalten.

0

Die SAP-Java-IDoc-Klassenbibliothek bietet keine Option, um nachlaufende SPACES in den IDoc-Feldern zu erhalten.

Nachlaufende SPACE-Zeichen in IDoc-Feldern erfüllen keinen Zweck, solange das IDoc am Ende wieder an ein anderes SAP-System gesendet wird. In diesem Fall würden sie die XML-Nachrichtengröße nur vergrößern, ohne einen Wert hinzuzufügen.

Ich kann mir derzeit nicht vorstellen, aus welchem ​​Grund Sie diese nachlaufenden SPACES behalten möchten? SPACE-Zeichen sind der Standard-Initialwert für Felder des Typs ABAP CHAR, sodass Sie auch nicht wissen können, ob einige dieser Zeichen absichtlich gesetzt wurden oder nicht.

0

Wenn Sie mit dem XML in ABAP arbeiten, müssen Sie sich den if_ixml_renderer (oder if_ixml_parser) Aufruf set_normalizing ansehen. Dies ist standardmäßig aktiviert und Sie müssen dies deaktivieren.

"Convert XML to string: l_string 
lif_ostream = sif_streamfactory->create_ostream_cstring(l_string). 
lif_renderer = sif_xml->create_renderer(ostream = lif_ostream 
             document = mif_xml_document). 
" this stops SAP from removing whitespace and doing spurious edits: 
lif_renderer->set_normalizing(false). 

lif_renderer->render().