上传EXCEL到ABAP内表
上傳EXCEL到ABAP內表
將EXCEL文件上載到內表兩種方式:
一、直接將excel數據讀入具有相同結構的內表
二、將excel數據讀入一個行號,列號,值組成的內表,然后通過指針將數據讀到與excel結構相同的內表
?
AT?SELECTION-SCREEN?ON?VALUE-REQUEST?FOR?P_FILE.
??CALL?FUNCTION?'F4_FILENAME'
????IMPORTING
??????file_name?=?P_FILE.
?
CLEAR?PROGRESS_TEXT.
??CONCATENATE?'正在上載、轉換文件,請稍侯......'?''?INTO?progress_text.
??CALL?FUNCTION?'SAPGUI_PROGRESS_INDICATOR'
????EXPORTING
??????TEXT?=?progress_text.
??DATA?l_size?TYPE?I?.
"可以省略upload
??CALL?FUNCTION?'WS_UPLOAD'
????EXPORTING
??????filename???=?p_file
??????filetype???=?'BIN'
????IMPORTING
??????filelength?=?l_size
????TABLES
??????data_tab???=?rawdata.
"內表結構與excel一致,字段最好定義為C類型,讀入內表之后,轉換成系統對應字段類型
??CALL?FUNCTION?'TEXT_CONVERT_XLS_TO_SAP'
????EXPORTING??????"i_line_header????????=?'X'"表示包括字段名
??????i_tab_raw_data???????=?rawdata
??????i_filename???????????=?p_file
????TABLES
??????i_tab_converted_data?=?gt_itab
????EXCEPTIONS
??????conversion_failed????=?1
??????OTHERS???????????????=?2.
?
?**********************************************************************************************8
AT?SELECTION-SCREEN?ON?VALUE-REQUEST?FOR?P_FILE.
??PERFORM?SELECT_FILE.
?
FORM?SELECT_FILE?.
??CALL?FUNCTION?'WS_FILENAME_GET'
????EXPORTING
??????MASK?????????????=?',Excel?Files,*.xls,All?Files,*.*.'(101)
??????TITLE????????????=?'選擇文件'(100)
????IMPORTING
??????FILENAME?????????=?P_FILE
????EXCEPTIONS
??????INV_WINSYS???????=?1
??????NO_BATCH?????????=?2
??????SELECTION_CANCEL?=?3
??????SELECTION_ERROR??=?4
??????OTHERS???????????=?5.
??IF?SY-SUBRC?<>?0?AND?SY-SUBRC?<>?3.
????MESSAGE?E100(ZDEV)?WITH?'選擇文件出錯!'(007).
??ENDIF.
ENDFORM.????????????????????"?SELECT_FILE
"接收excel數據的內表
DATA:?GT_DATA?TYPE?ALSMEX_TABLINE?OCCURS?0?WITH?HEADER?LINE.
FORM?UPLOAD_ITAB?.
??CALL?FUNCTION?'ALSM_EXCEL_TO_INTERNAL_TABLE'
????EXPORTING
??????FILENAME????=?P_FILE
??????I_BEGIN_COL?=?'1'
??????I_BEGIN_ROW?=?'2'
??????I_END_COL???=?'100'
??????I_END_ROW???=?'30000'
????TABLES
??????INTERN??????=?GT_DATA.
??SORT?GT_DATA?BY?ROW?COL?VALUE.
"將數據轉換成一般處理內表結構的數據
??LOOP?AT?GT_DATA.
????MOVE?GT_DATA-COL?TO?L_INDEX.
????ASSIGN?COMPONENT?L_INDEX?OF?STRUCTURE?GT_ITAB?TO?<FS>.
????MOVE?GT_DATA-VALUE?TO?<FS>.
????AT?END?OF?ROW.
??????APPEND?GT_ITAB.
??????CLEAR?GT_ITAB.
????ENDAT.
??ENDLOOP.
??IF?GT_ITAB?IS?NOT?INITIAL.
????APPEND?GT_ITAB.
????CLEAR?GT_ITAB.
??ENDIF.
ENDFORM.????????????????????"?UPLOAD_ITAB
總結
以上是生活随笔為你收集整理的上传EXCEL到ABAP内表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隐藏1:N关系和工具
- 下一篇: SAP中外向交货单出具发票无法生成会计凭