点击此处---> 群内免费提供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读取文件并遇到此问题的人。
请不要发布指向无效的解决方案的链接! 凡能解决挑战的人将获得满分。
谢谢大家! ????
您可以使用cl_abap_char_utilities => cr_lf来拆分wa_split-hourly_rate:
致谢
您只是想删除每个记录末尾出现的#(CRLF)吗?
为什么不立即在xxx处拆分为fileds操作之前执行以下操作。
致谢
Raja
成功! Peluka和Naimesh,我不得不结合您的两个建议,终于使它起作用了!
感谢您的澄清,Rich。 由于缺少更好的词,我最终将我的" aux"字段称为"垃圾",但最后您确认了我的想法。
对于在此问题上难以找到成功答案的其他人,这对我有用:
常量:c_comma(1)TYPE c VALUE',',
c_crlf(1)类型c值cl_abap_char_utilities => cr_lf。
数据:w_junk TYPE字符串。
读取数据集p_fname INTO wa_unsplit。
sy-subrc EQ 0。
向w_unsplit_tot加1。
拆分wa_unsplit AT c_comma INTO:
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。
这是从"每小时费率"字段的末尾删除CR/LF字符的行!
拆分wa_split-hourly_rate AT c_crlf INTO:
wa_split-hourly_rate w_junk。
附加wa_split到它_split。
清除:wa_unsplit,
wa_split。
读取数据集p_fname INTO wa_unsplit。
结束。
非常感谢大家! SDN员工再次度过了难关。 奖励积分!
打开数据集p_fname使用智能换行输入默认输入的文本模式。
根据您的abap版本/发行版,以这种方式打开数据集应解决此问题。
这应该识别换行符CR和CRLF的两种类型
我仅使用智能换行选项解决了相同的问题。
一周热门 更多>