Download Excel
1.FM:GUI_DOWNLOAD
?
這是最基本的方法,對應 CLASS:CL_GUI_FRONTEND_SERVICES 的方法 GUI_DOWNLOAD
注意參數 FILENAME 以xls結尾這樣在保存時可以保存為 excel.
示例如下
?
data:itab?like?table?of??mara?WITH?HEADER?LINE.
DATA:BEGIN?OF?T_FIELDNAMES??OCCURS?0,
????????NAME?TYPE?CHAR20,
?????END?OF?T_FIELDNAMES.
START-OF-SELECTION.
select?*?from?mara?into?table?itab?up?to?10?rows.
?
??????T_FIELDNAMES-NAME?=?'公司代碼'.
??????APPEND?T_FIELDNAMES.
??????T_FIELDNAMES-NAME?=?'功能范圍'.
??????APPEND?T_FIELDNAMES.
?
CALL?FUNCTION?'GUI_DOWNLOAD'
??EXPORTING
????filename????????????????????????=?'C:\1234.xls'
????FILETYPE????????????????????????=?'DAT'???
"這里一般用DAT,如果用ASC則1000-不會顯示為-1000,而dat會顯示為-1000,如果用DBF則不會有縮進,即字符前面的空格會被除去,而且字符的前導0也會輸出。
????CODEPAGE????????????????????????=?'8404'
??tables
????data_tab????????????????????????=?ITAB
????FIELDNAMES??????????????????????=?T_FIELDNAMES
?
這個函數雖然說比較簡單,但當FILETYP為DAT 和ASC時,在我的2010版EXCEL打開時會彈出如下的對話框(不知道在EXCEL 2003會不會有這樣的問題,知道的童鞋可以給個留言):
原因: 以DAT和ASC格式存的EXCEL其實是TXT格式,與EXCEL格式不一致。
?
2.FM:SAP_CONVERT_TO_XLS_FORMAT
這個FM功能與GUI_DOWNLOAD類似,不過與EXCEL版本有兼容性的問題,本人在自己的系統上(excel2010)測試此FM,給出了EXCEL文件格式無效,無法打開,在EXCEL2003暫時沒試過。不過,這里還是給出示例:
?
?
CALL?FUNCTION?'SAP_CONVERT_TO_XLS_FORMAT'
??EXPORTING
*???I_FIELD_SEPERATOR??????????=
*???I_LINE_HEADER??????????????=
????I_FILENAME?????????????????=?p_file??"文件名
*???I_APPL_KEEP????????????????=?'?'
??TABLES
????I_TAB_SAP_DATA?????????????=itab?“內表
*?CHANGING
*???I_TAB_CONVERTED_DATA???????=
??EXCEPTIONS
????CONVERSION_FAILED??????????=?1
????OTHERS?????????????????????=?2
?
?
?
3.FM:MS_EXCEL_OLE_STANDARD_DAT
???這個FM不僅僅能把數據傳到EXCEL同時也會直接打開EXCEL文件。
??但是這個函數有一個缺點:當要把中文數據導入到EXCEL時就必有登陸中文的GUI運行程序,否則中文就會變成'#'號。
?
DATA:BEGIN?OF?iT_FIELDNAMES??OCCURS?0,
????????NAME?TYPE?CHAR20,
???????END?OF?iT_FIELDNAMES.
?
??????iT_FIELDNAMES-NAME?=?'Company Code'.?
??????APPEND?iT_FIELDNAMES.
??????iT_FIELDNAMES-NAME?=?'Function Area'.
??????APPEND?iT_FIELDNAMES.
??iT_FIELDNAMES-NAME?=?'5'. "針對非C、N、D、T類型列的列名,函數有Bug
??APPEND?iT_FIELDNAMES.
?
CALL?FUNCTION?'MS_EXCEL_OLE_STANDARD_DAT'
??????EXPORTING
?????????file_name???????????????????????=?'C:\johnson.XLSX'
*????????CREATE_PIVOT????????????????????=?0
*????????DATA_SHEET_NAME?????????????????=?'?'
*????????PIVOT_SHEET_NAME????????????????=?'?'
*????????PASSWORD????????????????????????=?'?'
*????????pASSWORD_OPTION?????????????????=?0
??????TABLES
*????????PIVOT_FIELD_TAB?????????????????=
?????????DATA_TAB????????????????????????=?itab
?????????FIELDNAMES??????????????????????=it_fieldnames
*?????EXCEPTIONS
*????????FILE_NOT_EXIST??????????????????=?1
*????????FILENAME_EXPECTED???????????????=?2
*????????cOMMUNICATION_ERROR?????????????=?3
*????????oLE_OBJECT_METHOD_ERROR?????????=?4
*????????OLE_OBJECT_PROPERTY_ERROR???????=?5
*????????INVALID_PIVOT_FIELDS????????????=?6
*???????DOWNLOAD_PROBLEM????????????????=?7
*????????OTHERS??????????????????????????=?8.
????????????????????
?
說明:應用這個FM時要注意的BUG:
1、Fieldname數據類型會被強制轉變為對應列的類型,如果轉換失敗則Dump
2、如果連續兩次或兩次以上以上調用,列名會跑到數據區
?
還有一個貌似是這個函數前身 EXCEL_OLE_STANDARD_DAT ,實現方法差不多,不過這個函數對某些表會報
"data can't converted in unicode program"的錯誤,所以還是建議大家采用最新的函數。
?
?
?
4.FM:XXL_FULL_API
這個作者還沒有用過,不過有個參考示例se38:XXLTTEST,有興趣和需求的童鞋可以去看看。
?
5.OLE
這種方式與上面幾種比較優點在于能夠定制EXCEL格式,不過比較麻煩。
實現方法大家GOOLGE,網上很多前輩的帖子,這里就不詳述。
?
6.ABAP2XLSX
這是一個類包,是一群愛好者開發的一個專門用于將ABAP數據導入到EXCEL的類,包括對齊,合并,字體,著色等的設置,因為是面向對象的,相比OLE方式要簡單,所以編寫程序也就比較省力了。
這個方法一般用于需要定制EXCEL格式的情況下使用。
有需要的童鞋可以CALL ME,大家交流一下。。。。
總結
以上是生活随笔為你收集整理的Download Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于GUI_DOWNLOAD中下载exc
- 下一篇: 取月初月末函数