如何从CSV数据集中的最后一个字段中真正删除CRLF(#)?

2020-09-07 16:24发布

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

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


大家好!

请注意:我昨天大部分时间都在搜索SDN并阅读有关此主题的各种线程。 是的,我知道,关于该主题还有其他话题,但是昨天下午我花了整个时间尝试发布的每个解决方案,但没有任何效果。 因此,据我所知,尚无人针对此问题发布明确的解决方案。

我正在从我们的应用程序服务器中读取逗号分隔的CSV文件。 它最初是在Microsoft Excel中,但另存为CSV文件。 我按如下所示打开文件:

OPEN DATASET p_fname,用于在默认情况下以文本模式输入。

这是我的循环,可将整个文件读取到一个内部表中,并将其拆分为各个字段:

读取数据集p_fname INTO wa_unsplit。

sy-subrc EQ 0。

向w_unsplit_tot加1。

在w_comma INTO中拆分wa_unsplit:

wa_split-massn

wa_split-massg

wa_split-curr

wa_split-persg

wa_split-pernr

wa_split-persid

wa_split-persk

wa_split-stat2

wa_split-fisc_year

wa_split-funds_center

wa_split-plans

wa_split-orgeh

wa_split-abkrs

wa_split-werks

wa_split-sem_posit

wa_split-ansal

wa_split-bsgrd

wa_split-adm_adj_amt

wa_split-hourly_rate。

附加wa_split到它_split。

清除:wa_unsplit,

wa_split。

读取数据集p_fname INTO wa_unsplit。

结束。

问题是最后一个字段wa_split-hourly_rate(定义为字符长度17)在其末尾附加了一个"#"。 每条记录都会发生这种情况,它似乎是CR/LF字符(十六进制的值与cl_abap_char_utilities => cr_lf相同)。

我已经尝试了所有以前建议的从我的hourly_rate字段中删除该字符的方法。 我尝试了另一个STRIP命令。 我已经尝试过REPLACE和TRANSLATE以及很多其他功能。 尽管SDN上存在所有与此相关的线程,但我还没有找到真正可行的方法。

当然,我不能成为第一位从Application Server读取文件并遇到此问题的人。

请不要发布指向无效的解决方案的链接! 凡能解决挑战的人将获得满分。

谢谢大家! ????

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

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


大家好!

请注意:我昨天大部分时间都在搜索SDN并阅读有关此主题的各种线程。 是的,我知道,关于该主题还有其他话题,但是昨天下午我花了整个时间尝试发布的每个解决方案,但没有任何效果。 因此,据我所知,尚无人针对此问题发布明确的解决方案。

我正在从我们的应用程序服务器中读取逗号分隔的CSV文件。 它最初是在Microsoft Excel中,但另存为CSV文件。 我按如下所示打开文件:

OPEN DATASET p_fname,用于在默认情况下以文本模式输入。

这是我的循环,可将整个文件读取到一个内部表中,并将其拆分为各个字段:

读取数据集p_fname INTO wa_unsplit。

sy-subrc EQ 0。

向w_unsplit_tot加1。

在w_comma INTO中拆分wa_unsplit:

wa_split-massn

wa_split-massg

wa_split-curr

wa_split-persg

wa_split-pernr

wa_split-persid

wa_split-persk

wa_split-stat2

wa_split-fisc_year

wa_split-funds_center

wa_split-plans

wa_split-orgeh

wa_split-abkrs

wa_split-werks

wa_split-sem_posit

wa_split-ansal

wa_split-bsgrd

wa_split-adm_adj_amt

wa_split-hourly_rate。

附加wa_split到它_split。

清除:wa_unsplit,

wa_split。

读取数据集p_fname INTO wa_unsplit。

结束。

问题是最后一个字段wa_split-hourly_rate(定义为字符长度17)在其末尾附加了一个"#"。 每条记录都会发生这种情况,它似乎是CR/LF字符(十六进制的值与cl_abap_char_utilities => cr_lf相同)。

我已经尝试了所有以前建议的从我的hourly_rate字段中删除该字符的方法。 我尝试了另一个STRIP命令。 我已经尝试过REPLACE和TRANSLATE以及很多其他功能。 尽管SDN上存在所有与此相关的线程,但我还没有找到真正可行的方法。

当然,我不能成为第一位从Application Server读取文件并遇到此问题的人。

请不要发布指向无效的解决方案的链接! 凡能解决挑战的人将获得满分。

谢谢大家! ????

付费偷看设置
发送
11条回答
Bunny_CDM
1楼 · 2020-09-07 16:39.采纳回答

您可以使用cl_abap_char_utilities => cr_lf来拆分wa_split-hourly_rate:

 拆分wa_split-hourly_rate AT cl_abap_char_utilities => cr_lf INTO:wa_split-hourly_rate aux。
 

致谢

Nan4612
2楼-- · 2020-09-07 16:31

非常感谢。

蓋茨
3楼-- · 2020-09-07 16:28

您好

如果您不在unicode系统上,那么

常量:con_cret类型x值'0D'。

,如果在Unicode系统上

常量:

con_cret类型c值cl_abap_char_utilities = > CR_LF。

然后分割您的字符串。

致谢,

Naimesh

SAP砖家
4楼-- · 2020-09-07 16:50

也对我有帮助! ????

代楠1984
5楼-- · 2020-09-07 16:28

而不是第一个SPLIT中的wa_split-hourly_rate

使用变量v_STRING。

然后再次将V_STRING拆分为"#"。

将V_STRING设置为"#",进入wa_split-hourly_rate

V_temp1。

致谢

srikanth

追夢秋陽
6楼-- · 2020-09-07 16:49

我想维克还没有从其他地方穿过.....????

bbpeas
7楼-- · 2020-09-07 16:49

嗨,

检查数据集包含的逗号分隔列(字段)和要拆分的字段的数量。 他们应该匹配每个。 如果您错过其中任何一个/多个,可能会发生您的情况。

Raju

一周热门 更多>