15 Temmuz 2008 Salı

ABAP : Select-Options Secim Sinirmalamasi

Kullanıcının seçimini sınırlar.
*************************************************************************

REPORT z_sinir.

* Include
TYPE-POOLS sscr.

TABLES :
marc.

* selection-screen leri tanımlarız
select-options :
s_matnr for marc-matnr,
s_werks for marc-werks.

* Ana objelerimizi tanımlıyoruz
DATA restrict TYPE sscr_restrict.

* Sınırlandırmada kullanacağımız değişkenler
DATA : optlist TYPE sscr_opt_list,
ass type sscr_ass.

INITIALIZATION.

* MATNR nin sadece EQ ve 'BT' olarak
*seçilebilmesini sağlayalım.
optlist-name = 'OBJECTKEY1'.
optlist-options-eq = 'X'.
optlist-options-bt = 'X'.
APPEND optlist TO restrict-opt_list_tab.

ass-kind = 'S'.
ass-name = 'S_MATNR'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY1'.
APPEND ass TO restrict-ass_tab.

* WERK alanın da CP, GE, LT, NE ile sınırlayalım.
optlist-name = 'OBJECTKEY2'.
optlist-options-cp = 'X'.
optlist-options-ge = 'X'.
optlist-options-lt = 'X'.
optlist-options-ne = 'X'.
APPEND optlist TO restrict-opt_list_tab.

ass-kind = 'S'.
ass-name = 'S_WERKS'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY2'.
APPEND ass TO restrict-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict
EXCEPTIONS
TOO_LATE = 1
REPEATED = 2
SELOPT_WITHOUT_OPTIONS = 3
SELOPT_WITHOUT_SIGNS = 4
INVALID_SIGN = 5
EMPTY_OPTION_LIST = 6
INVALID_KIND = 7
REPEATED_KIND_A = 8
OTHERS = 9
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Hiç yorum yok: