`
jgtang82
  • 浏览: 406360 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CSV文件上传下载分隔符问题以及ABAP正则式

    博客分类:
  • ABAP
阅读更多

前些天在群里讨论CSV文件上传时分隔符的问题, 当时写个两个事例程序, 可能以后有用, 还是在这里备注下吧.

1. 当上传的CSV文件是用逗号分隔时FM, TEXT_CONVERT_CSV_TO_SAP中指定分隔符不起作用, 下面的代码通过一个convert subroutine 将itab中的分隔符手工处理下, 再给这个FM用.
REPORT ztr0010.
TYPE-POOLS: abap.
CONSTANTS: c_separator VALUE ',',
           c_replacer VALUE ';'.
DATA: v_source(255) VALUE '2000,"200,5","a""b"'.
PERFORM convert USING v_source.
WRITE v_source.

FORM convert CHANGING p_source.
  DATA: lv_len TYPE i,
        lv_c(1).
  DATA: lv_flag TYPE abap_bool VALUE abap_true.
  lv_len = STRLEN( p_source ).
  DO lv_len TIMES.
    lv_c = p_source+sy-index(1).
    IF lv_c = '"'.
      IF lv_flag = abap_true.
        lv_flag = abap_false.
      ELSE.
        lv_flag = abap_true.
      ENDIF.
    ENDIF.
    IF lv_flag = abap_true AND lv_c = c_separator.
      p_source+sy-index(1) = c_replacer.
    ENDIF.
  ENDDO.
ENDFORM.                    "convert

2. 生成CSV文件时, 如果想让分隔符不是逗号, 可以参考下面的代码
REPORT ztr0009.
TYPE-POOLS:truxs.
DATA: BEGIN OF itab OCCURS 0,
  vbeln LIKE vbap-vbeln,
  posnr LIKE vbap-posnr,
END OF itab.

DATA:itab1 TYPE truxs_t_text_data,
   wa_itab1 LIKE LINE OF itab1.

SELECT vbeln posnr  INTO TABLE itab  FROM vbap  UP TO 10 ROWS.

CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
  EXPORTING
    i_field_seperator    = ';'
  TABLES
    i_tab_sap_data       = itab
  CHANGING
    i_tab_converted_data = itab1
  EXCEPTIONS
    conversion_failed    = 1
    OTHERS               = 2.

IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1
  sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT itab1 INTO wa_itab1.
  TRANSLATE wa_itab1 USING ';,'.
  MODIFY itab1 FROM wa_itab1 INDEX sy-tabix.
ENDLOOP.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
    filename = 'C:\TEMP\test.csv'
  TABLES
    data_tab = itab1
  EXCEPTIONS
    OTHERS   = 1.

另: 在新的ABAP开发环境中支持POSIX-style Regular Expressions, 可以用示例程序 DEMO_REGEX_TOY 对正规式做一些测试.ABAP正规式文档见附件.

分享到:
评论

相关推荐

    SAP ABAP 正则表达式 Regular expressions

    这个小型的交互式工具专为ABAP开发者设计,旨在快速测试他们的正则表达式。它能够准确反映出ABAP中正则表达式的语义,而不是像许多在线工具那样仅适用于通用正则表达式。通过Regex Toy,开发者可以在ABAP环境中即时...

    ABAP正则表达式的使用

    ### ABAP正则表达式的使用 #### 一、引言 ABAP(Advanced Business Application Programming)作为SAP系统的核心编程语言之一,在企业级应用开发中占据着重要地位。随着SAP系统的不断发展,ABAP也在不断地引入新的...

    ABAP读取本地CSV文件.txt

    ABAP读取本地CSV文件

    ABAP url下载文件

    根据提供的文件信息,本文将详细解释 ABAP 中通过 URL 下载文件的相关知识点,包括 ABAP 程序中实现此功能的基本步骤和技术要点。 ### ABAP URL 文件下载概述 ABAP(Advanced Business Application Programming)...

    SAP从FTP读取CSV文件.txt

    通过ABAP程序去读取FTP服务器的CSV文件

    ABAP 外部链接下载文件

    根据给定文件的信息,本文将围绕“ABAP外部链接下载文件”的主题展开,详细解析如何在SAP ABAP环境中利用URL实现文件下载的功能,并对代码片段进行深入分析。 ### 核心知识点概述 1. **ABAP环境中的HTTP客户端操作...

    ABAP正则表达式

    `(匹配前一个字符零次或一次)以及`|`(或操作符,匹配两种可能的模式之一)。 2. **ABAP中的正则表达式函数** - `REGEX_MATCH`: 检查字符串是否符合给定的正则表达式模式。 - `REGEX_REPLACE`: 在字符串中替换...

    ABAP从FTP下载文件并解析到内表移动文件位置.zip

    在ABAP(Advanced Business Application Programming)环境中,处理文件操作,如从FTP服务器下载文件、解析ZIP文件、将数据存储到内表以及管理文件系统中的文件移动,是常见的任务。本篇将详细介绍如何实现这些功能...

    abap 上传文件到ftp

    abap 上传文件到ftp 比较使用的实例,大家可以学习。

    数字加千分符和去千分符

    千分符(也称为分隔符)通常是一个逗号或句点,用于每三位数字之间,使得数字更易读。例如,数字1234567890经过千分符格式化后,会变为1,234,567,890。 在JavaScript中,我们可以使用内置的`toLocaleString()`方法...

    SAP WDA(web dynpro for abap) 上传

    sap web dynpro for abap

    abap程序批量下载

    ### ABAP程序批量下载工具详解 #### 一、概述 ABAP程序批量下载工具(原名:Mass download version 1.5.0)是一款专为SAP开发人员设计的实用工具,旨在帮助用户批量下载ABAP环境中的各种对象,如程序、函数、数据...

    ABAP report报表文件上传下载

    ### ABAP Report报表文件上传与下载技术解析 #### 概述 ABAP(Advanced Business Application Programming)是SAP系统中的核心编程语言之一,主要用于开发、维护SAP应用程序。本文将详细解析ABAP环境下如何实现报告...

    java分割读取csv文件内容可根据逗号引号来切割读取

    可读取复杂的csv文件,根据引号和逗号等分割读取所需要的数据信息。

    ABAP程序下载工具 1.4.4

    ABAP程序下载工具1.4.4是一款专为SAP系统设计的应用,它允许用户方便地批量下载ABAP源代码程序。在SAP系统中,ABAP(Advanced Business Application Programming)是主要的编程语言,用于开发和定制企业级业务应用...

    生成XML文件ABAP程序

    根据提供的ABAP程序片段,我们可以总结出以下关于生成XML文件的相关知识点: ### 1. ABAP中的IXML库介绍 ABAP(Advanced Business Application Programming)是SAP系统中广泛使用的一种编程语言。在处理XML数据时...

    ABAP自开发程序下载源码

    ABAP自开发程序下载源码

Global site tag (gtag.js) - Google Analytics