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.
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
0 Comments