点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
关于此主题的文章很多。 但是他们都没有向我说明它是如何工作的。
SAP中的数据以Unicode格式维护。 但是某些外部合作伙伴要求将数据转换为其他非Unicode字符集。
示例:
在SAP中,字符ß= C39F。
我们的界面合作伙伴希望使用字符集CP437。 在此字符集中,字符ß= E1的代码。
因此,我希望SAP Unicode字符C39F可以转换为字符E1。
如何完成?
关于杰克
lo_xml = cl_ixml => create()。 lo_encoding = lo_xml-> create_encoding(byte_order = 0 character_set ='CP437')。 lo_document = lo_xml-> create_document()。 lo_stream_factory = lo_xml-> create_stream_factory()。 lo_stream = lo_stream_factory-> create_ostream_xstring(lv_data)。 lo_stream-> set_encoding(lo_encoding)。 lo_renderer = lo_xml-> create_renderer(ostream = lo_stream document = lo_document)。 lo_element = lo_document-> create_element_ns(`data`)。 lo_element-> set_attribute_ns(name ='attribute'value =`AAAAßßßß`)。 lo_document-> append_child(lo_element)。 lo_renderer-> render()。
您的代码正确,但是在表TCP00A(标准名称和SAP代码页编号之间的关系)中没有完整描述一些代码页。 例如,它将与代码页" iso-8859-1"一起使用。
要完成TCP00A,您可能会在笔记 1901768-未为gb18030定义的代码页。
去交易SCP。 输入代码页1107(CP437的SAP代码页)。
更改代码页。
添加属性H 0001 CP437和保存。
再次尝试您的程序。
。
编辑:Eszett字符是Unicode字符U + 00DF。 C39F是其UTF-8中的代码值。 当您指出无效或未知的编码(在TCP00A中)时,该编码将被忽略,因此UTF-8将与XSTRING变量一起使用。
抱歉,我错过了您的问题(请 使用Comment而不是Answer,以便我得到自动通知,或复制/粘贴我的名字。)
是的,SCP可以使用,但是如果您不习惯工作,可能会有些复杂 与代码页。 另一个解决方案是先用功能模块SCP_REPLACE_STRANGE_CHARS替换加重的字符,然后执行代码页转换。
解决了这个问题。
这也向我解释了代码页和字符集之间缺少的链接。
现在大多数字符已正确转换为目标字符集。 缺少的字符将转换为默认情况下为"#"的丢失的转换字符。 很好。
"很好地具有类别"中的下一个转换将是字符Ë的转换。 字符Ë在目标字符集中不可用。 因此将其转换为#。 最好是将其转换为E。您知道这是可能的吗?
感谢和问候
一周热门 更多>