PARAMETERS、SELECTION OPTIONS和SELECTION SCREEN的全部用法
(一)PARAMETERS:為變量定義輸入字段
1、PARAMETERS的全部用法:
P_BUDAT LIKE BKPF-BUDAT OBLIGATORY,P_CX AS CHECKBOX DEFAULT 'X',P_BUDAT LIKE BKPF-BUDAT NO DISPLAY,P_CX AS CHECKBOX,R1 RADIOBUTTON GROUP RAD1R2 RADIOBUTTON GROUP RAD1 DEFAULT 'X'R3 RADIOBUTTON GROUP RAD2R4 RADIOBUTTON GROUP RAD2P1 MODIF ID SC1P2 MODIF ID SC1P3 MODIF ID SC2P4 MODIF ID SC2每種用法的解釋:
OBLIGATORY ?設定該項偉必輸項
CHECKBOX ? ? 設為打鉤的(復選框),如果沒有設定default的值,那么當這個被勾上的時候才為X,有default的話,即默認為勾上的。
NO DISPLAY ? ?設定該項為不顯示狀態。
RADIOBUTTON ? 設定單選,有default的,默認這個是選上的,同一個RAD1和RAD2,每個RAD只能選一個值,選中則變量變為X,如果沒有設定default,每個組的第一個參數將被激活并分配‘X’。
MODIF ID ? ? ? ? 將參數分配給修改組,通過在SELECTION-SCREEN ? OUTPUT事件中進行處理:
AT SELECTION-SCREEN OUTPUT. ? ? ? ? ? ?結合上面的定義,P1和P2放在一組,P3和P4放在一組,然后P1和P2的INTENSIFIED字段被設為1,效果是高亮度,
LOOP AT SCREEN. 這個可以這樣使用。IF SCREEN-GROUP1 = 'SC1'SCREEN-INTENSIFIED = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.還有一些不常用的例如: LOWER CASE,有這個lower case,系統就不會把輸入值更改為大寫。(還沒有使用過)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MEMORY-ID ? ? ? ?允許你從全局SAP內存使用缺省值。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MATCHCODE OBJECT ? ? ?匹配代碼對象,obj的名稱必須是4字符的變量名
(二)SELECT-OPTIONS:選擇表
? ? ? ? ? ? ? 1、SELECT-OPTIONS的全部用法:
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? DEFAULT .
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? DEFAULT ?A ? ?TO ? ?B .
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? OBLIGATORY .
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? ?NO DISPLAY .
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? NO-EXTENSION .
S_EBLEN ? ? ? ? ? ?FOR ? ? ? ? ? ? ?VBRK-EBLEN ? NO-INTERVALS .
(三)SELECTION-SCREEN: ? ? 格式化選擇屏幕
? ? ? ? ? ? ? ? ?1、SELECTION-SCREEN 的全部使用方法:
SELECTION-SCREEN ?SKIP ? <N> ? ? ? ? ? ? ? ? 該語句產生N個空行,如果只產生一個,可以省略<N>。
SELECTION-SCREEN ?ULINE ?<POS(LEN)> ?該語句創建下劃線,入過沒有POS(LEN),則在當前下面創建新行。如果有POS(LEN),則從POS處開 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 始,連續<LEN>個字符。
SELECTION-SCREEN COMMENT ? ? ? ? ? ? ? ??用該選項是必須定義格式(例如選擇屏幕上的文字說明可以用這個語句)
SELECTION-SCREEN BEGIN OF LINE ? ? ? ? ?把選擇屏幕的幾個元素放在一行上。
SELECTION-SCREEN ?POSITION ?<POS> ? ?定位元素
SELECTION-SCREEN BEGIN OF BLOCK ? <block> ?創建元素塊,里面放選擇屏幕語句,block的名字可以在initialization里面維護。
SELECTION-SCREEN END OF BLOCK ? ?<block>
?SELECTION-SCREEN FUNCTION KEY <I> ??在選擇屏幕的應用工具欄創建按鈕,I為1-5,最多只有5個按鈕。具體要怎么實現,可以參考另一篇文章(給選擇屏幕添加按鈕)
SELECTION-SCREEN PUSHBUTTON <pos(len)> ?<name> ? ?USER-COMAND ? <ucom> ? [MODIF ID <keyt>] ??
在選擇屏幕上創建按鈕,其中<name >是按鈕的文本, <ucom>為輸入詞典字段SSCRFIELDS-UCOMM,必須使用TABLES語句聲明表SSCRFIELDS。
(四) INITIALIZATION : ? ? ? ? 用于屏幕初始化,例如屏幕的block的名字,屏幕默認字段的一些初始值的填充,工具欄按鈕的一些字段的值的填充等等。
(五)?AT ? SELECTION-SCREEN ? OUTPUT?
這個就相當于PBO的功能,可以對選擇屏幕字段進行修改(前面也有說到一些功能要放到這里使用的),在選擇運行程序的時候,選擇屏幕出來之前就先運行這段,還有就是選擇屏幕輸入條件之后按下回車或者是執行后,也會進入這個event。
? ? ? ? ? ? ?例如可以判斷用戶名,然后選擇性的輸入一些選擇屏幕字段:
S_EBLEN FOR VBRK-EBLEN DEFAULT S_EBLEN FOR VBRK-EBLEN DEFAULT A TO B S_EBLEN FOR VBRK-EBLEN OBLIGATORY S_EBLEN FOR VBRK-EBLEN NO DISPLAY S_EBLEN FOR VBRK-EBLEN NO-EXTENSION S_EBLEN FOR VBRK-EBLEN NO-INTERVALS
DEFAULT ? ?OBLIGATORY ?NO-DISPLAY的功能和之前的PARAMETERS的一樣。
DEFAULT ? A ? TO ?B ? ?設置里面的LOW 和HIGH字段,例如我要設置默認公司代碼從0001到0020。
? ? ? 選擇表的里面的字段有:SIGN ? ? ? OPTION ? ? LOW ? ? ?HIGH
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SIGN ? ? ? ?可以是I ?和 ? E ? ? I是包括, ? E是排除的意思
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OPTION ? 可以是:EQ ?NE ?GT ?LE ?LT ?CP ?NP ? ? 這個可以查看我的帖子(select-option作為select的條件使用)
? ? ? ? ? ? ? ? ? ? ? NO-EXTENSION,把選擇表限制在一行
? ? ? ? ? ? ? ? ? ? ? NO INTERVALS ,把選擇表限制偉單值選擇
(三)SELECTION-SCREEN: ? ? 格式化選擇屏幕
? ? ? ? ? ? ? ? ?1、SELECTION-SCREEN 的全部使用方法:
SELECTION-SCREEN ?SKIP ? <N> ? ? ? ? ? ? ? 該語句產生N個空行,如果只產生一個,可以省略<N>。
SELECTION-SCREEN ?ULINE ?<POS(LEN)> ? ? ? ?該語句創建下劃線,入過沒有POS(LEN),則在當前下面創建新行。如果有POS(LEN),則從POS處開始,連續<LEN>個字符。
SELECTION-SCREEN COMMENT ? ? ? ? ? ? ? ?用該選項是必須定義格式(例如選擇屏幕上的文字說明可以用這個語句)
SELECTION-SCREEN BEGIN OF LINE ? ? ? 把選擇屏幕的幾個元素放在一行上。
SELECTION-SCREEN END OF LINE
SELECTION-SCREEN ?POSITION ?<POS> ? ? ? ? 定位元素
SELECTION-SCREEN BEGIN OF BLOCK ? <block> ? ?創建元素塊,里面放選擇屏幕語句,block的名字可以在initialization里面維護。
SELECTION-SCREEN END OF BLOCK ? ?<blokc>
SELECTION-SCREEN FUNCTION KEY <I> ? ? ? ? ? ? ? ? ? 在選擇屏幕的應用工具欄創建按鈕,I為1-5,最多只有5個按鈕。具體要怎么實現,可以參考另一篇文章(給選擇屏幕添加按鈕)
SELECTION-SCREEN PUSHBUTTON <pos(len)> ?<name> ? ?USER-COMAND ? <ucom> ? [MODIF ID <keyt>] ? ? ? ? ? ? ? ? ? ? ? ? 在選擇屏幕上創建按鈕,其中<name >是按鈕的文本, <ucom>為輸入詞典字段SSCRFIELDS-UCOMM,必須使用TABLES語句聲明表SSCRFIELDS。(后續有用到把具體例子貼上來)
(四) INITIALIZATION : ? ? ? ? 用于屏幕初始化,例如屏幕的block的名字,屏幕默認字段的一些初始值的填充,工具欄按鈕的一些字段的值的填充等等。
(五) AT ? SELECTION-SCREEN ? OUTPUT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個就相當于PBO的功能,可以對選擇屏幕字段進行修改(前面也有說到一些功能要放到這里使用的),在選擇運行程序的時候,選擇屏幕出來之前就先運行這段,還有就是選擇屏幕輸入條件之后按下回車或者是執行后,也會進入這個event。
? ? ? ? ? ? ?例如可以判斷用戶名,然后選擇性的輸入一些選擇屏幕字段:
? ? ? ? ? ? ? ? ? ? ? at selection-screen output.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if sy-uname ne 'LIUJC_CN'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?loop at screen.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if screen-name+0(7) eq 'S_AUFNR' or
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen-name+2(7) eq 'S_AUFNR'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen-invisible = '1'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?screen-active = '0'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? modify screen.
? ? ? ? ? ? ? ? ? ? ? ? ? ?endif.
? ? ? ? ? ? ? ? ? ? ? ? ? ?endloop.
? ? ? ? ? ? ? ? ? ? ? ? ? ?endif.
?
? ? ? ? ? ? ? ? 例如可以判斷輸入的某個字段是某個值的時候添加屏幕字段(注意要按回車):
? ? ? ? ? ? ? ? 例如,當我輸入company code為某個值的時候,我需要添加一個選擇字段以及部分check box。首先,這些要添加的選擇屏幕內容都是一樣要預先設定好,然后通過at selection-screen output 設定好邏輯即可:
? ? ? ? ? ? ? ? 定義: ? ? ?s_bukrs1 FOR t001-bukrs NO INTERVALS MODIF ID m4.
? ? ? ? ? ? ? ? 邏輯: ? ? LOOP AT SCREEN. ? ? ? ? ? ? ? ? ? ? ? ? (這里可以用group,也可以用name。關于SCREEN的值如何去定義,參考本博客的另一篇文章:SCREEN的理解)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CASE screen-group1.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WITH 'M4'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IF 'SG01' IN s_bukrs.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MOVE '1' TO screen-active.
?(六) AT ?SELECTION-SCREEN ?ON ?VALUE-REQUEST ? FOR ? ?<NAME> ? ? ? 這個最常見的就是對upload文件的文件名進行檢查的使用:
? ? ? ? ? ? ? ? ? ? ? ? ? AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?EXPORTING
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? field_name ? ?= 'C:\'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mask ? ? ? ? ?= ',Excel Files,*.xls,*.XLS,'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?* ? ? ?STATIC ? ? ? ?= 'X'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CHANGING
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?file_name ? ? = filename
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? EXCEPTIONS
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mask_too_long = 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OTHERS ? ? ? ?= 2.
? ? ? ? ?(七) AT ?SELECTION-SCREEN ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這個比較常用的是在工具欄里面添加了按鈕,然后對這個按鈕進行操作。
? ? ? ? ? ? ? ? ? ? ? ? ? ?AT SELECTION-SCREEN.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CASE SSCRFIELDS-UCOMM.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? WHEN 'FC01'.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? PERFORM FRM_DOWNLOAD_DATA.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ENDCASE.
(八)選擇屏幕下拉菜單的實現:
代碼如下:Post invoice的代碼如下:PARAMETERS: P_CHK1 AS CHECKBOX USER-COMMAND SELECT.SELECTION-SCREEN: COMMENT 3(12) TEXT-073 MODIF ID B4 .confirmed for的代碼如下:SELECTION-SCREEN: COMMENT 1(13) TEXT-053 FOR FIELD P_INFO MODIF ID B4.SELECTION-SCREEN: POSITION 14.PARAMETERS: P_INFO(2) TYPE C default '0' MODIF ID B4..SELECTION-SCREEN: COMMENT 19(4) TEXT-054 MODIF ID B4. (十)實現屏幕可以影藏部分選擇屏幕字段:
(十一)調用選擇屏幕
我們另外定義一個選擇屏幕500
? ?SELECTION-SCREEN BEGIN OF SCREEN 500.
? SELECTION-SCREEN BEGIN OF LINE.
? SELECT-OPTIONS:S_BUKRS6 FOR BKPF-BUKRS NO INTERVALS .
? SELECTION-SCREEN END OF LINE.
? SELECTION-SCREEN END OF SCREEN 500.
修改START-OF-SELECTION事件為:
? CALL SELECTION-SCREEN 500.
調用了這個選擇屏幕之后,點擊按鈕,這里不是用user_command或者是在屏幕500里面再去設一個module,直接在call selection-screen 500后面添加執行代碼,當輸入選擇屏幕只會,點擊執行就會執行后面的代碼。
(十二)調用子屏幕call subscreen
(十三)選擇屏幕放多個tab:本例實現如上圖效果,示例代碼如下: REPORT Z_LPF_SCREEN_TAB. TABLES: MARA,SSCRFIELDS. selection-screen function key 1. SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN. SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.SELECT-OPTIONS:MAT1 FOR MARA-MATNR NO INTERVALS.SELECTION-SCREEN SKIP 1.PARAMETERS:CHK1 AS CHECKBOX DEFAULT 'X'.SELECTION-SCREEN END OF BLOCK A1.SELECTION-SCREEN END OF SCREEN 100.SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.PARAMETERS: MAT2 LIKE MARA-MATNR.SELECTION-SCREEN END OF SCREEN 200.SELECTION-SCREEN: BEGIN OF TABBED BLOCK MYTAB FOR 5 LINES,TAB (20) BUTTON1 USER-COMMAND PUSH1,TAB (20) BUTTON2 USER-COMMAND PUSH2,END OF BLOCK MYTAB.INITIALIZATION.MOVE 'BUTTON' TO SSCRFIELDS-FUNCTXT_01.BUTTON1 = 'TAB1'.BUTTON2 = 'TAB2'.MYTAB-PROG = SY-REPID.MYTAB-DYNNR = 100.AT SELECTION-SCREEN.CASE SY-UCOMM.WHEN 'PUSH1'.MYTAB-DYNNR = 100.MYTAB-ACTIVETAB = 'BUTTON1'.WHEN 'PUSH2'.MYTAB-DYNNR = 200.MYTAB-ACTIVETAB = 'BUTTON2'.WHEN OTHERS.ENDCASE. (十四)實現下面這個功能:
在AT SELECTION-SCREEN OUTPUT.加入這段代碼: CASE 'X'.WHEN R_RFC.SET_SCREEN 'MD1'. WHEN R_PROG.SET_SCREEN 'MD2'.WHEN R_JOB.SET_SCREEN 'MD3'.WHEN R_HTTP.SET_SCREEN 'MD4'.WHEN OTHERS.ENDCASE.其中MD1是這樣定義的: SELECT-OPTIONS :S_FUNC FOR ZRFCSRVR-FUNC_NAME NO INTERVALS MODIF ID MD1. (十五)跟上面這個類似的實現:
總結
以上是生活随笔為你收集整理的PARAMETERS、SELECTION OPTIONS和SELECTION SCREEN的全部用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兰州大学计算机基础在线考试,[兰州大学]
- 下一篇: 使用JavaScript 中的Math对