读服务器上的文件和读本地的文件

本文档详细介绍了如何使用SAP进行服务器上文件的读取,包括通过'GUI_UPLOAD'函数读取数据集,以及通过打开数据集逐行读取本地文件的内容,涉及字段分割、数据存储到内部表等操作。

*&---------------------------------------------------------------------*
*   读服务器上的文件和读本地的文件
*
*&---------------------------------------------------------------------*
*   读服务器上的文件 open dataset
*   读本地的文件    GUI_UPLOAD
*
*&---------------------------------------------------------------------*
*   读服务器上的文件 open dataset
data filename type string.

data: begin of st_up,
         record(600) type c,
      end of st_up.

data: it_lin like table of st_up with header line,
      st_lin like table of st_up with header line.

    call function 'GUI_UPLOAD'
         exporting
              filename = filename
         tables
              data_tab = it_lin.

  loop at it_lin.

        split it_lin at ',' into st_tab-pron st_tab-fwsr
                                 st_tab-czfy st_tab-sjsr.
        append st_tab to it_tab.

  endloop.

*   读服务器上的文件 open dataset
*   读服务器上的文件 open dataset

DATA: F_name(150)  TYPE C,
      lo_line(200) type c.                           "记录文件中每行的数据
* 内部表声明
data: begin of st_f01 occurs 0,
        del       type c,
        bktxt(10) type c,                       "记录号
        bldat(8)  type c,                       "凭证日期
        budat(8)  type c,                       "记账日期
        newbs(2)  type c,                       "记账码
        saknr(10) type c,                       "总账科目
        kunnr(10) type c,                       "客户
        wrbtr(16) type c,                       "金额
        sgtxt(50) type c,                       "文本
        prctr(10) type c,                       "利润中心
        rstgr(3) type c,                        "原因代码
      end of st_f01.


  open dataset F_name for input in text mode.
  if sy-subrc <> 0.
    exit.
  endif.

  do.
    read dataset f_name into lo_line.  "一条 一条的读数据
    if sy-subrc <> 0.  "最后一条的情况
      exit.
    endif.

    st_f01-bktxt = lo_line+0(10).              "记录号
    st_f01-bldat = lo_line+10(8).              "凭证日期
    st_f01-budat = lo_line+10(8).              "记账日期
    st_f01-newbs = lo_line+26(2).              "记账码
    st_f01-saknr = lo_line+28(10).             "总账科目
    st_f01-kunnr = lo_line+38(10).             "客户
    st_f01-wrbtr = lo_line+48(16).             "金额
    st_f01-sgtxt = lo_line+64(50).             "文本
    st_f01-prctr = lo_line+114(10).            "利润中心
    st_f01-rstgr = lo_line+124(3).             "原因代码
    append tbl_f01.

  enddo.

  close dataset v_name.


loop at st_f01.

**数据库操作

endloop. 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值