ABAP
sap abap ile ole nesnesi kullanılarak gelişmiş excel dosyası oluşturma (creating an advanced excel file with abap ole object)
abap ile gelişmiş seviyede bir excel dosyası oluşturmak istiyorsak abap ole nesnesini kullanırız. ole nesnesi kullanarak excel dosyasındaki her hücreyi tek tek biçimlendirebiliriz. istersek yazı tipini değiştirebiliriz, istersek hücreyi renklendirebiliriz, istersek hücre genişliğini ayarlayabiliriz hatta bir hücreye formül bile atayabiliriz. mesela aşağıdaki örnekte kod yardımıyla 3 adet malzeme oluşturdum ve bunların fiyatlarının toplamını satırların bitişine formül ile yazdırdım. bazı hücreleri koyu yaparken bazılarının arka plan renklerini değiştirdim. REPORT zexcel\ole. INCLUDE …
abap ile gelişmiş seviyede bir excel dosyası oluşturmak istiyorsak abap ole nesnesini kullanırız. ole nesnesi kullanarak excel dosyasındaki her hücreyi tek tek biçimlendirebiliriz. istersek yazı tipini değiştirebiliriz, istersek hücreyi renklendirebiliriz, istersek hücre genişliğini ayarlayabiliriz hatta bir hücreye formül bile atayabiliriz. mesela aşağıdaki örnekte kod yardımıyla 3 adet malzeme oluşturdum ve bunların fiyatlarının toplamını satırların bitişine formül ile yazdırdım. bazı hücreleri koyu yaparken bazılarının arka plan renklerini değiştirdim.
REPORT zexcel_ole.
INCLUDE ole2incl.
DATA: gv_filename TYPE string,
gv_path TYPE string,
gv_fullpath TYPE string.
DATA: e_activesheet TYPE ole2_object,
e_appl TYPE ole2_object,
e_work TYPE ole2_object,
e_cell TYPE ole2_object,
e_color TYPE ole2_object,
e_bold TYPE ole2_object.
DATA: gv_ln TYPE i,
gv_val TYPE string.
DATA: BEGIN OF gt_data OCCURS 0,
matnr TYPE matnr,
netwr TYPE netwr,
waers TYPE waers,
END OF gt_data.
START-OF-SELECTION.
gt_data-matnr = 'Malzeme1'.
gt_data-netwr = '123.11'.
gt_data-waers = 'TRY'.
APPEND gt_data.
gt_data-matnr = 'Malzeme2'.
gt_data-netwr = '1243.51'.
gt_data-waers = 'TRY'.
APPEND gt_data.
gt_data-matnr = 'Malzeme3'.
gt_data-netwr = '99.18'.
gt_data-waers = 'TRY'.
APPEND gt_data.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = 'Select file'
default_extension = 'xls'
file_filter = '*.xls'
CHANGING
filename = gv_filename
path = gv_path
fullpath = gv_fullpath.
IF sy-subrc EQ 0.
CREATE OBJECT e_appl 'EXCEL.APPLICATION'.
SET PROPERTY OF e_appl 'VISIBLE' = 1.
CALL METHOD OF
e_appl
'WORKBOOKS' = e_work.
CALL METHOD OF
e_work
'Add' = e_work.
GET PROPERTY OF e_appl 'ActiveSheet' = e_activesheet.
SET PROPERTY OF e_activesheet 'Name' = 'Sheet 1'.
PERFORM set_cell USING 1 1 'Malzeme Listesi' 20 1 0.
PERFORM set_cell USING 3 1 'Malzeme No' 50 1 12.
PERFORM set_cell USING 3 2 'Fiyat' 50 1 0.
PERFORM set_cell USING 3 3 'Para Birimi' 50 1 0.
LOOP AT gt_data.
gv_ln = sy-tabix + 3.
gv_val = gt_data-matnr.
PERFORM set_cell USING gv_ln 1 gv_val 0 0 0.
gv_val = gt_data-netwr.
PERFORM set_cell USING gv_ln 2 gv_val 0 0 0.
gv_val = gt_data-waers.
PERFORM set_cell USING gv_ln 3 gv_val 0 0 0.
ENDLOOP.
gv_ln = gv_ln + 1.
PERFORM set_cell USING gv_ln 1 'Toplam' 0 1 0.
gv_val = gv_ln - 1.
CONDENSE gv_val.
CONCATENATE '=SUM(B4:B' gv_val ')' INTO gv_val.
PERFORM set_cell USING gv_ln 2 gv_val 0 0 0.
CALL METHOD OF
e_work
'SAVEAS'
EXPORTING
#1 = gv_fullpath.
CALL METHOD OF
e_work
'close'.
CALL METHOD OF
e_appl
'QUIT'.
FREE OBJECT e_appl.
ENDIF.
*&---------------------------------------------------------------------*
*& Form set_cell
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ROW text
* -->P_COLUMN text
* -->P_VAL text
* -->P_INT text
* -->P_BOLD text
* -->P_WIDTH text
*----------------------------------------------------------------------*
FORM set_cell USING p_row TYPE sy-tabix
p_column TYPE sy-tabix
p_val TYPE string
p_int TYPE i
p_bold TYPE i
p_width TYPE i.
CALL METHOD OF
e_appl
'Cells' = e_cell
EXPORTING
#1 = p_row
#2 = p_column.
SET PROPERTY OF e_cell 'Value' = p_val.
GET PROPERTY OF e_cell 'Interior' = e_color.
SET PROPERTY OF e_color 'ColorIndex' = p_int.
GET PROPERTY OF e_cell 'Font' = e_bold.
SET PROPERTY OF e_bold 'Bold' = p_bold.
IF p_width > 0.
SET PROPERTY OF e_cell 'ColumnWidth' = p_width.
ENDIF.
ENDFORM. " SET_CELL
