ABAP CHECKBOX 和LISTBOX使用指南

mmccking發表於2007-09-25
ABAP CHECKBOX 和LISTBOX使用指南[@more@]

1.什麼是checkbox

就是一個核取方塊,可以用like或者type來定義,為1個字元型變數。它是parameter的一個選項,parameter xxx as checkbox就可以在選擇螢幕上顯示一個核取方塊。

2.什麼是listbox

就是一個下拉選單,你可以在這個列表中選擇一條記錄進行某種操作。也是parameter的一個選項,parameter xxx as listbox就可以在選擇螢幕上顯示一個下拉選單。

3.如何使用:

下面我們用一個程式來說明這兩者的使用方法。

REPORT Z_TEXT

TYPE-POOLS: VRM . 存放combobox內容的type pool

DATA: NAME TYPE VRM_ID , “ list box的名稱

LIST TYPE VRM_VALUES , “ list box的值

VALUE LIKE LINE OF LIST . “ list box的結構

*定義checkbox,指定command,為了能夠響應選擇螢幕中值的改變

PARAMETERS: P_CB1 TYPE C AS CHECKBOX DEFAULT 'X' USER-COMMAND CHECK,

P_CB2 TYPE C AS CHECKBOX DEFAULT 'X' USER-COMMAND CHECK.

*定義listbox,必須指定visible length

PARAMETERS: P_LIST1(10) TYPE C AS LISTBOX

VISIBLE LENGTH 15 ,

P_LIST2(20) TYPE C AS LISTBOX

VISIBLE LENGTH 25 .

*開始執行

AT SELECTION-SCREEN OUTPUT .

*--〉選擇1而沒有選擇2

IF P_CB1 = 'X' AND P_CB2 = ''.

*---〉向listbox裡面新增值

REFRESH LIST .

VALUE-KEY = '1111111111' . 這個就是變數P_LIST的值

VALUE-TEXT = '1111111111' . 這個是text

APPEND VALUE TO LIST .

VALUE-KEY = '2222222222' .

VALUE-TEXT = '2222222222' .

APPEND VALUE TO LIST .

VALUE-KEY = '3333333333' .

VALUE-TEXT = '3333333333' .

APPEND VALUE TO LIST .

*---〉呼叫函式顯示listbox裡面的值

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = 'P_LIST1'

VALUES = LIST.

*---〉把第二個listbox的值清空,並且不能輸入

CLEAR P_LIST2 .

LOOP AT SCREEN .

IF SCREEN-NAME = 'P_LIST2' .

SCREEN-INPUT = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*--〉選擇2,沒有選擇1,同上

ELSEIF P_CB2 = 'X' AND P_CB1 = ''.

REFRESH LIST .

VALUE-KEY = 'AAAAAAAAAAAAAAAAAAAA' .

VALUE-TEXT = 'AAAAAAAAAAAAAAAAAAAA' .

APPEND VALUE TO LIST .

VALUE-KEY = 'BBBBBBBBBBBBBBBBBBBB' .

VALUE-TEXT = 'BBBBBBBBBBBBBBBBBBBB' .

APPEND VALUE TO LIST .

VALUE-KEY = 'CCCCCCCCCCCCCCCCCCCC' .

VALUE-TEXT = 'CCCCCCCCCCCCCCCCCCCC' .

APPEND VALUE TO LIST .

APPEND VALUE TO LIST .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = 'P_LIST2'

VALUES = LIST.

*---〉清空listbox 1的值

CLEAR P_LIST1 .

LOOP AT SCREEN .

IF SCREEN-NAME = 'P_LIST1' .

SCREEN-INPUT = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*--〉都沒有選擇,都清空且不能輸入

ELSEIF P_CB1 = '' AND P_CB2 = '' .

CLEAR: P_LIST1,P_LIST2 .

LOOP AT SCREEN .

IF SCREEN-NAME = 'P_LIST1' .

SCREEN-INPUT = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

LOOP AT SCREEN .

IF SCREEN-NAME = 'P_LIST2' .

SCREEN-INPUT = 0 .

MODIFY SCREEN .

ENDIF .

ENDLOOP .

*--〉都選,執行

ELSEIF P_CB1 = 'X' AND P_CB2 = 'X' .

REFRESH LIST .

VALUE-KEY = '1111111111' .

VALUE-TEXT = '1111111111' .

APPEND VALUE TO LIST .

VALUE-KEY = '2222222222' .

VALUE-TEXT = '2222222222' .

APPEND VALUE TO LIST .

VALUE-KEY = '3333333333' .

VALUE-TEXT = '3333333333' .

APPEND VALUE TO LIST .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = 'P_LIST1'

VALUES = LIST.

REFRESH LIST .

VALUE-KEY = 'AAAAAAAAAAAAAAAAAAAA' .

VALUE-TEXT = 'AAAAAAAAAAAAAAAAAAAA' .

APPEND VALUE TO LIST .

VALUE-KEY = 'BBBBBBBBBBBBBBBBBBBB' .

VALUE-TEXT = 'BBBBBBBBBBBBBBBBBBBB' .

APPEND VALUE TO LIST .

VALUE-KEY = 'CCCCCCCCCCCCCCCCCCCC' .

VALUE-TEXT = 'CCCCCCCCCCCCCCCCCCCC' .

APPEND VALUE TO LIST .

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = 'P_LIST2'

VALUES = LIST.

ENDIF .

START-OF-SELECTION .

*--〉輸出到第二螢幕看看

WRITE: P_LIST1 ,/ P_LIST2 .

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-972241/,如需轉載,請註明出處,否則將追究法律責任。

相關文章