2015-10-05 12 views
11

Mam aplikację Java, która korzysta z bibliotek SAP JCo 3. Jeden z przypadków użycia polega na otrzymaniu pliku IDoc z instancji SAP (R/3, ERP 6.0 EhP 7) i konwersji do formatu XML. Problem polega na tym, że podczas konwersji (wykonywanej przez bibliotekę obiektów IDoc) przycina się odpowiednie spacje na końcu pól. Najwyraźniej, aby zmniejszyć rozmiar wiadomości. Do tej pory nie znalazłem żadnej konfiguracji, która mogłaby być wykonana ze strony Java.SAP R/3 usuwa spacje końcowe z plików XML IDoc

przeszukiwania sieci, znalazłem następujące propozycje ze strony SAP:

  • zachodzącego whiteSpace=preserve z XSD Editor
  • zachodzącego xml.fieldContentFormatting=nothing w Sender Plik/FTP Adapter

jednak , Nie byłem w stanie znaleźć tych narzędzi ani ich odpowiednio skonfigurować.

Byłbym wdzięczny za wszelkie spostrzeżenia na temat tych dwóch podejść lub jakiegokolwiek innego rozwiązania.

+1

Jaki jest efekt przycinanych powierzchni? Co już nie działa? –

+1

Dane IDoc należy przekonwertować na format XML w niezmienionej postaci, zachowując białe spacje w celu późniejszego przetworzenia. Ponadto, aby zachować zgodność między pierwotną długością pola IDoc a rzeczywistą długością pola XML. – CountD

Odpowiedz

0

Możesz sprawdzić, czy całkowita długość pola będzie równa tej określonej długości segmentu. Możesz użyć RFC IDOCTYPE_READ_COMPLETE. W tym typie IDOC wpisz hasło MATMAs01. W tabeli PT_SEGMENTS można uzyskać długość segmentu.

Możesz przejść tę długość segmentu, aby uzyskać pełną długość pola.

0

Biblioteka klas Java IDoc nie oferuje opcji zachowania spacji w polach IDoc.

Powstawanie znaków SPACE w polach IDoc nie służy żadnym celom, o ile obiekt IDoc zostanie ponownie wysłany do innego systemu SAP. W tym przypadku naprawdę tylko zwiększy rozmiar wiadomości XML bez dodawania żadnej wartości.

Obecnie nie mogę sobie wyobrazić, z jakiego powodu chciałbyś zatrzymać te spacje? Znaki SPACE są domyślną wartością początkową dla pól typu ABAP CHAR, więc nie możesz również wiedzieć, czy niektóre z tych znaków zostałyby ustawione według intencji czy nie.

0

Podczas pracy z XML w ABAP, na co należy zwrócić uwagę, to if_ixml_renderer (lub if_ixml_parser) połączenie set_normalizing. Ta funkcja jest domyślnie włączona i musisz ją wyłączyć.

"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(). 
Powiązane problemy