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 syrepid.
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 syrepid.

* 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 sysubrc <> 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’itabtarih <fs_excel_kayit>value.
WHEN ‘0002’itabadsoyad <fs_excel_kayit>value.
WHEN ‘0003’itabbolum <fs_excel_kayit>value.
WHEN ‘0004’itabsayi <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 sysubrc <> 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 sysubrc <> 0.
* Implement suitable error handling here
MESSAGE ‘alv grid isplay hata’ TYPE ‘S’.
ENDIF.

ENDFORM.                    “display_data

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.