Abap , Excelden kayıt okuma işlemi

Merhabalar,

Aşağıdaki abap kod bloğu ile programınıza excel data aktarımı yapabilirsiniz.

Kolay gelsin.

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 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             " başlanacak sütun
i_begin_row             " 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

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.