*&--------------------------------------------------------------------*
* SELECTION-SCREEN
*&--------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
"定义屏幕输入
PARAMETERS P_TYPE TYPE ZPPT002A-ZTYPE AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
PARAMETERS P_QUAN(2) TYPE N OBLIGATORY .
SELECTION-SCREEN END OF BLOCK B1.
*---------------------------------------------------------------------*
* INITIALIZATION *
*---------------------------------------------------------------------*
INITIALIZATION.
"ALV 格式控制
PERFORM SET_ALV_LAYOUT CHANGING GS_LAYOUT.
PERFORM SET_ALV_FIELDCAT.
"SMARTFORM INITIALIZATION
PERFORM SF_TO_FM.
*---------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
"设置选择屏幕下拉列表
PERFORM FORM_SET_LIST.
*---------------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------------*
START-OF-SELECTION.
"获取ALV数据
PERFORM GET_ALV_DATA TABLES GT_ALV_OUTPUT.
*---------------------------------------------------------------------*
* END-OF-SELECTION *
*---------------------------------------------------------------------*
END-OF-SELECTION.
"显示ALV
PERFORM SHOW_ALV.
*&---------------------------------------------------------------------*
*& FORM FORM_SET_LIST
*&---------------------------------------------------------------------*
*& 设置选择屏幕下拉框
*&---------------------------------------------------------------------*
*& --> P1 TEXT
*& <-- P2 TEXT
*&---------------------------------------------------------------------*
FORM FORM_SET_LIST .
"型号表内表 局部变量
DATA: LW_ZPPT002A TYPE ZPPT002A,
LT_ZPPT002A LIKE TABLE OF LW_ZPPT002A.
"LIST相关 局部变量
DATA: LV_VID TYPE VRM_ID,
LV_LIST TYPE VRM_VALUES,
LV_VALUE LIKE LINE OF LV_LIST.
"从型号表获取型号数据
SELECT
*
FROM
ZPPT002A
INTO TABLE @LT_ZPPT002A.
"设置LIST
REFRESH LV_LIST.
LOOP AT LT_ZPPT002A INTO LW_ZPPT002A.
LV_VALUE-KEY = LW_ZPPT002A-ZTYPE. "值
LV_VALUE-TEXT = LW_ZPPT002A-ZTYPE. "文本
APPEND LV_VALUE TO LV_LIST.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_TYPE' "屏幕上绑定的下拉框
VALUES = LV_LIST.
ENDFORM.
总结:一共两步!
一:
"定义屏幕输入
PARAMETERS P_TYPE TYPE ZPPT002A-ZTYPE AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
二:
"设置LIST
REFRESH LV_LIST.
LV_VALUE-KEY = 'ABC'. "值
LV_VALUE-TEXT = 'ABC'. "文本
APPEND LV_VALUE TO LV_LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_TYPE' "屏幕上绑定的下拉框
VALUES = LV_LIST.
PS:上面设置下拉框值的地方不能写数字
LV_VALUE-KEY = 1. "值
LV_VALUE-TEXT = '文本'. "文本
APPEND LV_VALUE TO LV_LIST.
"定义屏幕输入
PARAMETERS P_TYPE TYPE ZPPT002A-ZTYPE AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
写数字的话,就获取不到选择屏幕的值(P_TYPE),我试出来是这样的。