ABAP ‘da ALV(ABAP LİST VIEWER) TÜRLERİ

Merhaba arkadaşlar,

Bugün ABAP da ALV(ABAP LİST VIEWER) ‘yi inceleyeceğiz.

ALV nedir?

ABAP LİST VİEWER ,SAP içinde mevcut olan sabit tabloların veya programcı tarafından olusturulan internal tabloların ekranda görüntülenebilmesini ve istenildiği taktirde bu görüntülenen alanlara eventler verebilmemizi sağlayan yapıdır.Yani verileri bir tablo gibi göstermek için üretilmiş bir kontroldür.Tablolar ekranın tamamını kapsayabileceği gibi ;ekranın sadece bir kısmında da gösterilebilir.Exel gibi hücresel bir tasarıma sahiptir.

gh

 

Pek çok ALV türü mevcut ancak biz en çok kullanılan iki ALV türü olan “‘REUSE_ALV_GRID_DISPLAY” ve “SET_TABLE_FOR_FIRST_DISPLAY ” yi inceleyeceğiz.

En kullanışlı ALV türü ‘REUSE_ALV_GRID_DISPLAY’(Şekil 1) dir. Ekranın tamamında gösterilen tabloların çağırılması için kullanılan fonksiyon modülür.Verileri internal table’ların yapısına uygun olarak ekranda gösterir.REUSE_ALV_GRID_DISPLAY fonksiyonu ile oluşturulan raporlarda kapsamlı ve düzenli bir rapor başlığı yapılabilir. fonksiyon ile başlığa tarih, kayıt sayısı veya herhangi bir değişken yazdırılabilir.Ayrıca bu fonksiyon ile hazırlanan ALV lere sütun rengi, satır rengi ve hücre rengi vermek de daha basittir.

REUSE_ALV_GRID_DISPLAY fonksiyonunun en önemli avantajlarından biride manüel olarak GERİ-ÇIKIŞ-İPTAL tuşlarının ve ekran yaratma zorunluluğunun olmamasıdır. Bu fonksiyon siz raporunuzu yazdığınızda otomatik olarak ekran yaratır ve tuşlara işlevlerini atar.Bu yoğun bir programcı için zamandan tasarruf demektir fakat raporumuzun iki farklı containerden oluşması gerekirse (Şekil 2) REUSE_ALV_GRID_DISPLAY fonksiyonu, ekranı kendisi yarattığı için yetersiz kalacaktır. Bu gibi durumlar için SET_TABLE_FOR_FIRST_DISPLAY fonksiyonu kullanılması tercih edilir.

REUSE_ALV_GRID_DISPLAY fonksiyonu aşağıdaki kod grubu ile kullanılır:

form display_alv_report.
gd_repid 
sy-repid.
call function ‘REUSE_ALV_GRID_DISPLAY’
exporting
i_callback_program       
gd_repid
i_callback_top_of_page   
‘TOP-OF-PAGE’  “see FORM
i_callback_user_command 
‘USER_COMMAND’
i_grid_title            
‘BAŞLIK’
I_BACKGROUND_ID                    
‘ALV_BACKGROUND’
i_callback_pf_status_set 
‘NETPR_PF_STATUS_SET’
is_layout               
gd_layout
it_fieldcat              
fieldcatalog[]
I_DEFAULT                         
‘X’
I_SAVE                            
‘A’
IS_VARIANT                        
VAR
*            it_special_groups        = gd_tabgroup
*           it_events               = gt_events
*           is_print                = gd_prntparams
“i_save                  = ’X’
*            is_variant              = z_template
tables
t_outtab                
ITAB
exceptions
program_error           
1
others                  2.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform.                    “ DISPLAY_ALV_REPORT

 

SET_TABLE_FOR_FIRST_DISPLAY metodu ile oluşturulan ALV(sekil2) ler daha cok ayrıntıya inileceği zaman kullanıır.

Bu ALV metodu bize raporun üstündeki tuşların yapacağı görevleri, görüntülenecek ekranın boyutlarını ve kaç ekranda görüntüleneceğini , rapor ekranının herhangi bir yerinde sabit bir şekilde yazı resim vb bir şey koyabilme olanağı verir ancak kötü yanı bu özelliklerin default olarak belirlenmiş değerleri yoktur yani her yaptığımız raporda tek tek bu ayarları yapmamız gerekir.

