11

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

上网搜了一下,发现SAP方面的建议如下:

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

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

我将不胜感激对这两种方法或任何其他解决方案的任何见解。

4

3 回答 3

2

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

只要 IDoc 最终将再次发送到另一个 SAP 系统,IDoc 字段中的尾随空格字符就没有任何用途。在这种情况下,它们实际上只会扩大 XML 消息的大小而不会增加任何价值。

我目前无法想象您为什么要保留那些尾随空格?SPACE 字符是 ABAP CHAR 类型字段的默认初始值,因此您也无法知道其中一些字符是否是有意设置的。

于 2016-12-26T23:31:20.110 回答
0

在 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( ).
于 2017-12-15T16:25:29.607 回答
0

您可以检查字段的总长度是否等于该特定段的长度。您可以使用 RFC IDOCTYPE_READ_COMPLETE。在此通行证 IDOC 类型中,例如 MATMAs01。在表 PT_SEGMENTS 中,您可以获得段长度。

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

于 2015-11-17T09:25:53.133 回答