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.

  • ???? Temel Amaç: ABAP Liste Görüntleyici, standart liste özelliklerini hazır fonksiyon modülleri aracılığıyla sunar, böylece bunların tekrar programlanmasına gerek kalmaz.
  • 🗂️ Saha Kataloğu: REUSE_ALV_FIELDCATALOG_MERGE, her çıktı sütununu açıklayan kataloğu oluşturur ve bu katalog manuel olarak da doldurulabilir.
  • 🖥️ Liste ve Izgara: REUSE_ALV_LIST_DISPLAY klasik bir liste yazdırırken, REUSE_ALV_GRID_DISPLAY aynı verileri bir tablo kontrolünde gösterir.
  • 🧱 Blok Raporu: INIT, APPEND ve DISPLAY komutları, çeşitli dahili tabloları ayrı bloklardan oluşan tek bir çıktı halinde birleştirir.
  • ???? Hiyerarşik Rapor: REUSE_ALV_HIERSEQ_LIST_DISPLAY, IS_KEYINFO'daki paylaşılan anahtar aracılığıyla bir başlık tablosunu ve bir öğe tablosunu birbirine bağlar.
  • 🧰 Tip Havuzu SLIS: Klasik ALV tarafından kullanılan her yapı, tablo türü ve sabit, SLIS tür havuzunda tanımlanmıştır.
  • 💾 Ekran Seçenekleri: Bir varyant, sıralama, filtreleme ve toplam alma varsayılanlarını saklar ve I_SAVE parametresi bunun kullanıcıya özel mi yoksa standart mı olacağına karar verir.

ALV Raporları SAP ABAP

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:

  1. Tip: 'H' – başlık, 'S' – seçim, 'A' – eylem
  2. Anahtar : yalnızca tip 'S' olduğunda.
  3. 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:

  1. Reuse_alv_variant_default_get
  2. Reuse_alv_variant_f4
  3. 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!

SSS

REUSE modülleri, klasik, fonksiyon tabanlı ALV'ye aittir. CL_GUI_ALV_GRID, bir dynpro üzerindeki özel bir konteynere yerleştirilmiş nesne yönelimli bir kontrol olup, düzenlenebilir hücreler ve yöntemler aracılığıyla olay işleme olanağı sunar.

Eklenmesi gereken sütun için alan kataloğunda DO_SUM'ı ayarlayın ve satırları gruplandıran sütun için SUBTOT özelliği açık olan bir sıralama tablosu geçirin. Ek hesaplama koduna gerek yoktur.

I_CALLBACK_USER_COMMAND'a formun adını iletin. Form, fonksiyon kodunu ve seçilen satırı alır, böylece program kaydı okuyabilir ve detay listesini veya işlemi açabilir.

Evet. ABAP geliştirme araçlarındaki yapay zeka asistanları, gerekli sütunların tanımından yola çıkarak SELECT sorgusunu, alan kataloğunu ve REUSE_ALV_GRID_DISPLAY çağrısını üretir. Oluşturulan SELECT sorgusunun yine de performans kontrolünden geçmesi gerekir.

Hayır. ALV, standart çıktı formatı olmaya devam ediyor. SAP GUI raporları. Yapay zeka asistanları, uzun bir listeyi özetleyerek, aykırı değerleri tespit ederek ve görüntülenen verilerle ilgili soruları sade bir dille yanıtlayarak bunun üzerine değer katıyor.

Bu yazıyı şu şekilde özetleyin: