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 = '
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 = '
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:
Bu bloğu sürekli takip ediyorum, çok ilginç yazılar var, Bilen Bey ABAP'ın kitabını yazmış.
Hangi şirkette hizmet veriyor acaba ?
: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 =)
Yorum Gönder