ABAP ALV ile Rapor Ekranı Oluşturma

Övünç DİNÇ

Çözüm Ekibi
Kayıtlı Üye
Katılım
8 Eki 2016
Mesajlar
939
Çözümler
4
Tepki puanı
276
Puanları
63
Yaş
42
Konum
İzmir
Web Sitesi
sapforo.com
Kullandığınız SAP Modülleri
  1. SAP MM
  2. SAP PP
  3. SAP FI
  4. SAP QM
Katılım Bölgesi
  1. İzmir
Bu örneğimizde çeşitli filtreler ile tablodaki kayıtları görüntüleyebileceğimiz bir rapor ekranı programlayacağız.

ALV Nedir ?
ALV (abap list viewer) adındanda anlaşılacağı gibi bir listenin (internal table) ekranda ızgara şeklinde görüntülenmesini sağlayan sap nin standart yapısıdır. Birçok alv fonksiyonu olmakla beraber en çok kullanılan fonksiyon reuse_alv_grid_display fonksiyonudur.

Bu örneğimizde en basit hali ile bir veritabanı tablosunu okuyup alv ile görüntüleyeceğiz. İleriki örneklerde alv nin özelliklerine daha detaylı bir şekilde değineceğim.

Yazacağımız program aşağıdaki aşamalardan oluşacaktır.

  1. Filtreleme parametreleri için selection screen hazırlanması.
  2. Tablonun okunması.
  3. Değerlerin alv ile ekrana yazılması.


HTML:
REPORT  ZFI_EG322.
 
* Kullanacağımız tablo
TABLES: ZED_FAGL_TRVOR.
 
* Alv için gerekli olan slis tip havuzu
TYPE-POOLS: slis.
 
* Kullanacağımız tablo tipinde itab tanımlıyoruz
DATA gt_fagl_trvor TYPE TABLE OF ZED_FAGL_TRVOR.
 
* Alv için kullanacağımız layout ve fieldcatalog tanımlarını yapıyoruz
DATA: gs_layout TYPE slis_layout_alv,
      gt_fcat TYPE slis_t_fieldcat_alv,
      gs_fcat TYPE slis_fieldcat_alv.
 
* Seçim ekranı parametrelerimizi tanımlıyoruz.
SELECTION-SCREEN BEGIN OF BLOCK p WITH FRAME.
 
SELECT-OPTIONS: pa_gjahr FOR ZED_FAGL_TRVOR-GJAHR.
SELECT-OPTIONS: pa_monat FOR ZED_FAGL_TRVOR-MONAT.
SELECT-OPTIONS: pa_bukrs FOR ZED_FAGL_TRVOR-BUKRS.
 
SELECTION-SCREEN END OF BLOCK p.
 
* Çalıştır dediğimizde sırası ile read_data(Seçim ekranı parametrelerine göre
* tablomuzu okuyoruz), build_fcat(Alv için field catalog düzenlenmesi),
* build_layout(Alv için layout düzenlenmesi) ve display_data (Alv ile verileri
* gösteriyoruz) subrouitinlerini çağırıyoruz.
START-OF-SELECTION.
 
  PERFORM read_data.
  PERFORM build_fcat.
  PERFORM build_layout.
  PERFORM display_data.
 
*&---------------------------------------------------------------------*
*&      Form  read_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM read_data.
 
  SELECT * FROM ZED_FAGL_TRVOR INTO TABLE GT_FAGL_TRVOR
                               WHERE GJAHR IN pa_gjahr
                               AND MONAT IN pa_monat
                               AND BUKRS IN pa_bukrs.
 
ENDFORM.                    "read_data
 
*&---------------------------------------------------------------------*
*&      Form  build_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_fcat.
 
  PERFORM appalv USING 'MADDE_NO' 'ZED_FAGL_TRVOR' 'Yevmiye madde numarası'.
  PERFORM appalv USING 'TARIH' 'ZED_FAGL_TRVOR' 'Oluşturma tarihi'.
 
ENDFORM.                    "build_fcat
 
*&---------------------------------------------------------------------*
*&      Form  appalv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FN       text
*      -->P_TN       text
*      -->P_TXT      text
*----------------------------------------------------------------------*
FORM appalv USING
            p_fn
            p_tn
            p_txt.
 
  CLEAR gs_fcat.
  gs_fcat-fieldname = p_fn . "ITAB da tanımladığımız sütun adı
  gs_fcat-tabname = p_tn . "ITAB adı
  gs_fcat-seltext_m = p_txt . "ALV de görünecek sütun başlığı
 
  APPEND gs_fcat TO gt_fcat.
 
ENDFORM.                    "appalv
 
*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_layout.
 
  gs_layout-zebra = 'X'.
  gs_layout-colwidth_optimize = 'X'.
 
ENDFORM.                    "build_layout
 
*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data.
 
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_STRUCTURE_NAME = 'ZED_FAGL_TRVOR'
      IS_LAYOUT   = gs_layout
      it_fieldcat = gt_fcat
    TABLES
      T_OUTTAB    = gt_fagl_trvor.
 
ENDFORM.                    "display_data

Programı çalıştırdığımız zaman ekran görüntüleri aşağıdaki gibi olacaktır.

alv1.png


Filtreleme yapmak istediğiiz alanları doldurup çalıştır diyoruz. Boş bırakır isek tablodaki tüm satırları görüntüleriz.

alv2.png


En basit hali ile bir alv raporu hazırladık. Umarım faydalı olmuştur.
 

ugurvbap

Kayıtlı Üye
Katılım
13 Mar 2019
Mesajlar
2
Tepki puanı
0
Puanları
1
Yaş
29
Kullandığınız SAP Modülleri
  1. SAP ABAP
Katılım Bölgesi
  1. Bursa
Teşekkürler. Konu başlığı açmıştım fakat cevap alamayınca detaylı arama yaptım formunuzda inceleyince buldum.
İyi Çalışmalar.
 
Üst