2015-10-05 21 views
11

SAP JCo 3 kitaplıklarını kullanan bir Java uygulamasına sahibim. Kullanım örneklerinden biri, SAP örneğinden (R/3, ERP 6.0 EhP 7) bir IDoc dosyası almayı ve bunu XML'e dönüştürmeyi içerir. Sorun, dönüşüm sırasında (IDoc kütüphanesi tarafından yürütülen), alanların sonundaki doğru alanların kırpılmasıdır. Görünüşe göre, mesaj boyutunu azaltmak için. Şimdiye kadar, Java tarafında yapılabilecek herhangi bir yapılandırma bulamadım.SAP R/3, IDoc XML dosyalarından sondaki boşlukları kaldırır

  • Gönderen Dosya xml.fieldContentFormatting=nothing ayarı XSD Editör
  • den whiteSpace=preserve ayarı/FTP Adaptör

Ancak: net arama

, ben SAP taraftan şu önerilerde bulundu Bu araçları bulamadım ve buna göre yapılandıramadım.

Bu iki yaklaşım veya başka bir çözüm hakkındaki tüm bilgileri takdir ediyorum.

+1

Kesilen alanların etkisi nedir? Daha fazla çalışmayan nedir? –

+1

IDoc verileri, daha sonra işlenmek üzere beyaz boşlukları koruduğu gibi, XML'e dönüştürülmelidir. Ayrıca, orijinal IDoc alanı uzunluğu ile gerçek XML alanı uzunluğu arasında tutarlılık sağlamak için. – CountD

cevap

0

Alanın toplam uzunluğunun söz konusu segment uzunluğuna eşit olacağı bir çeke sahip olabilirsiniz. RFC IDOCTYPE_READ_COMPLETE kullanabilirsiniz. Bu pasif IDOC tipinde, MATMAs01 deyin. PT_SEGMENTS tablosunda segment uzunluğunu alabilirsiniz.

Tam alan uzunluğunu elde etmek için bu segment uzunluğunu geçebilirsiniz.

0

SAP Java IDoc Sınıf Kitaplığı, IDoc alanlarında sondaki SPACES'i korumak için bir seçenek sunmaz.

IDOC alanlarındaki BOŞLUK karakterlerinin izlenmesi, IDoc'un tekrar başka bir SAP sistemine gönderilmesi koşuluyla herhangi bir amaca hizmet etmez. Bu durumda, XML mesaj boyutunu sadece herhangi bir değer eklemeden büyütürlerdi.

Şu anda SPACES'i takip edenleri tutmak için nedeninizi hayal edemiyorum? BOŞLUK karakterleri, ABAP CHAR türü alanları için varsayılan başlangıç ​​değeridir, bu nedenle bu karakterlerden bazılarının niyetle ayarlanıp ayarlanmadığını da bilemezsiniz.

0

ABAP'ta XML ile çalışırken, bakmanız gereken şey if_ixml_renderer (veya if_ixml_parser) numaralı telefonu arayın set_normalizing. Bu, varsayılan olarak açıktır ve bunu devre dışı bırakmanız gerekir.

"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(). 
İlgili konular