Creating Excel File Template

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.


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s