SAP Abap ile geliştirilen programlarda yer alan Selection-Screen alanını değiştirmek istediğimiz zaman, Screen içerisinde Loop işlemi uygulayarak farklı bir Selection-Screen alanı ile değiştirilebilir. Ancak, bu işlem için Selection-Screen’leri gruplayarak içerisinde yer alan parametreleri ID’ler ile etiketleyerek, istediğimiz şekilde değişiklik işlemi ile ekranı olduğu gibi değiştirebiliriz. Buna ilişkin örnek uygulama aşağıda ki gibidir.
Örnek bir program üzerinde, Selection-Screen ve parametre olarak MATNR, ERSDA, ERNAM alanları bulunuyor. Ancak bir check-box ile bu alanların bulunduğu Selection-Screen değiştirilerek MATKL, MTART, AENAM alanlarından oluşan Selection-Screen’in ekrana gelmesini istiyoruz.
İlk olarak her iki Selection Screen Block’larını tanımlıyoruz. Daha sonra ekrandaki değişikliği tetikleyecek olan ve içerisinde check-box parametresini barındıracak olan statik selection screen bloğunu tanımluyoruz. Daha sonra mevcut ekranın görünür veya görünmez olduğunu belirtmek için 1/0 değerlerinden oluşan sabitleri oluşturuyoruz. Selection Screen Block’ları içerisinde tanımladığımız parametreler için MODIF ID ile hangi block içerisinde yer aldığını belirtiyoruz.
************************************************************************ *First Selection Screen * ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK SEL_SCREEN_1 WITH FRAME TITLE TEXT-000. PARAMETERS : PA_MATNR LIKE MARA-MATNR MODIF ID ID1, PA_ERSDA LIKE MARA-ERSDA MODIF ID ID1, PA_ERNAM LIKE MARA-ERNAM MODIF ID ID1. SELECTION-SCREEN END OF BLOCK SEL_SCREEN_1. ************************************************************************ *Second Selection Screen * ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK SEL_SCREEN_2 WITH FRAME TITLE TEXT-001. PARAMETERS : P_MATKL LIKE MARA-MATKL MODIF ID ID2, P_MTART LIKE MARA-MTART MODIF ID ID2, P_AENAM LIKE MARA-AENAM MODIF ID ID2. SELECTION-SCREEN END OF BLOCK SEL_SCREEN_2. ************************************************************************ * Change Selection Screen Parameter * ************************************************************************ SELECTION-SCREEN: BEGIN OF BLOCK CHANGE_SCREEN. PARAMETERS P_CHANGE AS CHECKBOX DEFAULT SPACE USER-COMMAND ID1. SELECTION-SCREEN: END OF BLOCK CHANGE_SCREEN. ************************************************************************ * Screen Active or Invisible Control Constants * ************************************************************************ CONSTANTS : C_SELECTED TYPE C VALUE '1', C_CANCELED TYPE C VALUE '0'.
AT SELECTION-SCREEN OUTPUT. İşlemi esnasında, ekran üzerinde bir döngü işlemi ile değişiklik parametresi olan check-box’un seçili olup olmadığına bakılır. Eğer seçili ise mevcut ekrana ait aktiflik, görünürlük kapatılır ve diğer ekrana ait block getirilir. Bu esnada değişen ekrandaki parametreler temizlenir.
AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. CASE SCREEN-GROUP1. WHEN 'ID1'. IF P_CHANGE IS INITIAL. SCREEN-INVISIBLE = C_CANCELED. SCREEN-ACTIVE = C_SELECTED. SCREEN-REQUIRED = 2. MODIFY SCREEN. CLEAR : P_MATKL,P_MTART ,P_AENAM. ELSE. SCREEN-INVISIBLE = C_SELECTED . SCREEN-ACTIVE = C_CANCELED . SCREEN-REQUIRED = 2 . MODIFY SCREEN. CLEAR : PA_ERNAM,PA_ERSDA ,PA_MATNR. ENDIF. WHEN 'ID2'. IF P_CHANGE IS INITIAL. SCREEN-INVISIBLE = C_SELECTED. SCREEN-ACTIVE = C_CANCELED . MODIFY SCREEN. ELSE. SCREEN-INVISIBLE = C_CANCELED. SCREEN-ACTIVE = C_SELECTED. SCREEN-REQUIRED = 2. MODIFY SCREEN. ENDIF. ENDCASE. ENDLOOP.
Sonuç olarak aşağıdaki ekran görüntülerinde gözüktüğü gibi sonuç elde edilecektir.