Excel 中单元格内容超过256并且存在特殊换行符

问题: EXCEl 导入成内表时,单元格数据存在换行符#啊#情况以及长度超过256,且不能.txt文件格式上传。  

造成的原因是用户使用了0D0A (16进制)做为换行符,abap中是显示'##' 在SAP中对应的是cl_abap_char_utilities=>cr_lf . (cl_abap_char_utilities)有大量特殊字符

1. “0D”是把光标移到同一行的顶头——回车(CR)。

2、“0A”是把光标移到下一行——换行(LF)。

3、16进制代码中“0A”是换行,如果只有“0D”,那么光标会回到这一行的开始处,只有“0A“、”0D”一起用,才能使光标到下一行的开始处。


下面是我使用过的方案

一: ALSM_EXCEL_TO_INTERNAL_TABLE 扩展 ZALSMEX_TABLINE  缺点: 无法识别换行,长文本换行后自动row+1 导致错误 处理方法:1. 扩展excle 表行 ALSMEX_TABLINE-value长度                      2. 和客户沟通将文件中长文本用txt中显示并且去掉中间空行。用户不同意  方案


二: TEXT_CONVERT_XLS_TO_SAP  缺点:  无法突破256长度限制 处理方法: 尝试复制类下来但是package  SOFFICEINTEGRATION 中接口,实施类,以及include 的程序相互嵌套,无法底层更改256长度限制。

upload_xls_file_2_itab 也是同理。


最终解决方案是

结论:用户接受更改模板将长文本放在最后面。

实现方式: 增强的  ZALSM_EXCEL_TO_INTERNAL_TABLE  读取  前面正常数据,OLE read cell  读取最后一列单元格然后拼接的方式实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。