ABAP 读取服务器CSV文件到内表

本文介绍如何使用ABAP编程语言从指定路径读取CSV文件,并将CSV数据逐行转换为ABAP内部表的过程。包括文件打开、读取、处理字符编码、替换特殊字符等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DATA: BEGIN OF gs_data ,
    cola TYPE string,
    colb TYPE string,
    ...
  END OF gs_data,
  gt_data LIKE TABLE OF gs_data.

DATA lv_file LIKE rlgrap-filename VALUE '///'.
DATA lo_csv TYPE REF TO cl_rsda_csv_converter.
DATA lv_cpcodepage TYPE cpcodepage.
DATA lv_csv(1000).
DATA lv_cpcodepage TYPE cpcodepage.

CALL METHOD cl_rsda_csv_converter=>create
*  EXPORTING
*    i_delimiter = C_DEFAULT_DELIMITER
*    i_separator = C_DEFAULT_SEPARATOR
      RECEIVING
        r_r_conv    = lo_csv.
OPEN DATASET lv_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.
  IF sy-subrc = 0.
    DO.
      READ DATASET lv_file INTO lv_csv.
      IF sy-subrc = 0.
        CLEAR gs_data.
*        去除CSV每一行结尾的换行符#        
        CALL FUNCTION 'NLS_GET_FRONTEND_CP'
          EXPORTING
            langu                 = sy-langu
          IMPORTING
            frontend_codepage     = lv_cpcodepage
          EXCEPTIONS
            illegal_syst_codepage = 1
            no_frontend_cp_found  = 2
            internal_or_db_error  = 3
            OTHERS                = 4.
        CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
          EXPORTING
            intext            = lv_csv
            inter_cp          = lv_cpcodepage
            replacement       = 32
          IMPORTING
            outtext           = lv_csv
          EXCEPTIONS
            invalid_codepage  = 1
            codepage_mismatch = 2
            internal_error    = 3
            cannot_convert    = 4
            fields_not_type_c = 5
            OTHERS            = 6.
        CALL METHOD lo_csv->csv_to_structure
          EXPORTING
            i_data   = lv_csv
          IMPORTING
            e_s_data = gs_data.
        APPEND gs_data TO gt_data.
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
    CLOSE DATASET lv_file.
  ELSE.
    MESSAGE 'Cannot open file!' TYPE 'E' .

 

转载于:https://www.cnblogs.com/xher/p/6709080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值