2015-09-10 20 views
0

我需要通過SAPGUI讀取excel文件(不是批量的,不是來自服務器)。 只有一個工作表/文件,而不是csv文件。通過SAPGUI加載長文件的Excel文件

我知道有幾個功能模塊可以做到這一點,但它們被限制爲每個單元32或40或50個字符的單元大小。

是否有功能模塊或類/方法,允許我讀取更長的單元格的Excel文件? 更長手段:String或由呼叫方所定義或至少80

編輯

我用ALSM_EXCEL_TO_INTERNAL_TABLE成功在細胞大小不是重要的其他項目。該模塊讀入一個ALSMEX_TABLINE結構,該結構將數據限制爲50個字符。

KCD_EXCEL_OLE_TO_INT_CONVERT讀入32個字符/單元格的表格。

+0

你能告訴我們你到目前爲止所嘗試過的嗎? – Christian

+0

不使用csv的原因是這些文件是由最終用戶創建的,並且可能包含與分隔符衝突的特殊字符。 –

回答

1

你說得對,功能模塊'ALSM_EXCEL_TO_INTERNAL_TABLE'只能管理50個字符。在這裏,一個標準的選擇是使用我已經使用的功能模塊'GUI_UPLOAD',但在這種情況下,您必須將excel文件轉換爲cvs文件,這不是您真正想要的。

根據this link,另一種替代方法是創建'ALSM_EXCEL_TO_INTERNAL_TABLE'副本,然後創建結構'ALSMEX_TABLINE'的副本。

新結構的結構字段'VALUE'必須更改爲您需要的長度,然後'ALSM_EXCEL_TO_INTERNAL_TABLE'的副本將使用'ALSMEX_TABLINE'的新結構。

我還沒有試過這個解決方案,但也許可以爲你工作。

希望它有幫助。

+0

副本ALSM_EXCEL_TO_INTERNAL_TABLE解決方案聽起來不錯。我試試看。 –

1

您可以使用FILE_READ_AND_CONVERT_SAP_DATA來實現該目標。它的輸出表單元格限制爲256個字符,這對你來說已經足夠了。代碼示例如下:

TYPES: tv_data(256) TYPE c, 
     BEGIN OF ts_data, 
     value_0001 TYPE tv_data, 
     ... 
     value_0020 TYPE tv_data, 
     END OF ts_data, 
     tt_data  TYPE TABLE OF ts_data. 

DATA: lv_fname TYPE filename-fileintern, 
     pt_data TYPE tt_data. 

lv_fname = 'C:\test.xls'. 
CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA' 
EXPORTING 
    i_filename   = lv_fname 
    i_servertyp   = 'OLE2' 
    i_fileformat   = 'XLS' 
TABLES 
    i_tab_receiver  = pt_data 
EXCEPTIONS 
    file_not_found  = 1 
    close_failed   = 2 
    authorization_failed = 3 
    open_failed   = 4 
    conversion_failed = 5 
    OTHERS    = 6. 

IF sy-subrc <> 0. 
* error handling 
ENDIF.