使用事先做好的模板,上傳至SAP,事務碼SMW0,
回到報表開發中,得到保存路徑(給用戶自己選)
*選擇保存路徑
CALL METHOD cl_gui_frontend_services=>directory_browse
CHANGING
selected_folder = lv_selected_folder
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
定義:
DATA: go_excel TYPE ole2_object,
go_workbook TYPE ole2_object,
go_sheet TYPE ole2_object.
DATA: lv_destination TYPE rlgrap-filename.
DATA: ls_key TYPE wwwdatatab.
* 首先下載模版
SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF ls_key WHERE relid = 'MI' AND objid = 'SMW0中上傳模板的對象名稱'.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_key
destination = lv_destination.
* 打開模版
CREATE OBJECT go_excel 'EXCEL.APPLICATION'.
IF sy-subrc NE 0.
ENDIF.
SET PROPERTY OF go_excel 'VISIBLE' = 1.
CALL METHOD OF go_excel 'WORKBOOKS' = go_workbook.
CALL METHOD OF go_workbook 'OPEN'
EXPORTING
#1 = lv_destination.
CALL METHOD OF go_excel 'SHEETS' = go_sheet
EXPORTING
#1 = 1.
CALL METHOD OF go_sheet 'ACTIVATE'.
進行填值
PERFORM fill_range USING 1 1 gs_head-butxt. "公司名稱
PERFORM excel_row_insert USING go_sheet lv_loop2 1 lv_loop2. "復制並插入一行
再填值
PERFORM fill_range USING lv_loop2 2 gs_output-matnr. "
最后關閉表格
PERFORM sub_excel_save. "關閉
更改顏色參考 https://www.cnblogs.com/ybinlog/p/13797312.html
附上PERFORM內容

*&---------------------------------------------------------------------* *& Form SUB_EXCEL_SAVE *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM sub_excel_save . GET PROPERTY OF go_excel 'ACTIVESHEET' = go_sheet. "獲取活動SHEET FREE OBJECT go_sheet. FREE OBJECT go_workbook. GET PROPERTY OF go_excel 'ACTIVEWORKBOOK' = go_workbook. * SET PROPERTY OF go_excel 'VISIBLE' = 0. "是否顯示EXCEL 此處顯示不退出 CALL METHOD OF go_workbook 'SAVE'. CALL METHOD OF go_excel 'QUIT'. FREE OBJECT go_sheet. FREE OBJECT go_workbook. FREE OBJECT go_excel. ENDFORM. *&---------------------------------------------------------------------* *& Form FILL_RANGE *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* * -->P_1 text * -->P_1 text * -->P_GS_HEAD_BUTXT text *&---------------------------------------------------------------------* FORM fill_range USING VALUE(f_row) VALUE(f_col) VALUE(f_value). DATA: row TYPE i, col TYPE i, lo_cell TYPE ole2_object. row = f_row. col = f_col. CALL METHOD OF go_excel 'CELLS' = lo_cell EXPORTING #1 = row #2 = col. SET PROPERTY OF lo_cell 'VALUE' = f_value. ENDFORM. *&---------------------------------------------------------------------* *& Form EXCEL_ROW_INSERT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* * -->P_GO_SHEET text * -->P_LV_LOOP2 text * -->P_1 text *&---------------------------------------------------------------------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count lv_rowcopy. DATA lc_range TYPE ole2_object. DATA h_borders TYPE ole2_object. DO lc_count TIMES. CALL METHOD OF lcobj_sheet 'ROWS' = lc_range EXPORTING #1 = lv_rowcopy. CALL METHOD OF lc_range 'COPY'. "COPY第10行插入一個新行 CALL METHOD OF lcobj_sheet 'ROWS' = lc_range EXPORTING #1 = lc_row. CALL METHOD OF lc_range 'INSERT'. CALL METHOD OF lc_range 'CLEARCONTENTS'. "是否需要清空CELL ENDDO. ENDFORM.