Abap , Excelden kayıt okuma işlemi
TYPE-POOLS slis.
DATA : BEGIN OF itab OCCURS 0,
tarih TYPE string,
adsoyad TYPE string,
bolum TYPE string,
sayi TYPE i.
DATA : END OF itab.
* Excel kayıtlarını programda tutacak internal tablonun tanımlanması
DATA gt_excel_kayitlari TYPE TABLE OF alsmex_tabline.
DATA gv_repid TYPE sy–repid.
DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
FIELD-SYMBOLS <fs_excel_kayit> LIKE LINE OF gt_excel_kayitlari.
* selection screen üzerinde son kullanıcının dosya adını
*girecegi alanin tanimlanmasi.
PARAMETERS pa_dosya TYPE c LENGTH 128
DEFAULT ‘C:\Users\TEKIN.PEKCAN\Desktop\D\TEST.XLSX’.
*kullanici imleci ekranda pa_dosya alanına getirip F4 tuşuna
* basınca atılacak olayın programlanması
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_dosya.
* F4_FILENAME fınksiyon modülü çağrılarak dosya seçme
* diyalog ekranının gösterilmesi.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
field_name = ‘PA_DOSYA’
IMPORTING
file_name = pa_dosya.
START-OF-SELECTION.
gv_repid = sy–repid.
* fonksiyon modülünü kullanarak excel dosyasındaki kayıtları
* gt_excel_kayitlari itabına oku.
CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
filename = pa_dosya
i_begin_col = 1 ” başlanacak sütun
i_begin_row = 3 ” başlanacak satır
i_end_col = 4 ” okunacak sütun sayısı
i_end_row = 30 “okunacak satır sayısı
TABLES
intern = gt_excel_kayitlari
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy–subrc <> 0.
MESSAGE ‘Hata var’ TYPE ‘S’.
ENDIF.
* Excel kayıtları listesinin boş olmadığını kontrol et.
CHECK gt_excel_kayitlari IS NOT INITIAL.
CLEAR itab.
REFRESH itab.
* excel kayıtları üzerinde loop ederek itab’ı doldur.
LOOP AT gt_excel_kayitlari ASSIGNING <fs_excel_kayit>.
CASE <fs_excel_kayit>–col.
WHEN ‘0001’. itab–tarih = <fs_excel_kayit>–value.
WHEN ‘0002’. itab–adsoyad = <fs_excel_kayit>–value.
WHEN ‘0003’. itab–bolum = <fs_excel_kayit>–value.
WHEN ‘0004’. itab–sayi = <fs_excel_kayit>–value.
WHEN OTHERS.
ENDCASE.
AT END OF row.
APPEND itab.
CLEAR itab.
ENDAT.
ENDLOOP.
* ” csv kayıtları üzerine loop edek itab’ı doldur.
* LOOP AT gt_excel_kayitlari ASSIGNING <fs_excel_kayit>.
* SPLIT <fs_excel_kayit>-value AT ‘;’
* INTO itab-tarih itab-adsoyad itab-bolum.
* AT END OF row.
* APPEND itab.
* CLEAR itab.
* ENDAT.
* ENDLOOP.
PERFORM display_data.
*&———————————————————————*
*& Form display_data
*&———————————————————————*
* text
*———————————————————————-*
FORM display_data.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name = gv_repid
i_internal_tabname = ‘ITAB’
i_inclname = gv_repid
i_bypassing_buffer = ‘X’
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy–subrc <> 0.
* Implement suitable error handling here
MESSAGE ‘alv merge hata’ TYPE ‘S’.
ENDIF.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_GRID_TITLE = ‘Excelden Dosya Oku’
IT_FIELDCAT = gt_fieldcat
TABLES
t_outtab = itab
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy–subrc <> 0.
* Implement suitable error handling here
MESSAGE ‘alv grid isplay hata’ TYPE ‘S’.
ENDIF.
ENDFORM. “display_data