18 Temmuz 2008 Cuma

ABAP : Dinamik Search Help Olusturma

1000 ekranında , "Select-options" kullanırken zaman zaman direk tablo referansı ile atadığımız "search help"ler yeterli olamayabilir ya da hiç search help olmayabilir. Bu gibi durumlarda yapmamız gereken ; dinamik bir search help oluşturmaktır. Dinamik search help oluşturmak için yapmamız gereken hangi alan için kullanılacağını seçmemiz ve ITAB'ımızı oluşturduktan sonra fonksiyonumuzu çağırmaktır.

*****

Referans ile yaptığımız "select-opitons"lar da arkasında hangi search help veya checktable varsa onun içeriğini getirir.

Örneğin,

Select-Opitons:

So_BUKRS for BSEG-BUKRS.


Tanımlamasını yaptığımızda, SO_BUKRS'nin içi BSEG-BUKRS alanının C_T001 isimli search help'i ile otomatik olarak dolmaktadır . Yukarıda ki resimde gördüğünüz gibi , hangi alan hangi search help'e veya check table'a bağlanmış görebiliriz. Her zaman search help olmayabilir =)


Örneğin ZSINIF bir tablomuz olsun ve onun OBJID alanı için search help yazalım.

Sütun isimleri de ;

NO,

AD ,

SOYAD,

..

..

..

OBJID olsun.

Gelelim dinamik search help oluşturmaya.


Report Z_DINAMIK_SEARCHELP.

*Değişkenleri tanımlıyoruz.

Data:

So_OBJ for ZINIF-OBJID.

*Internal Table tanımlaması

*Kullanıcı F4 e bastığında karşısında ne görecek buradan belirliyoruz

*Tablonu tüm sütunlarını listelemeye gerek yok o yüzden hangilerini göstereceğimizi

*seçiyoruz

Begin of gt_data occurs 0,

OBJID like ZINIF-OBJID,

NO like ZINIF-NO,

AD like ZINIF-AD,

SOYAD like ZINIF-SOYAD,

End of gt_data.

*Select-options'da hem LOW hemde HIGH için aynı işlemleri yaparız böylece Select-Options için oluşan iki kutucuğun da search help' i olmasını sağlarız.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_OBJ-LOW.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'OBJID' "seçim sonucu hangi alanı yazdıracağız, burada AD yazarsak seçili AD satırını so_obj-low alanına yazdırır.

dynpprog = sy-repid "program adı

dynpnr = '1000' "ekran numarası

dynprofield = 'SO_OBJ-LOW' "ekrandaki alan adının LOW kısmı

value_org = 'S' "iki değer almaktadır C ve S , C : cell by cell , S: structured

TABLES

value_tab = gt_data. "Doldurduğumuz tablonun adını buraya yazıyoruz

*High için

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_OBJ-HIGH.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'OBJID'

dynpprog = sy-repid

dynpnr = '1000'

dynprofield = 'SO_OBJ-HIGH'

value_org = 'S'

TABLES

value_tab = gt_data.

*Bu işlemler bittikten sonra program çalışır çalışmaz tetiklenen INITIALIZATION sekmesinde GT_DATA isimli ITAB'ımızı doldururz böylece kullanıcı F4 e bastığı anda veriler karşısına gelir.

INITIALIZATION.

Perform Generate_DATA_SearchHelp. "ITAB'ımızı dolduracak olan form

START-OF-SELECTION.

Perform …

Perform …

Perform … "buralarda kendi perform işlemlerimizi yapıyoruz SEARCH_HELP'den bağımsız olarak

END-OF-SELECTION.



*ITAB'I dolduracak olan formu yaratıyoruz

FORM Generate_DATA_SearchHelp.

Clear gt_data[]. "içini temizleyelim

*Sorgumuzu yazalım ve ITAB dolsun

Select

OBJID

NO

AD

SOYAD

From ZSINIF

into corresponding fields of table GT_DATA.

ENDFORM.

2 yorum:

Uğur Özdemir dedi ki...

Bu bloğu sürekli takip ediyorum, çok ilginç yazılar var, Bilen Bey ABAP'ın kitabını yazmış.
Hangi şirkette hizmet veriyor acaba ?

Bilen Çekiç dedi ki...

:D Evet kitabını yazdım abap'ın daha da yazacam herşeyin kitabını yazacam :D
bilencekic.blogspot.com açıldı
bilencekic.blogspot.com a girenler mutlu ayrılıyor

bilencekic.blogspot.com çünkü ben buna değerim...

=)) al reklam sloganları da hazır :D
son olarak
Çözümevinde hizmet veriyor efendim çözümevi =)