ABAP:字符串操作和符号#

2020-09-09 05:55发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我从前端获得了一个XString格式的CSV文件,将其转换为String后,它看起来如下:

在下一步中,我尝试在'##'INTO TABLE itab中执行SPLIT lv_string,以便获取数据,但它不起作用。 当我尝试用空格替换'#'时,结果是sy-subrc = 4。

从我的角度来看,我有这个问题,因为SAP在这种情况下将符号#用作不可打印符号的符号(转换字节->字符串的结果)。

我的问题是:在这种情况下,如何在#中使用SPLIT/REPLACE?

我还认为我可以在将XString转换为String时更改代码页,但是我已经使用4110(utf-8),并且不知道更好的替代方法。

在此方面,我将不胜感激! 谢谢,BR。

(29.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我从前端获得了一个XString格式的CSV文件,将其转换为String后,它看起来如下:

在下一步中,我尝试在'##'INTO TABLE itab中执行SPLIT lv_string,以便获取数据,但它不起作用。 当我尝试用空格替换'#'时,结果是sy-subrc = 4。

从我的角度来看,我有这个问题,因为SAP在这种情况下将符号#用作不可打印符号的符号(转换字节->字符串的结果)。

我的问题是:在这种情况下,如何在#中使用SPLIT/REPLACE?

我还认为我可以在将XString转换为String时更改代码页,但是我已经使用4110(utf-8),并且不知道更好的替代方法。

在此方面,我将不胜感激! 谢谢,BR。

(29.6 kB)
付费偷看设置
发送
4条回答
Nan4612
1楼 · 2020-09-09 06:34.采纳回答

你好 Denis Yuzhakov

我认为这是十六进制的,换行 表示为" 0D"

,所以我建议您使用此代码中的on。

 Data(lv_break_line)='0D'。

 用空格替换lv_string中lv_break_line的所有事件。
 要么
 用空格替换lv_string中所有正则表达式'(#)'的出现。
 要么
 将lv_string中所有出现的CL_ABAP_CHAR_UTILITIES => NEWLINE替换为
  空间。
 要么
 将lv_string中所有出现的CL_ABAP_CHAR_UTILITIES => CR_LF替换为
  空间。
 

最诚挚的问候

易卜拉欣

蓋茨
3楼-- · 2020-09-09 06:33

您好,

内部表中的#表示解释器无法处理的特殊字符(制表符,符号,特定的字母等等)。

1。 查看文件内容;

2。 使用下面的FM来翻译特殊字符以读取可读字符:

SCP_REPLACE_STRANGE_CHARS

SF_SPECIALCHAR_DELETE

KR

亚瑟·席尔瓦

微wx笑
4楼-- · 2020-09-09 06:41

谢谢您的帮助,易卜拉欣!

U + 000D和U + 000A实际上显示为##。

关于Unicode一章,这是一个很好的Wikipeda文章:

https://en.wikipedia.org/wiki/Newline

# p#

Arthur Fuscella Silva和Ebrahim Hatem都有关于如何处理数据的好主意。 首先确定文件的实际内容是什么。 您可以使用许多易于使用的廉价或共享软件,也可以使用开放源代码的十六进制编辑器来查看源数据。

在SAP端,您可以按十六进制按钮确定内容。

这里是关于使用REPLACE处理ABAP中的十六进制字符的另一讨论。 https://answers.sap.com/questions/ 12007615/how-to-remove-or-remove-或replace-nonprintable-characters-f.html

和另一个一般性讨论https://answers.sap.com/questions/8257473/replace-hex-value-with-space.html

一周热门 更多>