問題: EXCEl 導(dǎo)入成內(nèi)表時,單元格數(shù)據(jù)存在換行符#啊#情況以及長度超過256,且不能.txt文件格式上傳。??
造成的原因是用戶使用了0D0A (16進制)做為換行符,abap中是顯示'##' 在SAP中對應(yīng)的是cl_abap_char_utilities=>cr_lf . (cl_abap_char_utilities)有大量特殊字符
1. “0D”是把光標(biāo)移到同一行的頂頭——回車(CR)。
2、“0A”是把光標(biāo)移到下一行——換行(LF)。
3、16進制代碼中“0A”是換行,如果只有“0D”,那么光標(biāo)會回到這一行的開始處,只有“0A“、”0D”一起用,才能使光標(biāo)到下一行的開始處。
下面是我使用過的方案
一: ALSM_EXCEL_TO_INTERNAL_TABLE 擴展 ZALSMEX_TABLINE? 缺點: 無法識別換行,長文本換行后自動row+1 導(dǎo)致錯誤 處理方法:1. 擴展excle 表行 ALSMEX_TABLINE-value長度? ? ? ? ? ? ? ? ? ? ? 2. 和客戶溝通將文件中長文本用txt中顯示并且去掉中間空行。用戶不同意? 方案
二: TEXT_CONVERT_XLS_TO_SAP? 缺點:? 無法突破256長度限制 處理方法: 嘗試復(fù)制類下來但是package? SOFFICEINTEGRATION 中接口,實施類,以及include 的程序相互嵌套,無法底層更改256長度限制。
upload_xls_file_2_itab 也是同理。
最終解決方案是
結(jié)論:用戶接受更改模板將長文本放在最后面。
實現(xiàn)方式: 增強的? ZALSM_EXCEL_TO_INTERNAL_TABLE? 讀取? 前面正常數(shù)據(jù),OLE read cell? 讀取最后一列單元格然后拼接的方式實現(xiàn)。