Abap ile geliştirilen programlar içerisinde excel dosyası oluşturmak ve excel içerisinde örnek bir yapı kurarak satır ve sütun bilgilerini doldurmak için OLE2_OBJECT yapısından faydalanabiliriz. Bu gibi bir durum için aşağıdaki örnekte, selection-screen üzerinde yer alan bir butona basarak belirlediğiniz bir template’e sahip excel dosyasını anlık oluşturup kullanıcının bilgisayarına indirebilmesini sağlıyor olacağız.
İlk olarak program definitions kısmında SSCRFIELDS tablosunun tanımlanması gerekmektedir. Bunun amacı aslında selection-screen üzerinde herhangi bir buton vb. ekleme yapılması için bu tablo yapısı kullanılacağındandır.
Daha sonra oluşturacağımız excel içerisinde yer alacak satır ve sütunlar için gerekli structure yapısını ve tablo tipini belirliyoruz.
Selection-Screen içerisinde function key 1 tanımlası sonrasında INITILAZATION aşamasının ardından butona icon ve isim belirliyoruz.
Ekran üzerinde butona tıklandığında gelen parametre olarak FC01 tanımlamasının ardından excel dökümanının içeriğini oluşturuyoruz.
Tüm bu süreçlere ilişkin ilgili kod aşağıdaki gibidir.
REPORT ZLRNG_P_DEMO1. TABLES SSCRFIELDS. " Sample Excel Structure and Table Type Definition TYPES : BEGIN OF TY_T_EXCEL_SAMPLE, MATNR TYPE MATNR, WERKS TYPE WERKS_D, COST TYPE DMBTR, END OF TY_T_EXCEL_SAMPLE, TY_EXCEL_SAMPLE TYPE TY_T_EXCEL_SAMPLE. " Internal table and structure for sample excel file... DATA : LT_EXCEL_FORMAT TYPE TABLE OF TY_EXCEL_SAMPLE WITH HEADER LINE, LS_EXCEL_FORMAT TYPE TY_EXCEL_SAMPLE. " Selection-Screen Parameters PARAMETERS : S_MATNR TYPE MATNR, S_WERKS TYPE WERKS, S_COST TYPE DMBTR. SELECTION-SCREEN : FUNCTION KEY 1. INITIALIZATION. " Selection Screen Sample Excel Button with icon SSCRFIELDS-FUNCTXT_01 = '@J2@Excel Sample File'. AT SELECTION-SCREEN. CASE SSCRFIELDS-UCOMM. WHEN'FC01'. PERFORM CREATE_EXCEL_FORMAT. ENDCASE. FORM CREATE_EXCEL_FORMAT. DATA: EXCEL TYPE OLE2_OBJECT, WORKBOOK TYPE OLE2_OBJECT, SHEET TYPE OLE2_OBJECT, CELL TYPE OLE2_OBJECT, ROW TYPE OLE2_OBJECT. CREATE OBJECT EXCEL 'EXCEL.APPLICATION'. * Create an Excel workbook Object. CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK . * Put Excel in background SET PROPERTY OF EXCEL 'VISIBLE' = 0 . * Put Excel in front. SET PROPERTY OF EXCEL 'VISIBLE' = 1 . CALL METHOD OF WORKBOOK 'add'. CALL METHOD OF EXCEL 'Worksheets' = SHEET EXPORTING #1 = 1. CALL METHOD OF SHEET 'Activate'. " Excel Raw Header Line CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'A1'. SET PROPERTY OF CELL 'VALUE' = 'Material Number'. CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'B1'. SET PROPERTY OF CELL 'VALUE' = 'Production Plant'. CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'C1'. SET PROPERTY OF CELL 'VALUE' = 'Material Cost'. " Excel Sample Row 1 LS_EXCEL_FORMAT-MATNR = '0000000001'. LS_EXCEL_FORMAT-WERKS = '1000'. LS_EXCEL_FORMAT-COST = '197549'. APPEND LS_EXCEL_FORMAT TO LT_EXCEL_FORMAT. " Append Excel Sample Data to Internal Table. LOOP AT LT_EXCEL_FORMAT. CALL METHOD OF EXCEL 'ROWS' = ROW EXPORTING #1 = '2' . CALL METHOD OF ROW 'INSERT' NO FLUSH. CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'A2' . SET PROPERTY OF CELL 'VALUE' = LT_EXCEL_FORMAT-MATNR NO FLUSH. CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'B2' . SET PROPERTY OF CELL 'VALUE' = LT_EXCEL_FORMAT-WERKS NO FLUSH. CALL METHOD OF EXCEL 'RANGE' = CELL EXPORTING #1 = 'C2' . SET PROPERTY OF CELL 'VALUE' = LT_EXCEL_FORMAT-COST NO FLUSH. ENDLOOP. CALL METHOD OF EXCEL 'SAVE'. CALL METHOD OF EXCEL 'QUIT'. * Free all objects FREE OBJECT CELL. FREE OBJECT WORKBOOK. FREE OBJECT EXCEL. EXCEL-HANDLE = -1. FREE OBJECT ROW. ENDFORM.

