DATA :  test TYPE string.
DATA :  lw_filename      TYPE string,
            lw_path            TYPE string,
            lw_fullpath        TYPE string,
            lw_save_result TYPE i.

DATA : BEGIN OF gt_list OCCURS 0 ,
                mmetin LIKE mara-matkl,
                matnr LIKE mara-matnr,
                ersda LIKE mara-ersda,
           END OF gt_list.

INITIALIZATION.
  SELECT matkl matnr ersda INTO CORRESPONDING FIELDS OF TABLE gt_list
               FROM mara .

  CALL METHOD cl_gui_cfw=>update_view.

*Kaydetme diyalog penceresini göster
  cl_gui_frontend_services=>file_save_dialog(
     EXPORTING
         window_title             = 'SAP den Txt dosyası kaydetme.'
         default_extension    = 'TXT'
         default_file_name    = 'Export'
         initial_directory        = 'C:\Users\destop'
     CHANGING
         filename                   = lw_filename
         path                         = lw_path
         fullpath                    = lw_fullpath
         user_action             = lw_save_result
         ).

  IF lw_save_result = 0. "başarılıysa
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename                            =  lw_filename  "otomatic olsun
        filetype                              = 'ASC'
        write_field_separator        = 'X'    "araya boşluk vermek ıcın
        write_lf                              = 'X'
        TABLES
          data_tab                         = gt_list.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.

**************/    PROGRAM BİTİŞ     /*****************************

Program Açıklaması :

Değişkenler
   lw_filename    TYPE string;  " Diyalog penceresinde default göstereceğimiz dosya ismi
   lw_path          TYPE string,  " Diyalog penceresinin default göstereceği bölüm (Örn : C:\Users\destop)
   lw_fullpath     TYPE string,  " Dosya ismi ile birlikte full ismin atanacağı değişken (Örnek : C:\Users\destop\export.txt)
 
İnternal Tablo Tanımlama
DATA : BEGIN OF gt_list OCCURS 0 ,
                mmetin LIKE mara-matkl, "bosluk olan"
                matnr LIKE mara-matnr,
                ersda LIKE mara-ersda,
           END OF gt_list.

İnternal tabloya veri aktarımı
INITIALIZATION.  "Bu kısımda aktarmamızın nedeni bir seçim ekranının olmaması ve diyalog penc. direkt karşımıza çıkması
  SELECT matkl matnr ersda INTO CORRESPONDING FIELDS OF TABLE gt_list
               FROM mara . "Benzer alanları gt_list tablosuna aktardık

*Kaydetme diyalog penceresini göster
  cl_gui_frontend_services=>file_save_dialog(
     EXPORTING
         window_title            = 'SAP den Txt dosyası kaydetme.'     " Diyalog penceresinin başlığı.
         default_extension    = 'TXT'                                                 " Uzantı tipi.
         default_file_name    = 'Export'                                            " Varsayılan dosya adı verebiliriz.
         initial_directory        = 'C:\Users\destop'                             " Varsayılan konum masaüstü
     CHANGING
         filename                  = lw_filename                                      " Dosya adı
         path                         = lw_path                                           " Kısa uzantı
         fullpath                    = lw_fullpath                                       " Full uzantı
         user_action             = lw_save_result                                 " Kaydetme sonucunda dönen değer
         ).

Eğer lw_save_result a dönen değer 0 ise yani başarılı ise;

IF lw_save_result = 0. "başarılıysa
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename                            =  lw_filename  " Otomatic olsun
        filetype                              = 'ASC'              " Dosya Tipi ASC txt uzantılı
        write_field_separator        = 'X'                  " Araya boşluk vermek ıcın
        write_lf                              = 'X'
        TABLES
          data_tab                         = gt_list.           " Ve text dosyası içine gidecek verilerin olduğu internal tablo

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.


Serkan AKKAVAK
Bilgisayar Mühendisi
serkurumsal@yandex.com