ABAP上傳本地TXT到內表

上傳本地TXT文件到SAP內表
拿到txt文件中的數據后需要放到一個字符串中再根據txt中的分隔符分割

REPORT zrsd_nsg_0119.
DATA:tmp_path TYPE string,
     v_string TYPE string.
     
DATA:  BEGIN OF moq OCCURS 0,
           ematn(15) TYPE c,        "MPN
           bstmi(15) TYPE c,        "MOQ
           moqdate LIKE sy-datum,
           moqtime LIKE sy-uzeit,
           moquser LIKE sy-uname,
        END OF moq,
      itab LIKE moq OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS: m_fname LIKE rlgrap-filename MEMORY ID name.
SELECTION-SCREEN END OF BLOCK a1.
INITIALIZATION.
  CLEAR : itab_output, tmp_path, m_fname.
  REFRESH : itab_output.
  MODIFY SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR m_fname.
  PERFORM get_filename USING m_fname.
START-OF-SELECTION.
  PERFORM GET_MOQDATA.
*&-------------------------------------------------------------------
*
*&      Form  get_filename
*&--------------------------------------------------------------------
*
*       text
*---------------------------------------------------------------------
*
*      -->P_M_FNAME  text
*---------------------------------------------------------------------
*
FORM get_filename USING    v_fname.

  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            def_filename     = '*.txt'
            def_path         = 'd:\'
            mask             = ',TEXT document      ,*.txt.'
            mode             = 'O'
            title            = 'Create GIN'
       IMPORTING
            filename         = v_fname
       EXCEPTIONS
            inv_winsys       = 1
            no_batch         = 2
            selection_cancel = 3
            selection_error  = 4
            OTHERS           = 5.
  tmp_path = v_fname.
  CLEAR : moq.
  REFRESH : moq.
  IF sy-subrc = 0.
    CALL FUNCTION 'GUI_UPLOAD'
         EXPORTING
              filename            = tmp_path
              filetype            = 'ASC'
              has_field_separator = ' '   "txt文件分隔符(空格)
         TABLES
              data_tab            = itab
         EXCEPTIONS
              file_open_error     = 1
              file_read_error     = 2.
  ENDIF.
ENDFORM.                    " get_filename
*&      Form  GET_MOQDATA.
*&------------------------------------------------------------

FORM GET_MOQDATA.
 DATA: length TYPE i.
 DATA: item_count TYPE i VALUE '0'.
 WRITE: /, 3'MPN', 20'MOQ', 40'DATE', 60'TIME', 80'USER',/.

  LOOP AT itab INTO v_string.
       SPLIT v_string AT ' ' INTO   "根據空格分割每個字段
      moq-ematn
      moq-bstmi.
      moq-moqdate = sy-datum.      "日期  系統字段
      moq-moqtime = sy-uzeit.      "時間
      moq-moquser = sy-uname.      "用戶
      APPEND moq.
      WRITE: / moq-ematn UNDER 'MPN',
               moq-bstmi UNDER 'MOQ',
               moq-moqdate UNDER 'DATE',
               moq-moqtime UNDER 'TIME',
               moq-moquser UNDER 'USER',/.
 ENDLOOP.

 IF not moq is initial.
   DESCRIBE TABLE moq LINES item_count.

   WRITE:/ item_count,+'行數據寫入完成'.
 ELSE.
   WRITE:/,3'文件無數據'.
 ENDIF.
 ENDFORM.

測試結果
在这里插入图片描述在这里插入图片描述
txt文件內容
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值