无法处理变量中的符号#
Symbol # in variable cannot be handled
我从前端获得了一个 CSV 文件作为 XString,在我将其转换为 String 后它看起来如下:
在下一步中,我将尝试执行 SPLIT lv_string AT '##' INTO TABLE itab
,以便获取我的数据,但它不会拆分任何内容,itab
包含一行等于 lv_string
。
如果我尝试 REPLACE '#' IN lv_string WITH space
,lv_string
不会改变并且 sy-subrc
是 4。
从我的角度来看,我遇到这个问题是因为符号 #
在此上下文中被 SAP 用作 non-printable symbols 的符号(由转换字节 -> 字符串产生)。
我的问题是:在这种情况下,如何将 SPLIT/REPLACE 与 #
一起使用?
我还认为我可以在将 XString 转换为 String 时更改 SAP 代码页,但我已经使用了 SAP 代码页 4110
(utf-8) 并且不知道更好的选择...
当您使用调试器显示变量时,它会为所有未分配字形的 control characters 显示通用字符 #
(U+0023)("non-printable symbols"说)。
如果变量对应的是一个文本文件的内容,而且##
经常出现,那么很有可能是控制字符U+000D和U+000A的组合,对应的是" newline" 在 Windows 个文件中。
在后端调试器中,您可以通过单击 "Hexadezimal" 按钮(如您的屏幕截图所示)来检查这些字符的十六进制值。
您可以使用包含这两个控制字符的变量 CL_ABAP_CHAR_UTILITIES=>CR_LF
。
我从前端获得了一个 CSV 文件作为 XString,在我将其转换为 String 后它看起来如下:
在下一步中,我将尝试执行 SPLIT lv_string AT '##' INTO TABLE itab
,以便获取我的数据,但它不会拆分任何内容,itab
包含一行等于 lv_string
。
如果我尝试 REPLACE '#' IN lv_string WITH space
,lv_string
不会改变并且 sy-subrc
是 4。
从我的角度来看,我遇到这个问题是因为符号 #
在此上下文中被 SAP 用作 non-printable symbols 的符号(由转换字节 -> 字符串产生)。
我的问题是:在这种情况下,如何将 SPLIT/REPLACE 与 #
一起使用?
我还认为我可以在将 XString 转换为 String 时更改 SAP 代码页,但我已经使用了 SAP 代码页 4110
(utf-8) 并且不知道更好的选择...
当您使用调试器显示变量时,它会为所有未分配字形的 control characters 显示通用字符 #
(U+0023)("non-printable symbols"说)。
如果变量对应的是一个文本文件的内容,而且##
经常出现,那么很有可能是控制字符U+000D和U+000A的组合,对应的是" newline" 在 Windows 个文件中。
在后端调试器中,您可以通过单击 "Hexadezimal" 按钮(如您的屏幕截图所示)来检查这些字符的十六进制值。
您可以使用包含这两个控制字符的变量 CL_ABAP_CHAR_UTILITIES=>CR_LF
。