在项目中遇到EXCEL里面导入长文本,长文本是有格式,分行显示,如下所示

EXCEL中带有换行符

注意:在单元格里输入文本时,如需换行不能用空格换行,必须使用组合键【Alt + Enter】即可
当EXCEL中自动换行后,SAP标准上传函数,会识别到则该文本内容的开头和结尾处会被自动加上引号,当EXCEL中没有换行符,则不会有引号,当有换行符,则会有引号

针对以上情况,在代码中读取文本后去除前后的引号,代码如下:
“由于数据格式问题,检验特性长文本字段会以双引号开头和结尾,此处去掉该引号
IF gt_out-text_line IS NOT INITIAL.
DATA(lv_str1) = gt_out-text_line+0(1).
IF lv_str1 = '”'.
gt_out-text_line = gt_out-text_line+1.
ENDIF.
DATA(lv_length) = strlen( gt_out-text_line ).
IF lv_length > 1.
lv_length = lv_length - 1.
lv_str1 = gt_out-text_line+lv_length(1).
IF lv_str1 = ‘"’.
gt_out-text_line = gt_out-text_line+0(lv_length).
ENDIF.
ENDIF.
ENDIF.
DATA:lt_text_line TYPE TABLE OF string.
DATA:lv_longtext TYPE string.
DATA:lt_stram_lines TYPE STANDARD TABLE OF string,
ls_string TYPE string,
lt_text TYPE tline_t.
ls_string =
APPEND ls_string TO lt_stram_lines.
CALL FUNCTION ‘CONVERT_STREAM_TO_ITF_TEXT’
EXPORTING
stream_lines = lt_stram_lines
lf = ‘X’
TABLES
itf_text = lt_text.
此例为检验特性长文本,利用该长文本内表赋值给BAPI长文本内表
DELETE lt_text WHERE tdline = ‘。’ OR tdline IS INITIAL.
LOOP AT lt_text ASSIGNING FIELD-SYMBOL(
gt_text-format_col =
gt_text-text_line =
APPEND gt_text.
CLEAR gt_text.
ENDLOOP.
EXCEL中以某个特殊符号作为分隔符号,比如美元符号$

SPLIT
*
LOOP AT lt_text_line INTO DATA(ls_text_line)…
IF sy-tabix = 1.
lv_longtext = ls_text_line.
ELSE.
lv_longtext = lv_longtext && cl_abap_char_utilities=>cr_lf
&& ls_text_line.
ENDIF.
ENDLOOP.
ls_string = lv_longtext.
APPEND ls_string TO lt_stram_lines.
CALL FUNCTION ‘CONVERT_STREAM_TO_ITF_TEXT’
EXPORTING
stream_lines = lt_stram_lines
lf = ‘X’
TABLES
itf_text = lt_text.
DELETE lt_text WHERE tdline = ‘。’ OR tdline IS INITIAL.