有两种方式实现联动:
1、
USER-COMMAND
2、
AT
SELECTION-SCREEN
ON
VALUE-REQUEST
FOR listbox名称
例一:
REPORT zlm_listbox_02
.
*&---------------------------------------------------------------------*
*&宏定义,填充下拉框
*&---------------------------------------------------------------------*
DEFINE fill_list
.
value
-
key
= &1
.
"个就是变量下拉框的值
value
-
text
= &2
.
"这个是text
append
value
to &3
.
END-OF-DEFINITION
.
*&---------------------------------------------------------------------*
*&LIST-BOX 变量定义
*&---------------------------------------------------------------------*
TYPE-POOLS
: vrm
.
"存放combobox内容的type pool
DATA
: name
TYPE vrm_id
,
" list box的名称
list_ctry
TYPE vrm_values
,
" list box的值
list_city
TYPE vrm_values
,
" list box的值
value
LIKE
LINE
OF list_ctry
.
" list box的结构
*&---------------------------------------------------------------------*
*&屏幕定义
*&---------------------------------------------------------------------*
PARAMETERS
: p_ctry
TYPE char10
AS LISTBOX VISIBLE LENGTH
15
USER-COMMAND zctry
.
PARAMETERS
: p_city
TYPE char10
AS LISTBOX VISIBLE LENGTH
15
USER-COMMAND zcity
.
*&---------------------------------------------------------------------*
*&初始化
*&---------------------------------------------------------------------*
INITIALIZATION
.
PERFORM zform_fill_ctry
.
*&---------------------------------------------------------------------*
*&根据所选国家,显示城市
*&---------------------------------------------------------------------*
AT
SELECTION-SCREEN
.
CASE sy
-ucomm
.
WHEN
'ZCTRY'
.
PERFORM zform_fill_city
.
WHEN
'ZCITY'
.
MESSAGE p_city
TYPE
'I'
.
WHEN
OTHERS
.
ENDCASE
.
*&---------------------------------------------------------------------*
*& Form zform_fill_city
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM zform_fill_city
.
DATA
:
value
LIKE
LINE
OF list_ctry
.
" list box的结构
READ
TABLE list_ctry
INTO
value
WITH
KEY
key
= p_ctry
.
REFRESH list_city
.
IF
value
-
key
=
'CH'
.
fill_list
'BJ'
'北京' list_city
.
fill_list
'TJ'
'天津' list_city
.
ENDIF
.
IF
value
-
key
=
'EN'
.
fill_list
'LD'
'伦敦' list_city
.
ENDIF
.
IF
value
-
key
=
'US'
.
fill_list
'LSJ'
'洛杉矶' list_city
.
fill_list
'HSD'
'华盛顿' list_city
.
ENDIF
.
"调用函数显示listbox里面的值
CALL
FUNCTION
'VRM_SET_VALUES'
EXPORTING
id
=
'P_CITY'
" PARAMETERS's Name
values
= list_city
.
ENDFORM
.
"zform_fill_city
*&---------------------------------------------------------------------*
*& Form zform_fill_ctry
*&---------------------------------------------------------------------*
* text 填充国家
*----------------------------------------------------------------------*
FORM zform_fill_ctry
.
REFRESH list_ctry
.
fill_list
'CH'
'中国' list_ctry
.
fill_list
'EN'
'英国' list_ctry
.
fill_list
'US'
'美国' list_ctry
.
"调用函数显示listbox里面的值
CALL
FUNCTION
'VRM_SET_VALUES'
EXPORTING
id
=
'P_CTRY'
" PARAMETERS's Name
values
= list_ctry
.
ENDFORM
.
"zform_fill_ctry
例二:
变动很小
INITIALIZATION.
PERFORM zform_fill_ctry.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ctry.
PERFORM zform_fill_city.
或者
AT
SELECTION-SCREEN
OUTPUT
.
PERFORM zform_fill_ctry
.
AT
SELECTION-SCREEN
ON
VALUE-REQUEST
FOR p_ctry
.
PERFORM zform_fill_city
.
或者直接
AT
SELECTION-SCREEN
ON
VALUE-REQUEST
FOR p_ctry
.
PERFORM zform_fill_ctry
.
PERFORM zform_fill_city
.
但是出现了个问题,
就是在我变动国家后,城市框还显示上传选择的城市的key值
一直没解决,哪位知道怎样解决,请留言,谢谢
欢迎关注订阅号:SAP学习记录 (SAPlearning )