Change Selection Screen Dynamically

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.


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s