函式組: ALSMEX

SapCity發表於2009-07-24

ALSMEX FI-AA Legacy Data Transfer w/ Excel
函式模組:ALSM_EXCEL_TO_INTERNAL_TABLE
ALSM_EXCEL_TO_INTERNAL_TABLE,這個函式模組可以把使用者本地 EXCEL 檔案中的一個矩形塊中的內容上傳到一個內表中。

[@more@]

函式組 ALSMEX FI-AA Legacy Data Transfer w/ Excel

函式模組:ALSM_EXCEL_TO_INTERNAL_TABLE
ALSM_EXCEL_TO_INTERNAL_TABLE,這個函式模組可以把使用者本地 EXCEL 檔案中的一個矩形塊中的內容上傳到一個內表中。

輸入引數:
FILENAME:最長 128 個字元的路徑名稱。
I_BEGIN_COL:匯入單元格的開始列
I_BEGIN_ROW:匯入單元格的開始行
I_END_COL:匯入單元格的結束列
I_END_ROW:匯入單元格的結束行

輸出引數:
INTERN:內表,儲存單元格的內容。結構如下:
-ROW:資料所在行
-COL:資料所在列
-VALUE:資料,最長 50 個字元,如果超過,則相同 ROW COL 的記錄出現多行

ALSM_EXCEL_TO_INTERNAL_TABLE 是上載Excel檔案的一個函式,但是這個函式有兩個限制。
一是每個CELL只能匯入前50個字元,二是如果超過9999行,行號會初始化為從零開始
其實解決起來很簡單,只要改一下結構 ALSMEX_TABLINE 的欄位就行了,然後COPY ALSM_EXCEL_TO_INTERNAL_TABLE 為 ZALSM_EXCEL_TO_INTERNAL_TABLE ,並做少許改動即可。

另外,如果要上載有開啟密碼保護的Excel,只要修改一下OLE的 OPEN 語句即可。
以及匯入指定的Sheet等。。

注意COPY出來的函式的 Global Data 裡面應該有下列語句:

TYPE-POOLS: ole2.
TYPES: ty_d_itabvalue TYPE zalsmex_tabline-value,
ty_t_itab TYPE zalsmex_tabline OCCURS 0,
BEGIN OF ty_s_senderline,
line(4096) TYPE c,
END OF ty_s_senderline,
ty_t_sender TYPE ty_s_senderline OCCURS 0.
CONSTANTS: gc_esc VALUE '"'.

ALSMEX_TABLINE修改為
ROW KCD_EX_ROW_N NUMC 5
COL KCD_EX_COL_N NUMC 5
VALUE CHAR50 CHAR 1023

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22172240/viewspace-1024546/,如需轉載,請註明出處,否則將追究法律責任。