在SAP的开发过程中,经常会用到对话框,SAP的系统有很多不同款式的对话框函数供你选择,把对话框用好,在开发的过程中会带来很大的便利,同时也让你的程序运行效果更漂亮哦,下面我介绍一下如何使用弹出对话框单选框列表列表供用户选择,效果如下所示:
程序如下:
*&---------------------------------------------------------------------*
*& Report ZTEST_POPUP
*&
*&---------------------------------------------------------------------*
*& Create By : flying
*& Create Date : 2009-11-25
*& Descriptions : 弹出类似单选框列表供用户选择
*&---------------------------------------------------------------------*
REPORT ztest_popup.
TABLES: spopli.
*----------------------------------------------------------------------*
* define internal tables
* 定义内表
*
*----------------------------------------------------------------------*
DATA: t_spop LIKE spopli OCCURS 0 WITH HEADER LINE. "定义供用户选择列表
*----------------------------------------------------------------------*
* define data
* 定义变量
*
*----------------------------------------------------------------------*
data: answer type string. "用于存储用户选择
*----------------------------------------------------------------------*
* start-of-selection
* 执行屏幕
*
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_popup_to_select.
*----------------------------------------------------------------------*
* form frm_popup_to_select
* 弹出对话框
*
*----------------------------------------------------------------------*
FORM frm_popup_to_select.
REFRESH t_spop.
CLEAR t_spop.
t_spop-selflag = 'X'. "设置选中
t_spop-varoption = 'MBEW'. "设置显示的文本
t_spop-inactive = ''. "设置不可编辑
APPEND t_spop.
CLEAR t_spop.
t_spop-selflag = ''.
t_spop-varoption = 'EKPO'.
t_spop-inactive = ''.
APPEND t_spop.
CLEAR t_spop.
t_spop-selflag = ''.
t_spop-varoption = 'MSEG'.
t_spop-inactive = ''.
APPEND t_spop.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
cursorline = 1
mark_flag = ' '
mark_max = 1
start_col = 20 "设置开始的列
start_row = 7 "设置开始的行
textline1 = '请选择' "设置文本行内容1
* TEXTLINE2 = ' '
* TEXTLINE3 = ' '
titel = '测试用户选择' "设置标题
* DISPLAY_ONLY = ' '
IMPORTING
answer = answer "获得用户选择,这里返回的值对应是当前列表NO,比如第一个就返回1,第二个返回2。。。。。
tables
t_spopli = t_spop "设置选择列表
EXCEPTIONS
NOT_ENOUGH_ANSWERS = 1
TOO_MUCH_ANSWERS = 2
TOO_MUCH_MARKS = 3
OTHERS = 4
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "frm_popup_to_select

程序如下:
*&---------------------------------------------------------------------*
*& Report ZTEST_POPUP
*&
*&---------------------------------------------------------------------*
*& Create By : flying
*& Create Date : 2009-11-25
*& Descriptions : 弹出类似单选框列表供用户选择
*&---------------------------------------------------------------------*
REPORT ztest_popup.
TABLES: spopli.
*----------------------------------------------------------------------*
* define internal tables
* 定义内表
*
*----------------------------------------------------------------------*
DATA: t_spop LIKE spopli OCCURS 0 WITH HEADER LINE. "定义供用户选择列表
*----------------------------------------------------------------------*
* define data
* 定义变量
*
*----------------------------------------------------------------------*
data: answer type string. "用于存储用户选择
*----------------------------------------------------------------------*
* start-of-selection
* 执行屏幕
*
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_popup_to_select.
*----------------------------------------------------------------------*
* form frm_popup_to_select
* 弹出对话框
*
*----------------------------------------------------------------------*
FORM frm_popup_to_select.
REFRESH t_spop.
CLEAR t_spop.
t_spop-selflag = 'X'. "设置选中
t_spop-varoption = 'MBEW'. "设置显示的文本
t_spop-inactive = ''. "设置不可编辑
APPEND t_spop.
CLEAR t_spop.
t_spop-selflag = ''.
t_spop-varoption = 'EKPO'.
t_spop-inactive = ''.
APPEND t_spop.
CLEAR t_spop.
t_spop-selflag = ''.
t_spop-varoption = 'MSEG'.
t_spop-inactive = ''.
APPEND t_spop.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
cursorline = 1
mark_flag = ' '
mark_max = 1
start_col = 20 "设置开始的列
start_row = 7 "设置开始的行
textline1 = '请选择' "设置文本行内容1
* TEXTLINE2 = ' '
* TEXTLINE3 = ' '
titel = '测试用户选择' "设置标题
* DISPLAY_ONLY = ' '
IMPORTING
answer = answer "获得用户选择,这里返回的值对应是当前列表NO,比如第一个就返回1,第二个返回2。。。。。
tables
t_spopli = t_spop "设置选择列表
EXCEPTIONS
NOT_ENOUGH_ANSWERS = 1
TOO_MUCH_ANSWERS = 2
TOO_MUCH_MARKS = 3
OTHERS = 4
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "frm_popup_to_select