点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我正在尝试将内部表的内容作为CSV文件附加到电子邮件。 但是,当Excel应用程序打开文件时,特殊字符(在这种情况下为法语)存在问题。 如果使用记事本打开它,一切看起来都很好,所以我认为这是PC问题。 但是,如果直接从记事本创建CSV文件,则这些字符在记事本和Excel中都可以,这表明它毕竟可能是ABAP问题。 但是,我不确定。
这是我尝试过的:
LV_LINE_STR是用逗号分隔的字符串,而换行符是CL_ABAP_CHAR_UTILITIES => CL_LF常量。
尝试1:直截了当:处理纯文本-除特殊字符外,效果很好
呼叫功能'SCMS_STRING_TO_FTEXT' 出口 文字= lv_line_str 输入 长度= lv_length 桌子 ftext_tab = lt_att_content_text。 lo_document-> add_attachment( i_attachment_type = CONV#('CSV') i_attachment_subject = CONV#(p_attnam) i_attachment_size = CONV#(lv_length) i_att_content_text = lt_att_content_text )。
尝试2:也许UTF-8转换(必须通过二进制)会有所帮助吗? 结果与上面完全相同
数据: lt_att_content_text_bin TYPE solix_tab。 数据(lv_line_str_conv)= cl_abap_codepage => convert_to( 源= lv_line_str codepage ='DEFAULT'"'UTF-8' )。 通话功能'SCMS_XSTRING_TO_BINARY' 出口 缓冲区= lv_line_str_conv 输入 OUTPUT_LENGTH = lv_length 桌子 binary_tab = lt_att_content_text_bin。 lo_document-> add_attachment( i_attachment_type = CONV#('CSV') i_attachment_subject = CONV#('物品清单') i_attachment_size = CONV#(lv_length) i_att_content_hex = lt_att_content_text_bin )。
提前感谢您的帮助!
KR
伊戈尔
HI
请检查SAP示例报告bcs_example_7并将文本字符串转换为utf-16e,就像在此报告中一样。
最好的问候
Jozsef H
涉及的法语字符是什么?
您为什么不提供一个简单的测试程序,以便每个人都可以尝试?
我认为这是MS Excel与CSV问题。 不是SAP或您的程序问题。 使用尝试2时,您的CSV应该很好(UTF-8 CSV)。
您可以尝试通过在Excel中手动打开文件。 CSV文件导入(在向导中,您可以选择分隔符等),也许有编码选择?
无论如何,我只是在Google上搜索了这篇文章(还有其他一些内容): https://donatstudios。 com/CSV-An-Encoding-Nightmare 可能有助于解决问题。
注意:在手动测试中创建CSV文件:
在Windows中创建记事本(TXT)文件时的默认代码页令人惊讶地不是UTF-8。 如果您在记事本中选择"另存为",则可以进行检查(在底部的弹出窗口中有一个代码页选择项。)。
您好,Jozsef,
感谢这个提示! 出色的内容转换类CL_BCS_CONVERT(RAW,TXT,STRING,XSTRING,SOLI,SOLIX,BIN,OTF,XTAB,TAB)具有许多好的方法。 就我而言,它神奇地解决了这个问题,并减少了调用次数和自定义代码大小。
干杯!
伊戈尔
嗨,Tomas,
感谢您的努力! 现在,我了解了有关记事本的一些有用信息:-)
您是对的:通过记事本手动创建的CSV在" ANSI"代码页中创建,在SAP中不可用(或在表TCP00A中以其他方式命名)。 但是幸运的是,类CL_BCS_CONVERT神奇地解决了所有问题。
一周热门 更多>