繁体   English   中英

SAP R / 3从IDoc XML文件中删除尾随空格

[英]SAP R/3 removes trailing spaces from IDoc XML files

我有一个使用SAP JCo 3库的Java应用程序。 其中一个用例包括从SAP实例(R / 3,ERP 6.0 EhP 7)接收IDoc文件并将其转换为XML。 问题是,在转换过程中(由IDoc库执行),字段末尾的右侧空格会被修剪。 显然,减少邮件大小。 到目前为止,我还没有找到任何可以从Java端完成的配置。

在网上搜索,我从SAP方面找到了以下建议:

  • 从XSD编辑器设置whiteSpace=preserve
  • 在发件人文件/ FTP适配器中设置xml.fieldContentFormatting=nothing

但是,我无法找到这些工具,也没有相应地配置它们。

我将非常感谢对这两种方法或任何其他解决方案的任何见解。

SAP Java IDoc类库不提供在IDoc字段中保留尾随SPACES的选项。

只要IDoc最终再次发送到另一个SAP系统,IDoc字段中的尾随SPACE字符就不起任何作用。 在这种情况下,他们实际上只会扩大XML消息大小而不添加任何值。

我目前无法想象你想保留那些尾随空间的原因是什么? SPACE字符是ABAP CHAR类型字段的默认初始值,因此您也无法知道是否已根据意图设置了其中某些字符。

您可以检查字段的总长度是否等于特定的段长度。 您可以使用RFC IDOCTYPE_READ_COMPLETE。 在这个传递IDOC类型中,比如说MATMAs01。 在表PT_SEGMENTS中,您可以获得段长度。

您可以传递此段长度以获得完整的字段长度。

在ABAP中使用XML时,需要注意的是if_ixml_renderer (或if_ixml_parser )调用set_normalizing 默认情况下处于启用状态,您需要禁用此功能。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM