ABAP Field Catalog Yaratma

ALV'mizi gösterirken, üzerinde bazı deÄŸiÅŸiklikler sütunlara özel iÅŸlemler yapmamız gerekebilir. Bu gibi durumlarda REUSE_ALV_FIELDCATALOG_MERGE fonksiyonunu kullanıp daha sonra üretilen fieldcatalog'da looplar yapıp deÄŸiÅŸiklik yapmak yerine , sıfırdan manuel olarak fieldcatalog yaratmak en temiz yöntemdir. Hem yukarıda ki fonksiyonda karşılaÅŸtığımız sorunlar ortaya çıkmayacaktır (örneÄŸin like yerine type ile tanımladığımız sütun isimleri gibi) hem de her sütuna özel iÅŸlemi çok rahat bir biçimde yapabilme imkaanımız olacaktır.

Verileri okuyup ITAB'ımızı (internal table) doldurduÄŸumuzu varsayıyorum.
ITAB'ımız da şöyle olsun,

data:
begin of gt_itab occurs 0,
sira type i,
ad(10) type c,
soyad(10) type c,
no(10) type c,
end of gt_itab.

*** ALV için değişkenler .
DATA : gt_fcat TYPE slis_t_fieldcat_alv,
gf_fcat LIKE LINE OF gt_fcat.
DATA : layout TYPE slis_layout_alv .
DATA : variant TYPE disvariant .
****************
start-of-selection.
perform read_data. "ITAB ımız burada doldu.
perform generate_fcat. "fieldcatalog iÅŸlemleri
perform display_alv. "ALV yi görüntüleme
end-of-selection.
****************
ITAB'ımızı veri ile doldurduktan sonra fieldcatalog yaratma kısmına geçebiliriz.

FORM GENERATE_FCAT.

PERFORM appalv USING 'SIRA' 'GT_ITAB' 'Sıra Numarası' 'X' 'X' ' '.
PERFORM appalv USING 'AD' 'GT_ITAB' 'Ä°sim' 'X' 'X' ' '.
PERFORM appalv USING 'SOYAD' 'GT_ITAB' 'Soyisim' ' ' ' ' ' '.
PERFORM appalv USING 'NO' 'GT_ITAB' 'Numara' ' ' ' ' 'X'.

ENDFORM.

FORM appalv USING p_fn
p_tn
p_txt
p_fix
p_key
p_no_zero .
CLEAR gf_fcat.
gf_fcat-fieldname = p_fn . "ITAB da tanımladığımız sütun adı
gf_fcat-tabname = p_tn . "ITAB adı
gf_fcat-seltext_m = p_txt . "ALV de görünecek sütun baÅŸlığı
gf_fcat-fix_column = p_fix . "Ä°ÅŸaretlendiÄŸi takdirde sütunu sabitleyecektir
gf_fcat-key = p_key . "Anahtar bir alan mı ?
gf_fcat-no_zero = p_no_zero . "Soldaki sıfırlar silinsin mi ?

APPEND gf_fcat TO gt_fcat.

ENDFORM.


Bu işlemler bittikten sonra, tek yapacağımız ALV Display fonksiyonunu çalıştırmak.
FORM DISPLAY_ALV.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_fieldcat = gt_fcat "oluÅŸturduÄŸumuz fieldcatalog
is_variant = variant "variantlar olsun mu ?
i_save = 'A' "variantlar kaydedilebilsin mi ?
i_callback_program = 'Programızın adı büyük harflerle' "program adı buraya

TABLES
t_outtab = gt_itab. "ITAB adını buraya yazıyoruz

ENDFORM.



****************************************************************
Manuel olarak yarattığımız FieldCatalog'da daha bir sürü opsiyon mevcuttur. Örneğin, istediğiniz sütunu checkbox yapabilir, istediğiniz sütunu gizleyebilir, düzenlenebilir (editable) yapabilir, renklendirebilir ve daha bir çok opsiyonla değiştirebilirsiniz. Esnek olduğu için müdahele etmek çok basittir.

Fakat REUSE_ALV_FIELDCATALOG_MERGE metodunu kullanarak oluÅŸturduÄŸunuz fieldcataloglarda deÄŸiÅŸiklik yapmak için epey takla atmanız gerekecektir. Yine de ihtiyacınız ve zamanınız doÄŸrultusunda istediÄŸinizi seçebilirsiniz.
*******************************************************
Konu ile ilgili detaylı içerik ve örnek ABAP Kodları,daha sonra eklenecektir.

SAP ve ABAP ile ilgili tüm sorularınızı
serkurumsal@yandex.com
E-Mail adresi ile bize ulaÅŸarak sorabilirsiniz.

Serkan AKKAVAK
Bilgisayar Mühendisi