简单的例子:
REPORT ZDCH_09_TEST2.
TYPES : BEGIN OF TYP_NAME ,
NAME TYPE CHAR20,
END OF TYP_NAME .
PARAMETERS P_NAME TYPE CHAR20 .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_NAME .
PERFORM F_VALUE_REQUEST_FOR_NAME .
*&---------------------------------------------------------------------*
*& Form F_VALUE_REQUEST_FOR_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F_VALUE_REQUEST_FOR_NAME .
DATA :
L_W_NAME TYPE TYP_NAME,
L_TAB_NAME TYPE STANDARD TABLE OF TYP_NAME.
L_W_NAME-NAME = 'MIKE' .
APPEND L_W_NAME TO L_TAB_NAME .
L_W_NAME-NAME = 'BILY' .
APPEND L_W_NAME TO L_TAB_NAME .
L_W_NAME-NAME = 'FRANK' .
APPEND L_W_NAME TO L_TAB_NAME .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'NAME' "大写,可选值内表的字段名
VALUE_ORG = 'S' "C CELL逐行,S STRUCTURE结构化,在DILOG中必选S,否则提示找不到
DYNPPROG = SY-REPID "返回的输入框所在的main program
DYNPNR = SY-DYNNR "返回的输入框所在屏幕
DYNPROFIELD = 'P_NAME' "返回的输入框名
* CALLBACK_PROGRAM = 'PROCESS_DATA' "可以传递多列值
* MULTIPLE_CHOICE = 'X' "多项选择(在屏幕字段不能输入多个值时此选项会不能返回值)
* DISPLAY = ' ' "C 只能显示不能选择
TABLES
VALUE_TAB = L_TAB_NAME "可选值的内表
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0 .
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 .
ENDIF .
ENDFORM . "F_VALUE_REQUEST_FOR_NAME
实例:三个步骤
选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_BTEXT FOR GS_SELECT-BTEXT_L "业务类型
.
SELECTION-SCREEN END OF BLOCK B1.
为其加上搜索帮助
INITIALIZATION.
PERFORM FRM_INIT_DATA.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_BTEXT-LOW.
PERFORM FORM_VALUE_REQUEST_FOR_BTEXT .
子例程FORM
FORM FORM_VALUE_REQUEST_FOR_BTEXT .
"从T156T表获取数据
SELECT
BTEXT_L
FROM T156T
INTO TABLE @DATA(LT_T156T)
WHERE
SPRAS = '1'.
DELETE ADJACENT DUPLICATES FROM LT_T156T COMPARING ALL FIELDS.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'BTEXT_L' "大写,可选值表的字段名
VALUE_ORG = 'S' "C CELL逐行,S STRUCTURE结构化,在DILOG中必选S,否则提示找不到
DYNPPROG = SY-REPID " 返回的输入框所在的main program
DYNPNR = SY-DYNNR " 返回的输入框所在屏幕
DYNPROFIELD = 'S_BTEXT' "屏幕字段
* CALLBACK_PROGRAM = 'PROCESS_DATA' "可以传递多列值
* MULTIPLE_CHOICE = 'X' "多项选择(在屏幕字段不能输入多个值时此选项会不能返回值)
* DISPLAY = ' ' "C 只能显示不能选择
TABLES
VALUE_TAB = LT_T156T "可选值的表
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0 .
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 .
ENDIF .
ENDFORM.