SET_TABLE_FOR_FIRST_DISPLAY metodu TOP-OF-PAGE (Sayfa Başlığı) fonksiyonunu desteklemediği için kapsamlı bir sayfa başlığı oluşturmak zordur. Bu ALV metodunda ALV layout’unun grid_title özelliği kullanılabilir ancak yetersizdir.

CONCATENATE  ‘TARİH : ’SY-DATUM+6(2‘-’ SY-DATUM+4(2‘-’ SY-DATUM(4‘ - Rapor Başlığı ’ ’(‘ LS_DATUM ‘)’ INTO gs_layout-grid_title . “Grid başlığı için sistem saatini değişkene alma


CALL METHOD GR_ALV1->SET_TABLE_FOR_FIRST_DISPLAY “ALV methodu
EXPORTING
I_SAVE                        
‘X’
*    I_DEFAULT                     = ’X’
*    I_BYPASSING_BUFFER            = ’X’
IS_VARIANT                    
gs_variant “Variant tanımlama
IS_LAYOUT                    
gs_layout
CHANGING
IT_OUTTAB                     
gt_itab[] “İnternal tablo
IT_FIELDCATALOG               
gt_fieldcat “fieldcatalog
*    IT_SORT                       =
*    IT_FILTER                     =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION 
1
PROGRAM_ERROR                 
2
TOO_MANY_LINES                
3
others                        4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO “hata mesajı
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDIF.

ENDMODULE.                 “ 

 

 

asd

Şekil

SET_TABLE_FOR_FIRST_DISPLAY ile 2 container yaratma;


IF gr_cont1 is initial.
create OBJECT gr_cont1
EXPORTING
container_name 
‘CC_01′. “İlk container ismi
CREATE OBJECT gr_alv1
EXPORTING
i_parent 
gr_cont1 .
CALL METHOD GR_ALV1->SET_TABLE_FOR_FIRST_DISPLAY “ALV methodu
EXPORTING
I_SAVE                        
‘X’
IS_VARIANT                    
gs_variant2
CHANGING
IT_OUTTAB                     
GT_ITAB1[]
IT_FIELDCATALOG               
=  gt_fieldcat[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION 
1
PROGRAM_ERROR                 
2
TOO_MANY_LINES                
3
others                        4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO “hata mesajı
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

create OBJECT gr_cont2
EXPORTING
container_name 
‘CC_02′. “İkinci container ismi
CREATE OBJECT gr_alv2
EXPORTING
i_parent 
gr_cont2.
CALL METHOD GR_ALV2->SET_TABLE_FOR_FIRST_DISPLAY “ALV methodu
EXPORTING
I_SAVE                        
‘X’
IS_VARIANT                    
gs_variant
CHANGING
IT_OUTTAB                     
GT_ITAB2 []
IT_FIELDCATALOG               
gt_fieldcat_detay
EXCEPTIONS
INVALID_PARAMETER_COMBINATION 
1
PROGRAM_ERROR                 
2
TOO_MANY_LINES                
3
others                        4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO “hata mesajı
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE.

Kod grubu ile kullanılır.

 

İyi Çalışmalar…:)

NOT : Makaleye olan katkıları için Efsan Grup Uygulama Geliştirme Sorumlusu Tuğrul Bozkurt’a teşekkür ediyorum.

 

 

 

4 comments

  1. korhan   •  

    Bilgiler için teşekkürler… pretty printer yanında Pattern ile direk REUSE_ALV_GRID_DISPLAY fonksiyonu ve diğerleri cağırılıyor kolaylık için ek bilgi :)

  2. ERHAN   •  

    bilgiler için cok tesekkurler birtane de editlenebilir alv örnegi koyma sansınız varmı olabildiğince anlasılır olması cok onemli yeni baslayınca örnek buluyorm ama onu anlayana kadar canım cıkıyo :)

    • gulistan   •     Yazar

      Çok isterdim ancak şuan ABAP için uygulama alanım bulunmuyor ancak aktif çalışan arkadaşlarıma soracağım.

Bir Cevap Yazın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">