ALV Raporları SAP Öğretici – ABAP Liste Görüntüleyici
⚡ Akıllı Özet
ALV Raporları SAPABAP Liste Görüntüleyici tarafından üretilen listeler, özel kodlama gerektirmeden sütun hizalama, sıralama, filtreleme, toplam ve ara toplamlar sunar. Bu sayfada basit, blok ve hiyerarşik liste türleri, REUSE fonksiyon modülleri ve görüntüleme varyantları açıklanmaktadır.

ALV nedir? SAP ABAP mı?
Herhangi bir raporda istenen ortak özellikler arasında "sütun hizalama", sıralama, filtreleme, ara toplamlar, toplamlar vb. yer alır. Bunları sıfırdan uygulamak için çok fazla kodlama çabası gerekir. Bunu önlemek için ABAP Liste Görüntüleyici (ALV) adı verilen bir kavram kullanabiliriz.
Bu raporların her biri şunları sağlar: fonksiyon modülleri Bu, fazla çaba harcamadan istenen çıktının üretilmesine yardımcı olur. Onlara ayrıntılı olarak bakalım –
Klasik ALV, üç farklı liste türü sunar ve her birinin kendine özgü REUSE fonksiyon modülleri vardır:
- Basit rapor: Liste veya tablo şeklinde gösterilen tek bir dahili tablo.
- Blok raporu: Birbiri altında ayrı bloklar halinde gösterilen çeşitli dahili tablolar.
- Hiyerarşik rapor: Başlık tablosu ve kalem tablosu, ortak bir anahtar ile birbirine bağlanmıştır.
Basit Rapor
Bunlardaki önemli fonksiyon modülleri rapor vardır -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Bu fonksiyon modülü, verileri ALV'de görüntülemek için gerekli olan bir saha kataloğunu doldurmak için kullanılır.
Çıkış verileri tek bir sözlük tablosundan geliyorsa ve tüm sütunlar seçilmişse, o zaman yalnızca alan kataloğunu oluşturmamız gerekmez. REUSE_ALV_LIST_DISPLAY'de tablo adını parametre olarak (I_structure_name) belirtmeniz yeterlidir. Ancak diğer durumlarda onu yaratmamız gerekir.
Not: Fieldcatalog, dahili tabloya gerekli tüm bilgileri girerek manuel olarak da doldurulabilir.
Önemli parametreler şunlardır:
1. İhracat:
- I_program_name : rapor kimliği
- I_internal_tabname : dahili çıktı tablosu
- I_inclname : tüm dinamik formların işlendiği raporun adını içerir.
2. Değiştirme
- ct_fieldcat : bir iç masa SLIS tür havuzunda bildirilen SLIS_T_FIELDCAT_ALV türüyle.
REUSE_ALV_LIST_DISPLAY
Bu, verileri yazdıran işlev modülüdür.
Önemli parametreler şunlardır:
1. İhracat:
- I_callback_program : rapor kimliği
- I_atlama_tamponu : 'X'
- I_tampon_aktif : ' '
- I_callback_pf_status_set : kullanıcının kendi pf durumunu ayarlayabildiği veya mevcut pf durumunun işlevselliğini değiştirebildiği rutin.
- I_callback_user_command : işlev kodlarının işlendiği rutin.
- I_structure name : sözlük tablosunun adı
- Is_Layout: raporun düzenini ayarlayan yapı
- It_fieldcat : yazdırılacak tüm alanların ve bunların niteliklerinin listesini içeren dahili tablo (bu tablo, işlev tarafından otomatik olarak doldurulabilir)
- It_events : ALV'nin tüm olası olaylarının ve bunlara karşılık gelen form adlarının listesini içeren dahili tablo.
2. Tablolar:
- A. t_outtab : çıktısı alınacak verileri içeren dahili tablo
REUSE_ALV_EVENTS_GET
Bir liste türü için olası olayların tablosunu döndürür
1. İçe Aktarma:
Et_Events:Olay tablosu, belirtilen liste türü ('NAME' sütunu) için tüm olası CALLBACK olaylarıyla birlikte döndürülür. Olayların Geri Arama tarafından işlenebilmesi için 'FORM' alanlarının doldurulması gerekmektedir. Alan başlatıldıysa olay göz ardı edilir. Giriş, olay tablosundan okunabilir, 'FORM' alanı doldurulabilir ve giriş, SLIS tipi havuzundaki sabitler kullanılarak değiştirilebilir.
2. İhracat:
I_list_type: 0 = basit liste REUSE_ALV_LIST_DISPLAY
1 = hiyerarşik-sıralı liste REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = basit engelleme listesi REUSE_ALV_BLOCK_LIST_APPEND
3 = hiyerarşik-sıralı blok listesi REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
ABAP4.6 sürümünden, sonuçları önizleme yerine tablo halinde görüntülemek için yeni bir işlev.
Parametreler: reuse_alv_list_display ile aynı
Not: Grid yüksek veri hacimlerini kaldıramaz. Sıralama, aşağı kaydırma gibi işlevler, görüntülenecek veri hacmi yüksekse çok fazla kaynak/zaman tüketir. Veri miktarı X ise liste mi yoksa grid mi kullanılacağına dair net bir tanım yoktur; geliştirici deneyimine göre karar vermelidir. Emin değilseniz, liste daha iyi bir seçenektir.
REUSE_ALV_COMMENTARY_WRITE
Bu, listenin başlıklarını ve diğer yorumlarını yazdırmak için Sayfanın Başı olayında kullanılır.
Önemli Parametreler
- It_list_commentary : slis_t_listheader türündeki başlıkları içeren dahili tablo.
Bu dahili tablonun üç alanı vardır:
- Tip: 'H' – başlık, 'S' – seçim, 'A' – eylem
- Anahtar : yalnızca tip 'S' olduğunda.
- Bilgi: yazdırılacak metin
Örnek: Basit Bir ALV Tablo Raporu
Aşağıdaki program, yukarıdaki fonksiyon modüllerini çalışan bir rapora dönüştürür. Uçuş programı tablosu SPFLI'yi okur, alan kataloğunu otomatik olarak oluşturur ve sonucu bir tablo halinde görüntüler.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
Üç parametre işin büyük kısmını üstlenir. I_STRUCTURE_NAME, alan kataloğunun sözlükten türetilmesini sağlar, böylece hiçbir sütun elle tanımlanmaz. IS_LAYOUT, çizgili satırları ve optimize edilmiş sütun genişliklerini etkinleştirir. I_SAVE = 'A', hem kullanıcıya özel hem de standart görüntüleme varyantlarının tamamlanmış listeden kaydedilmesine olanak tanır.
Raporu Engelle
Basit bir rapor gibi görünse de bu rapor sadece sıralama ve filtreleme özelliğine sahiptir. Çıktıda birden fazla rapor görüntülemeniz gerekiyorsa bu rapor kullanılır. Teknik olarak konuşursak, ayrı bloklar halinde görüntülenecek verileri içeren birden fazla dahili tablonuz varsa, ALV'nin blok raporunu tercih ederiz.
Bu raporu oluşturmak için kullanılan önemli işlevler şunlardır:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Bu işlev modülü, varsayılan gui durumunu vb. ayarlamak için kullanılır. Parametreler, reuse_alv_list_display veya reuse_alv_grid_display'de kullanılanlara benzer.
REUSE_ALV_BLOCK_LIST_APPEND
Bu fonksiyon modülü verileri bloğa ekler.
Önemli Parametreler
1.İhracat:
- is_layout : blok için düzen ayarları
- it_fieldcat : alan kataloğu
- I_tabname : tüm olası olayları içeren dahili tablo adı
2.Tablolar:
- t_outtab : çıkış verilerini içeren dahili tablo.
REUSE_ALV_BLOCK_LIST_DISPLAY
Bu işlev modülü, yukarıdaki işlevin eklediği verileri içeren listeyi görüntüler.
Parametreler : Tüm parametreler isteğe bağlıdır.
Hiyerarşik Raporlar
Hiyerarşik görüntüleme, ilişkili verileri görüntülemek için kullanılır. Satış siparişi ve ürün ayrıntıları gibi. Burada satış siparişi ayrıntıları başlık verisi olabilirken satış siparişindeki ürünler ürün verisi olabilir
Bunun için kullanılan fonksiyon modülü:
REUSE_ALV_HIERSEQ_LIST_DISPLAY
İhracat:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- It_events
- I_tabname_header : Programdaki en yüksek hiyerarşi seviyesinin çıktı verilerini içeren dahili tablonun adı.
- I_tabname_item : Programdaki en düşük hiyerarşi seviyesinin çıkış verilerini içeren dahili tablonun adı.
- Is_keyinfo : Bu yapı, iki tabloyu (paylaşılan anahtar) birbirine bağlayan başlık ve öğe tablosu alan adlarını içerir.
tablolar
- t_outtab_header : Çıktısı alınacak verileri içeren başlık tablosu
- t_outtab_item : Programdaki en düşük hiyerarşi seviyesinin çıkış verilerini içeren dahili tablonun adı.
Dahili tabloların, yapıların ve sabitlerin tüm tanımları, adı verilen bir tür havuzunda bildirilir. SLIS. Bu dahili tablo REUSE_ALV_FIELDCATALOG_MERGE' kullanılarak otomatik olarak doldurulabilir.
Ekran Varyantları
- Görüntüleme değişkenleri, bir alv çıktısının sıralama kriterleri, filtreleme kriterleri, toplam ve alt toplam vb. gibi varsayılan özelliklerini ayarlamak için kullanılır.
- Ekran çeşitleri kullanıcıya özel ve standart olabilir (standart çeşitler herhangi bir kullanıcı tarafından kullanılabilir)
- Kaydedilebilecek görüntü varyantlarının türü, reuse_alv_list_display / reuse_alv_grid_display fonksiyon modüllerinde geçirilen i_save parametresi tarafından kontrol edilir.
- Hangi ekran varyantının kullanılacağını seçmek için seçim ekranında bir seçenek sunabilirsiniz
Ekran değişkenlerinin seçilmesi/doğrulanmasıyla ilgili ortak işlev modülleri şunlardır:
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
💡 İpucu: Yalnızca kullanıcıya özel varyantlara izin vermek için I_SAVE = 'U', yalnızca standart varyantlara izin vermek için 'X' ve her ikisine de izin vermek için 'A' değerini geçirin. Boş bir değer, kaydetmeyi tamamen engeller.
Hepsi bu kadar ABAP – ALV programlama!
