ABAP讀取檔案 兩種檔案
ABAP讀取文字檔案分兩種情況:第一種是本地文字檔案,第二種是伺服器文字檔案。它讀取方式不一樣,本地檔案可以直接用 CALL FUNCTION 'WS_UPLOAD'來實現,
然再進行處理,伺服器讀取檔案需要用OPEN DATASET來讀取,然後再進行處理。以下是兩種讀取方式的程式碼:
一、呼叫的程式碼:
PARAMETERS:P_FLNAME LIKE RLGRAP-FILENAME LOWER CASE .
本地文字檔案: PERFORM FRM_GET_DATA TABLES IT_ITAB
USING
'0'.
伺服器文字檔案:PERFORM FRM_GET_FILE_FRM_SERVER TABLES IT_ITAB
USING P_FLNAME
'0'.
二、兩種讀取方式:
(1)讀取本地文字檔案,引數說明:P_ITAB--讀取檔案存放內表,P_FILENAME--檔案所在目錄,P_STARTLINE--讀取檔案的起始行。
FORM FRM_GET_DATA TABLES P_ITAB USING P_FILENAME LIKE RLGRAP-FILENAME P_STARTLINE.
DATA
FRM_IT_FIELD TYPE STRING OCCURS 0 WITH HEADER LINE,
FRM_TABCHAR TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
FIELD-SYMBOLS <FRM_FIELD> TYPE ANY.
IF P_FILENAME IS INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = FRM_IT_DATA
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
RETURN.
ENDIF.
LOOP AT FRM_IT_DATA.
IF SY-TABIX < P_STARTLINE.
CONTINUE.
ENDIF.
SPLIT FRM_IT_DATA AT FRM_TABCHAR INTO TABLE FRM_IT_FIELD.
CLEAR P_ITAB.
LOOP AT FRM_IT_FIELD.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE P_ITAB TO <FRM_FIELD>.
<FRM_FIELD> = FRM_IT_FIELD.
ENDLOOP.
IF P_ITAB IS NOT INITIAL.
APPEND P_ITAB.
ENDIF.
ENDLOOP.
ENDFORM.
(2)讀取伺服器文字檔案,引數說明:P_ITAB--讀取檔案存放內表,P_FILENAME--檔案所在目錄,P_STARTLINE--讀取檔案的起始行。
FORM FRM_GET_FILE_FRM_SERVER TABLES P_IT_ITAB USING P_FILENAME P_DATALINE.
DATA:FRM_L_REPCHAR TYPE EDI_REPCHR,
FRM_L_OS_MESSAGE(200),
FRM_DATASET(100)..
DATA: FRM_WA TYPE STRING.
DATA: FRM_TAB VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,"獲得跳格符.
FRM_ENT VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF."獲得跳格符.
DATA: FRM_IT_DATA TYPE STRING OCCURS 0 WITH HEADER LINE.
DATA: FRM_IT_TAB_ROWNUM TYPE I.
FIELD-SYMBOLS <FRM_FILED>.
FRM_DATASET = P_FILENAME.
CONDENSE FRM_DATASET NO-GAPS.
"開啟檔案
OPEN DATASET FRM_DATASET FOR INPUT IN TEXT MODE ENCODING NON-UNICODE
REPLACEMENT CHARACTER FRM_L_REPCHAR MESSAGE FRM_L_OS_MESSAGE.
IF SY-SUBRC NE 0.
RETURN.
ENDIF.
REFRESH P_IT_ITAB.
"迴圈讀取檔案,處理轉換成格式
DO.
"讀取資料
READ DATASET FRM_DATASET INTO FRM_WA.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
IF SY-INDEX < P_DATALINE.
CONTINUE.
ENDIF.
"替換回車符為空格
REPLACE FRM_ENT WITH '' INTO FRM_WA.
CONDENSE FRM_WA.
IF FRM_WA IS INITIAL OR FRM_WA = ''.
CONTINUE.
ENDIF.
"拆分欄位
SPLIT FRM_WA AT FRM_TAB INTO TABLE FRM_IT_DATA.
FRM_IT_TAB_ROWNUM = LINES( FRM_IT_DATA ).
LOOP AT FRM_IT_DATA.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE P_IT_ITAB TO <FRM_FILED>.
<FRM_FILED> = FRM_IT_DATA.
ENDLOOP.
APPEND P_IT_ITAB.
ENDDO.
ENDFORM.
相關推薦
ABAP讀取檔案 兩種檔案
ABAP讀取文字檔案分兩種情況:第一種是本地文字檔案,第二種是伺服器文字檔案。它讀取方式不一樣,本地檔案可以直接用 CALL FUNCTION 'WS_UPLOAD'來實現, 然再進行處理,伺服器讀取檔案需要用OPEN DATASET來讀取,然後再進行處理。以下是兩種
springBoot使用Controller讀取配置檔案兩種方式&讀取自定義配置方法
Controller 核心配置檔案 application.propertie web.msg=Hello! This is Controller demo; Controller:
C++ 中#include標頭檔案兩種方式的區別
<>:先在系統目錄中尋找標頭檔案,然後再到當前目錄下找,一般用於標準的標頭檔案 stdio.h和 stdlib.h等等" ":先在當前目錄中尋找標頭檔案,然後再到系統目錄中找,一般用於in
oracle 刪除備份檔案兩種方式
執行後會在相同目錄下生成日誌檔案:DelExpiredLog.log現實執行的起始時間點。 @echo off rem write to log set filename=DelExpiredLog.log echo -------------------Delete Expired Log Files--
java的兩種檔案拷貝方式
一.基礎 三種IO方式 1.傳統IO方式,基於流模型實現,提供了File抽象,輸入輸出流等,互動方式是同步,阻塞的方式,也就是說在讀寫動作完成之前,執行緒一直阻塞在那裡。 2.NIO 引入了Channel,Selector,Buffer等新的抽象,可以構建多路複用的,同步非阻
git-檔案兩種狀態與上傳前的準備工作
1.從遠端倉庫拷貝檔案至本地倉庫 git是一個版本控制系統,能夠任意切換提交的任意版本。它的優勢在於可以通過git clone url命令將遠端專案所有資料拷貝到本地(包括歷史版本),這樣即使遠端資料崩潰,也可以通過本地push後完全恢復。 #從github倉庫grit拷貝所有歷
Mysql 匯入匯出檔案兩種方式
下面我們要把上面的檔案匯入到資料庫中,匯入之前要確認資料庫已經在執行,即是mysqld程序(或者說服務,Windows NT下面稱為”服務“,unix下面為”程序“)已經在執行。然後執行下面的命令: bin/mysql –p < /home/mark/New_Data.sql 接著按提示輸入密碼,如果上
Spring boot配置檔案兩種方式
[email protected](prefix = “author”) application.properties author.name=liuyuzhu author.age=31 2 @ConfigurationPropertie
Excel文件讀取的兩種方式
mar row col over lena .sh cell from column 1、Pandas from pandas import read_excel dr=read_excel(filename,header) dr#dataframe數據 dw=Da
FileInputStream讀取位元組流。讀取檔案資料的兩種方式(寫的好)
總結: //1讀取檔案的資料到位元組流inputStream InputStream inputStream = new FileInputStream("D:\\demo.txt");//讀取檔案的資料到位元組流inputStream。
python 讀取wav 音訊檔案的兩種方式
python 中,常用的有兩種可以讀取wav音訊格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfile as sf 5 6 fs,data = wavfile.read(
Python中讀取txt檔案的兩種可行辦法
DataTest.txt中的檔案內容,檔案最後儘量不要留空行,否則有的時候會出現error 1,2,3 4,5,6 7,8,9 第一種方式:使用 csv.reader讀取txt檔案 import csv data = [] with open('E:/DataTest.t
pyspark 讀取csv檔案建立DataFrame的兩種方法
pyspark 讀取csv檔案建立DataFrame的兩種方法 方法一:用pandas輔助 from pyspark import SparkContext from pyspark.sql import SQLContext import pandas as pd sc
使用檔案進行讀取或輸出的兩種方式(重定向版和fopen版)
1.重定向版//利用檔案進行讀取和輸出(重定向版) //如果想要標準輸入而檔案輸出時,只需將關於檔案輸入的語句註釋掉即可,檔案輸入標準輸出同理 //如果想回到標準輸入輸出時,只需將下一行的本地定義註釋掉
SpringBoot的properties和yml兩種配置方式, 配置注入引數, 以及配置檔案讀取失效的問題
SpringBoot支援兩種配置方式,一種是properties檔案,一種是yml 首先在pom檔案中新增依賴: <dependency> <groupId>org.springframework.boot</gro
Java讀取檔案MD5的兩種方案
最近要弄一下Java讀取檔案MD5,注意這裡是小檔案,網上找了一下,有兩種解決方案,一種是用MessageDigest來實現,另種是用org.apache.commons.codec.digest來實現,程式碼如下: package cdm; import java.io
SpringBoot讀取配置檔案的兩種方式以及自定義配置檔案的讀取
1.讀取預設配置檔案中的資料 application.properties 直接使用@Value註解獲取資料 2.使用Environment獲取資料 防止亂碼統一編碼格式 注入Environment 使用getPro
spark讀取kafka資料(兩種方式比較及flume配置檔案)
a1.sources = r1 a1.channels = c1 a1.sinks = k1 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 a1.channels.c1.type = memory a1.channels.c1.capacity
Spring-boot中讀取config配置檔案的兩種方式
瞭解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置檔案application.properties,當然也可以通過註解自定義配置檔案的資訊。 Spring-Boot讀取配置檔案的方式: 一.讀取核心配置檔案資訊application.p
Spring讀取property檔案的兩種配置:EL表示式和placeholder表示式
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/